流程控制之 IF 和 while
一、条件
条件可以是:
1.显示布尔值(比较运算符,也可以是True和false)
2.y隐式布尔值(所有的值都可以当成条件,其中0、None、空【空字符串、空列表、空字典】代表的布尔值为Flase)
逻辑运算符:not 、and、or、
not:把紧跟后面的条件结果取反
and:连接左右两个条件,所有条件都为True,j结果才为True
or:连接左右两个条件,只要有一个条件为True,结果就为True;若两个条件都为Flase,结果才为Flase。
优先级:not > and > or
成员运算符:in、
print('name' in {'name':'bob','age':'123','male':'man'}) #在字典中 要用Key来判断,不能用value print('name' in ['name','bob','age','123','male','man'])#在列表中
身份运算符 : is (判断ID是否相等)
二、流程控制之if判断
语法一:
if 条件: 代码1 代码2 代码3
语法二:
if 条件: 代码1 代码2 代码3 else:#条件不成立,才运行 代码1 代码2 代码3
语法三:
if 条件2: 代码1 代码2 代码3 elif 条件2:#添加额外的条件(可添加多个,但只要条件成立一个,后面就不再运行) 代码1 代码2 代码3
语法四:
if 条件1: 代码1 代码2 代码3 elif 条件2:#添加额外的条件(可添加多个,但只要条件成立一个,后面就不再运行) 代码1 代码2 代码3 else:#上述条件都不成立,才运行 代码1 代码2 代码3
三、短路运算
偷懒原则,偷懒到哪里,就把当前值返回
num_1 = 10 > 3 and 98 < 23 or 78 == 78 and 90 > 23 print(num_1)
四、深浅copy
浅copy:针对不可变和可变类型没有进行区分(只COPY了第一层)
list1=['name','age',42] list2=list.copy(list1)#把原列表第一层的内存地址不区分的一模一样拷贝一份 print(list1) =======》['name', 'age', 42] print(list2) =======》['name', 'age', 42]
深copy: (每一层都进行了copy)
针对可变类型进行区分对待,值还是用原来的值。(copy一个列表,并且改操作完全与原列表独立开)
五、流程控制之While循环
语法:
while 条件: 代码1 代码2 代码3
count = 0 while count < 6:#t条件循环 ,条件成立一直循环 print(count) count += 1 print('棒棒棒')
死循环
纯计算无IO的死讯会导致致命的效率问题
while 1: #如有必要可这样写 while ture:
应用:
name = 'JAKE' sercrt = 'asd' while True:#只要条件为真就一直循环 inp_name = input('请输入你的账号:') inp_password = input('请输入你的密码:') if inp_name == name and inp_password == sercrt: print('登入成功') else: print('请重新登入')
退出循环:
方式一:
name = 'JAKE' sercrt = 'asd' exit_1 = True while exit_1: # 只要条件为真就一直循环 inp_name = input('请输入你的账号:') inp_password = input('请输入你的密码:') if inp_name == name and inp_password == sercrt: print('登入成功') exit_1 = False else: print('请重新登入')
方式二:break,只要运行到break就会结束本层循环
name = 'JAKE' sercrt = 'asd' while True: inp_name = input('请输入你的账号:') inp_password = input('请输入你的密码:') if inp_name == name and inp_password == sercrt: print('登入成功') break # 结束本层循环 else: print('请重新登入')
#每一层循环的结束都需要Break来结束本层的循环 while True: while True: while True: break break break
while循环嵌套:
name = 'JAKE' sercrt = 'asd' tag = True while tag: inp_name = input('请输入你的账号:') inp_password = input('请输入你的密码:') if inp_name == name and inp_password == sercrt: print('登入成功') while tag: amd = input('请输入你要进行的操作:') if amd == 'q': tag = False else: print('命令{x}正在运行,'.format(x=amd)) else: print('请重新登入')
while + continue:#结束本次循环,直接进入下一次。(在continue之后添加同级代码毫无意义,无法运行到)
count = 0 while count <= 5: if count == 3: count += 1 continue print(count) count += 1
while + else:(else包含的代码会在while循环结束后,并且没有被break打断才会执行)
name = 'JAKE' sercrt = 'asd' count = 0 while count < 3: inp_name = input('请输入你的账号:') inp_password = input('请输入你的密码:') if inp_name == name and inp_password == sercrt: print('登入成功') while True: amd = input('请输入你要进行的操作:') if amd == 'q': break else: print('命令{x}正在运行,'.format(x=amd)) break else: print('请重新登入') count += 1 else: print('输错账号密码三次。')