基本运算符和流程控制
基本运算符
1.成员运算符
关键字: in (在) not in(不在)
查看某个个体在不在某个群体里
例:
1 names_list = ['kevin', 'jack', 'tank', 'tony'] 2 print('kevin' in names_list) # True 3 print('aa' in names_list) # False 4 print('bb' not in names_list) # True 5 6 print('hello' in 'helleworld') # True 7 print('ke' in 'kevin') # True 8 9 print('kevin' in {'username': 'kevin', 'age': 18}) # False 10 print('username' in {'username': 'kevin', 'age': 18}) # True
2.身份运算符
关键字: ==(是否相等)、 is(内存地址是否相等)
比较两个字值是否相等
内容相同的变量内存地址不一定相同,占用空间内存小到一定程度时相同
1 s1 = ['kevin', 'tank', 'jack'] 2 s2 = ['kevin', 'tank', 'jack'] 3 4 print(s1 == s2) # True 5 # is比较的是id 6 print(id(s1)) # 2326433287488 7 print(id(s2)) # 2326433286528 8 9 print(s1 is s2) # False
流程控制
控制事物的执行流程,类似流程图用代码进行流程
1.顺序结构
从上到下流顺结构,类似流程图一条直线,代码执行从上到下
2.分支结构
根据不同的条件执行不同的分支,类似流程图是否,是要怎样怎样,否要怎样怎样
在python中的分支结构,条件都要转为布尔类型判断,根据判断的结果进行子代码块,遇到冒号子代码块需要缩进,//一般是四格,如果子代码只有一行,可以直接写在冒号后面,同属一个代码块缩进要相同,就是他们的头要在同一条直线上
1.单分支结构
就是只有一个判断条件,其中的判断结果只有一种继续执行结果,另外一种不执行
语法格式:
if 条件:
条件成立后要执行的代码块
例:
1 name = '蔡敏' 2 if input() == name: 3 print('原来你就是蔡敏') 4 # 不是蔡敏就不认识无事发生hhhh
2.双分支结构
在单分支结构上将另外的一种判断,执行另外情况
语法格式:
if 条件:
条件成立后要执行的代码块
else:
条件不成立执行的代码块
例:
1 name = '蔡敏' 2 if input() == name: 3 print('原来你就是蔡敏') # 听说过对应一下 4 else: 5 print('你好,认识一下') # 不认识没听过认识一下
3.多分支结构
对应多种判断,执行不同的情况,代码是至上而下的,会先从第一个条件中判断,不满足才会进行下一种
语法格式:
if 条件1:
条件1成立之后执行的代码块
elif 条件2:
条件1不成立,条件2成立执行的代码块
elif 条件3:
条件1、条件2不成立,条件3成立之后执行的代码块
...
else:
以上所有条件都不成立的话,执行的代码块
# 以上不管你写了多少种情况,也只会执行一种情况
例:
# 90分为优秀 80分良好 70分的中等 60分及格 60分以下的重修 score = 80 if score >= 90: # 错误的 elif score >= 80 and score < 90: print('优秀') elif score >= 80: # elif 80<=score<90: # print('良好') elif score >= 70: print('中等') elif score >= 60: print('及格') else: print('重修')
score = 80 if score >= 90: print('优秀') if score >= 95 print('哇!太厉害了吧') elif score >= 80: print('良好') elif score >= 70: print('中等') elif score >= 60: print('及格') else: print('重修')
3.循环结构
在满足某个条件之内,重复执行某一个模块
语法结构:
while 条件:
条件成立之后执行的循环体
例:
while True: # 1. 先让用户输入用户名和密码 username = input('username>>>:') password = input('password>>>:') # password: str---->123 password = int(password) # 只能转数字类型的 # 2. 比较用户名和密码 # 在python中,==比较值大小和类型 # if username == 'kevin' and password == '123': if username == 'kevin' and password == 123: print('登录成功') else: print('登录失败')
while+break
break就是跳出当前循环
例:
count = 0 while count < 3: # 1. 先让用户输入用户名和密码 username = input('username>>>:') password = input('password>>>:') # password: str---->123 password = int(password) # 只能转数字类型的 # 2. 比较用户名和密码 # 在python中,==比较值大小和类型 # if username == 'kevin' and password == '123': if username == 'kevin' and password == 123: print('登录成功') break # 调出while循环,它是跳出本层循环 else: print('登录失败')
标志位的使用
例:
# 标志位的使用 flag = True while flag: # 1. 先让用户输入用户名和密码 username = input('username>>>:') password = input('password>>>:') # password: str---->123 password = int(password) # 只能转数字类型的 # 2. 比较用户名和密码 # 在python中,==比较值大小和类型 # if username == 'kevin' and password == '123': if username == 'kevin' and password == 123: print('登录成功') while flag: cmd = input('请输入你的指令:') print('正在执行你的指令: %s' % cmd) '''如果输入的是q,就退出整个程序''' if cmd == 'q': flag = False else: print('登录失败')
今日作业
猜年龄的游戏
如果年龄猜正确了,直接结束,打印一下猜正确了
如果猜错了,给它三次机会,如果,三次机会全部猜错,程序不要结束,询问用户是否继续猜(yes/no)? 如果用户输入的是yes,在给三次机会,否则直接退出
结果:差点忘记了break
1 age = 18 2 t = 'yes' 3 while t == 'yes': 4 age1 = int(input('猜一下年龄:')) 5 x = 0 6 while x < 2: 7 if age1 != 18: 8 age1 = int(input('猜错了呢,重新猜一下吧:')) 9 x += 1 10 else: 11 break 12 if age1 != 18: 13 t = input('又猜错了呢!还要继续猜吗?输入yes or no:') 14 else: 15 print('恭喜你!猜对了呢!') 16 break 17 print('游戏结束了!')
答案(都可以):
1 real_age = 20 2 count = 0 3 while True: 4 # 我们在这里判断count 的值是否为3 5 if count == 3: 6 # 询问它是否还基础猜 7 choice = input('你已经输错三次了,是否还继续玩(yes/no)?') 8 # 判断 9 if choice == 'yes': 10 count = 0 11 else: 12 print('玩的开心') 13 break 14 # 2. 让用户输入猜的年龄 15 guess_age = input('请输入你猜的年龄:') # str,不能直接进行做比较,要把字符串的类型转为整型 int 16 guess_age = int(guess_age) 17 # 3. 开始比较 18 if guess_age > real_age: 19 print('猜大了') 20 count += 1 21 elif guess_age < real_age: 22 print('猜小了') 23 count += 1 24 else: 25 print('猜对了,宝宝') 26 break
ps题外话:老师讲太好代码就直接复制好了,摆烂了