一、什么是循环?
二、为什么要有循环?
三、while 循环的基本使用
print('-----------start----------')
while 条件:
代码1
代码2
代码3
print('-----------end----------')
count = 0
while count < 5: # count值0~4之间条件成立,共循环5次
print(count, end=' ') # 0 1 2 3 4
count += 1
四、while 死循环与效率问题
while True:
inp = input('纯输入input>>:')
print(inp)
2、死循环之影响不大的效率问题:纯输出print
while True:
print('纯输出print')
3、死循环之产生致命的效率问题:纯计算
while True:
1 + 1
# continue比上面纯计算破坏性还要大
while True:
continue
总结
- 拓展:条件判断的效率 True > 数字,因为数字是
- 总结:死循环本身是无害的,纯计算的死循环才是。
五、while 循环的应用
- 这里while循环,解决了重复代码问题,解决了输入正确不应该重复。
# 需求:用户账号密码验证,让用户输入错误可以重新输入
username = 'egon'
password = '123'
while True:
inp_username = input('please input your username>>:')
inp_password = input('please input your password>>:')
if inp_username == username and inp_password == password:
print('登录成功')
else:
print("登录失败")
六、while 退出循环的两种方式
1、方式一:将条件改为False,只有在本次循环结束,等到下一次循环判断条件时,才会生效。(注意:下一次循环判断条件)
username = 'egon'
password = '123'
tag = True
while tag:
inp_username = input('please input your username>>:')
inp_password = input('please input your password>>:')
if inp_username == username and inp_password == password:
print('登录成功')
tag = False # 注意:之后的代码还会运行,下次循环判断时才生效
else:
print("登录失败")
print('------嘿嘿!我运行了!-----')
2、方式二:break,只要运行到break就会立刻终止本层循环(注意:终止本层循环)
username = 'egon'
password = '123'
while True:
inp_username = input('please input your username>>:')
inp_password = input('please input your password>>:')
if inp_username == username and inp_password == password:
print('登录成功')
break # 注意:运行到break就会立刻终止本层循环
else:
print("登录失败")
print('------嘿嘿!我运行了!-----')
七、while循环嵌套
1、伪代码示例:每一层都配备一个break
while 1:
While 2:
While 3:
break # 我结束while循环条件为3的循环哦
break # 我结束while循环条件为2的循环哦
break # 我结束while循环条件为1的循环哦
2、伪代码示例:在最内层,一下结束所有的循环。
tag = True
while tag:
while Tag:
while Tag:
tag = False
3、实例:纯break使用
username = 'egon'
password = '123'
while True:
inp_username = input('please input your username>>:')
inp_password = input('please input your password>>:')
if inp_username == username and inp_password == password:
print('登录成功')
while True:
inp_cmd = input('please input your cmd>>:')
if inp_cmd == 'q':
print('再见,亲爱的!')
break # 这里是退出里面while循环
print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
break # 这里是退出最外层while循环
else:
print("登录失败")
4、实例:改变条件为False
username = 'egon'
password = '123'
tag = True
while tag:
inp_username = input('please input your username>>:')
inp_password = input('please input your password>>:')
if inp_username == username and inp_password == password:
print('登录成功')
while tag:
inp_cmd = input('please input your cmd>>:')
if inp_cmd == 'q':
print('再见,亲爱的!')
tag = False # 这里修改了所有while的条件,里面的while循环下一次判断条件时里层while循环结束,程序继续执行,又在下一次外层循环下一次判断条件时外层循环结束。
else:
print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
else:
print("登录失败")
八、while+continue
- continue:结束本次循环,直接进入到下一次循环(注意:continue之后添加同级别代码毫无意义,因为永远无法运行)
# 需求:打印1~8之前的数,其中4、7不打印
count = 1
while count < 9: # count条件成立范围:1~8
if count == 4 or count == 7:
count += 1
continue
# count += 1 # 注意:continue之后添加同级别代码毫无意义,因为永远无法运行
print(count, end=" ")
count += 1
九、while+else: 争对break
- else:else包含的子代码块,只有在while循环正常结束后才会执行,如果while循环被break打断包含的子代码块不会执行
1、应用案例版本1:用户登录,输错三次退出程序, 打印错误提示(没有用到else)
username = 'egon'
password = '123'
count = 0
tag = True
while tag:
if count == 3: # 每次循环开始,都判断用户的错误次数是否达到了3次,也就是用户第4次输入了
print('输错3次退出循环了啊!')
break
inp_username = input('please input your username>>:')
inp_password = input('please input your password>>:')
if inp_username == username and inp_password == password:
print('登录成功')
while tag:
inp_cmd = input('please input your cmd>>:')
if inp_cmd == 'q':
print('再见,亲爱的!')
tag = False
else:
print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
else:
print("登录失败")
count += 1 # 用户输错一次,对用户错误次数进行累加
2、应用案例版本2:用户登录,输错三次退出程序,打印错误提示。优化:while比较条件 + else的利用 + 登录成功break程序else不需要执行
username = 'egon'
password = '123'
count = 0
while count < 3:
inp_username = input('please input your username>>:')
inp_password = input('please input your password>>:')
if inp_username == username and inp_password == password:
print('登录成功')
while True:
inp_cmd = input('please input your cmd>>:')
if inp_cmd == 'q':
print('再见,亲爱的!')
break
print("命令{cmd}正在运行。。。".format(cmd=inp_cmd))
break # 这条break代码与else子代码块的运行息息相关,这条代码只有用户登录成功,且输入命令结束以后才执行,也就是说用户登录成功,else中子代码块并不需要执行。
else:
print("登录失败")
count += 1 # 用户输错一次,对用户错误次数进行累加
else:
print('输错3次退出循环了啊!')