python修行之路(二-python的基本语法,流量控制)
对于小白,看代码真的太费劲了,进度很慢,心里挺复杂的,默默地走着,希望把坚持变成一种习惯,用努力学好代码。
一、字符编码/变量
1、字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ASCII)。
ASCII码的介绍就跳过,但ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode。
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
在python3中,可以识别中文,直接print("你好 世界")
而在python2的环境中,不能直接识别中文,需要告诉python解释器,用什么编码来执行源代码,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print(
"你好,世界")
2、变量
学习的时候真的理解不了变量的定义,只知道变量的作用就是为了储存,这个很方便记忆了。
python3 的环境中,不用定义变量,可以直接定义变量
name
=
"A"
但在python2的环境中,要先声明变量:
# -*- coding: utf-8 -*-
name = "A"
变量的定义规则:
- 变量名只能是 字母、数字或下划线的任意组合
- 变量名的第一个字符不能是数字
- 以下关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
name
=
"A"
name2
=
name
print
(name,name2)
。。。。。。
但
name = "A"name2 = namename = "B"print("my name is",name ,name2)执行程序时会发现
my name is paoche ge alex li
Process finished with exit code 0
注释:变量name2是通过name指向的是A,也就是说name2de 变量定义的为A,和name是无关的,这点很重要。
二、注释
当前注释::# 被注释内容
多行注释:""" 被注释内容 """
三、输入
#!/usr/bin/env python
#_*_coding:utf-8_*_
name = input("name:")age = input("age:")job = input("job:")salary = input("salary:")print(name,age,job,salary)
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
uername = input("uername:")
password = getpass.getpass("password:")
print(uername,password)
格式化输出与拼接
格式化输出中字符串拼接有四种形式(+、%是、{}、【】,但是平常运用中不建议使用字符串拼接,特别是+类型拼接,不到万不得已时不要用。)
+类型拼接
#!/usr/bin/env python# -*- coding: utf-8 -*-name = input("name:")age = input("age:")job = input("job:")salary = input("salary:")info = '''-------info of + name +'''------name:'''+age +'''age:''' +job+'''job:''' + salary+'''salary:''''''%(name,name,age,job,salary)print(info)
%s类型字符拼接
#!/usr/bin/env python# -*- coding: utf-8 -*-name = input("name:")age = input("age:")job = input("job:")salary = input("salary:")info = '''-------info of %s-------name:%sage:%s(这里的%S也可以变成%d【检测字符串类型】,注:%d是数字)job:%ssalary:%s'''%(name,name,age,job,salary)print(info)
注释:age : %d时,age =inptu("age")是字符串,,而不是数字,需要转换,
age = int(input(age)) print(type(age))
{}类型拼接
#!/usr/bin/env python# -*- coding: utf-8 -*-name = input("name:")age = input("age:")job = input("job:")salary = input("salary:")info = '''-------info of {name}-------name:{name}age:{age}job:{job}salary:{salary}'''.formate(name=name,name,age=age,job=job,salary=salary)print(info)
[]类型
#!/usr/bin/env python# -*- coding: utf-8 -*-name = input("name:")age = input("age:")job = input("job:")salary = input("salary:")info = '''-------info of {0}-------name:【0】age:【1】job:【2】salary:【3】'''.formate(,name,age,job,salary)print(info)
三、if else 表达式
场景一、用户登陆验证
# 提示输入用户名和密码
# 验证用户名和密码
# 如果错误,则输出用户名或密码错误
# 如果成功,则输出 欢迎,XXX!
例:
#!/usr/bin/env python
# -*- coding: encoding -*-
#import getpass 也可不写,当练习
uername = A
password = B
name = input("uesername:")
#password =getpass.getpass("password:")
if uername ==uername and password ==password :
#(=是赋值的意思,==才是等于的意思,提醒像我这样的小白一定要记得,很重要)
print("welcom uer {name} login..." .formate(name=uername))
else:
print("invalid uername or passwaord!")
场景二、猜年龄
#!/usr/bin/env python
# -*- coding: encoding -*-
A=XXX
guess_age =int( iput("guess age")) (python3中,input输入默认的结果类型是字符串,需要转换,int()就OK啦,知识点,你懂的)
if guess_age ==age_of_A
print("yes ,you got it .")
elif guess_age>age_of_A:
print("think smaller...")
else:
print("think bigger!")
场景三:根据用户输入内容输出其权限
#a-->超级管理员
#b-->普通管理员
#c,d-->业务主管
#其他--》普通用户
name = iput("uername:")
if name = "a":
print("超级管理员")
elif name = "b":
print("普通管理员")
elif name = "b" or name=" c":
print("业务主管")
else:
print("普通用户")
四、whlie 循环
拓展场景二 猜三次,猜对进入,猜不对,锁定
#!/usr/bin/env python# -*- coding: utf-8 -*-age_of_A = 20count = 0while count<3: guess_age = int(input("guess age:")) if guess_age ==age_of_A: print("yes,you got it.") break elif guess_age>age_of_A: print("think smaller...") else: print ("think bigger!") count +=1else: print("you have tried too many times.")while还有一种无线循环,一经运行,停不下来。count = 0while true: print("count+1",count) count +=1 (相当count=count+1)如果要上面代码循环100次就退出,则:count = 0while true: print("count+1",count) count +=1 if count ==100 print("count+1",count) break
五、for循环
#!/usr/bin/env python# -*- coding: utf-8 -*-age_of_A = 20for i in range(3): guess_age = int(input("guess age:")) if guess_age ==age_of_A: print("yes,you got it.") break elif guess_age>age_of_A: print("think smaller...") else: print ("think bigger!")else: print("you have tried too many times.")
拓展 for 循环
打1-9这10个数字
for i in range(0,10):
print("loop",i)
跳跃打1-9这10个数字
for i in range(0,10,x):
print("loop", i)
注释:x是步长,跳跃几个数字的意思,当x=2是,打印2、4、6、8;当x=3时,打印3、6、9