python基础篇学习(十三)之while循环
一、while循环
①格式
'''
while 条件:
子代码1
子代码2
子代码3
...
'''
②实际应用
显式布尔值作为循环条件:
num = 0
while num < 10: # 1,......,10
print(num) # 0,1,.....,9
num += 1 # 1,2,.....,10
print('循环结束了!')
----------------------------------------------------------------
# 运行结果:
0
1
2
3
4
5
6
7
8
9
循环结束了!
while True:
info = input('请输入内容:')
print(info)
----------------------------------------------------------------
# 运行结果:
请输入内容:11
11
请输入内容:22
22
请输入内容:33
33
......
# 该循环是死循环
隐式布尔值作为循环条件:
while 1:
10 + 10
# 该循环是死循环
总结:
1.显式布尔值和隐式布尔值的解释前往: python基础篇学习(十一)之条件判断-CSDN博客
2.对于死循环来说本身是无害的,而纯计算无io的死循环就会有致命的效率问题
二、退出while循环
场景案例:实现一个QQ登录的功能
username = '18660998765'
password = '123456'
input_username = input('请输入用户名:')
input_password = input('请输入密码:')
if input_username == username and input_password == password:
print('登录成功')
else:
print('用户名或密码错误')
----------------------------------------------------------------
# 运行结果:
请输入用户名:18660998765
请输入密码:1111
用户名或密码错误
退出while循环的方式一:while循环条件置为false
username = '18660998765'
password = '123456'
condition = True
while condition:
input_username = input('请输入用户名:')
input_password = input('请输入密码:')
if input_username == username and input_password == password:
print('登录成功')
condition = False
else:
print('用户名或密码错误')
----------------------------------------------------------------
# 运行结果:
请输入用户名:18660998765
请输入密码:111
用户名或密码错误
请输入用户名:18660998765
请输入密码:123456
登录成功
退出while循环的方式二:使用break立即结束本层循环
username = '18660998765'
password = '123456'
while True:
input_username = input('请输入用户名:')
input_password = input('请输入密码:')
if input_username == username and input_password == password:
print('登录成功')
break # 立即结束本层循环
else:
print('用户名或密码错误')
print('aaa')
----------------------------------------------------------------
# 运行结果:
请输入用户名:18660998765
请输入密码:333
用户名或密码错误
aaa
请输入用户名:18660998765
请输入密码:123456
登录成功
三、while循环嵌套
方式一:while循环条件置为false
username = '18660998765'
password = '123456'
condition = True
while condition:
input_username = input('请输入用户名:')
input_password = input('请输入密码:')
if input_username == username and input_password == password:
print('登录成功')
while condition:
action = input('请输入你的操作:')
if action == 'Q':
condition = False
print(f'正在{action}')
else:
print('用户名或密码错误')
----------------------------------------------------------------
# 运行结果:
请输入用户名:18660998765
请输入密码:666
用户名或密码错误
请输入用户名:18660998765
请输入密码:123456
登录成功
请输入你的操作:吃饭
正在吃饭
请输入你的操作:喝水
正在喝水
请输入你的操作:Q
正在Q
方式二:使用break立即结束本层循环
username = '18660998765'
password = '123456'
while True:
input_username = input('请输入用户名:')
input_password = input('请输入密码:')
if input_username == username and input_password == password:
print('登录成功')
while True:
action = input('请输入你的操作:')
if action == 'Q':
break # 立即结束本层循环
print(f'正在{action}')
break # 立即结束本层循环
else:
print('用户名或密码错误')
----------------------------------------------------------------
# 运行结果:
请输入用户名:18660998765
请输入密码:222
用户名或密码错误
请输入用户名:18660998765
请输入密码:123456
登录成功
请输入你的操作:吃饭
正在吃饭
请输入你的操作:喝水
正在喝水
请输入你的操作:Q
四、while+continue
continue和break的区别是:break是直接中止本层循环,continue是中止本次循环直接进入下一次循环
案例:打印0到9,但是不要4
num = 0
while num < 10:
if num == 4:
num += 1
continue
print(num)
num += 1
----------------------------------------------------------------
# 运行结果:
0
1
2
3
5
6
7
8
9
五、while+else
①格式
'''
while True:
...
else:
...
'''
②实际应用
num = 0
while num < 10:
if num == 4:
num += 1
continue
print(num)
num += 1
else:
print('循环正常结束')
----------------------------------------------------------------
# 运行结果:
0
1
2
3
5
6
7
8
9
循环正常结束
num = 0
while num < 10:
if num == 4:
num += 1
break
print(num)
num += 1
else:
print('循环正常结束')
----------------------------------------------------------------
# 运行结果:
0
1
2
3
总结:当while循环正常结束的时候,才会去执行else里的子代码
案例:实现一个QQ登录的功能,当用户输错账号3次的时候,不再让用户输入
username = '18660998765'
password = '123456'
num = 0
while True:
input_username = input('请输入用户名:')
input_password = input('请输入密码:')
if input_username == username and input_password == password:
print('登录成功')
while True:
action = input('请输入你的操作:')
if action == 'Q':
break
print(f'正在{action}')
break # 立即结束本层循环
else:
print('用户名或密码错误')
num += 1
if num == 3:
print('账号密码已经连续输错了3次,账号已被锁定')
break
----------------------------------------------------------------
# 运行结果:
请输入用户名:18660998765
请输入密码:1
用户名或密码错误
请输入用户名:18660998765
请输入密码:1
用户名或密码错误
请输入用户名:18660998765
请输入密码:2
用户名或密码错误
账号密码已经连续输错了3次,账号已被锁定
上述代码看起来不够简洁美观,可以用while+else,见下述代码
username = '18660998765'
password = '123456'
num = 0
while num < 3:
input_username = input('请输入用户名:')
input_password = input('请输入密码:')
if input_username == username and input_password == password:
print('登录成功')
while True:
action = input('请输入你的操作:')
if action == 'Q':
break
print(f'正在{action}')
break # 立即结束本层循环
else:
print('用户名或密码错误')
num += 1
else:
print('账号密码已经连续输错了3次,账号已被锁定')
----------------------------------------------------------------
# 运行结果:
请输入用户名:18660998765
请输入密码:1
用户名或密码错误
请输入用户名:18660998765
请输入密码:1
用户名或密码错误
请输入用户名:18660998765
请输入密码:2
用户名或密码错误
账号密码已经连续输错了3次,账号已被锁定