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次,账号已被锁定
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值