判断语句和循环语句-2.14循环中使用else

循环中的else

一、引入

看如下代码,想一想:怎样实现“密码不正的相应提示”

i = 3
while i > 0:
    password = input("请输入密码:(还剩%d次机会)" % i)
    if password == "123456":
        print("密码输入正确")
        break
    i -= 1

  

想要实现在“密码不正确”时提示相应的信息,普通的做法是

login_flag = False  # 定义一个变量,用来存储是否登录成功,True表示成功 False表示不成功
i = 3
while i > 0:
    password = input("请输入密码:(还剩%d次机会)" % i)
    if password == "123456":
        login_flag = True  # 如果登录成功,那么这里就改为True
        break
    i -= 1

# 当上述的while循环结束后,判断login_flag的值,来输出对应的信息
if login_flag == True:  # 简单的写法是if login_flag:
    print("密码输入正确")
else:
    print("密码输入不正确,今日3次机会已用完,请明天再试...")

上述的代码整体逻辑是:

  1. 循环中获取密码判断是否正确,通过一个变量来标记正确与否
  2. 当循环结束后,在单独判断标记,然后输出对应的信息

问题:有么有简单的方式呢?

答:else

二、while...else...

1. 格式

while 条件:
    # 条件满足时执行的代码...
else:
    # 如果上述的while循环没有调用break,就执行的代码...

  

说明:

  • 只要while循环体中没有执行break,那么当while循环体中所有的代码执行完后,else中的代码也会执行
  • 如果while循环中有break那么表示整个while介绍,else中的代码也不会被执行

2. 示例

有break时

i = 1
while i <= 3:
    print("哈哈,我是超神,double kill......")
    if i == 1:
        print("调用了break")
        break
    i += 1
else:
    print("我是else中的代码")

  

运行结果

哈哈,我是超神,double kill......
调用了break

  

没有break时

i = 1
while i <= 3:
    print("哈哈,我是超神,double kill......")
    i += 1
else:
    print("我是else中的代码")

  

运行结果

哈哈,我是超神,double kill......
哈哈,我是超神,double kill......
哈哈,我是超神,double kill......
我是else中的代码

  

3. 案例

i = 3
while i > 0:
    password = input("请输入密码:(还剩%d次机会)" % i)
    if password == "123456":
        print("密码输入正确")
        break
    i -= 1
else:
    print("密码输入3次全部错误,请明日再试")

  

三、for...else...

1. 格式

for 变量 in 可迭代对对象:
    # 正常执行的代码
else:
    # for未使用break时执行的代码

  

2. 示例

未使用break

for i in range(5):
    print("i=%d" % i)
else:
    print("我是else中的代码...")

  

运行结果:

i=0
i=1
i=2
i=3
i=4
我是else中的代码....

  

使用break

for i in range(5):
    print("i=%d" % i)
    if i == 1:
        print("我是break哦...")
        break
else:
    print("我是else中的代码...")

  

运行结果:

i=0
i=1
我是break哦..

  

.

3. 案例

for i in range(3, 0, -1):
    password = input("请输入密码:(还剩%d次机会)" % i)
    if password == "123456":
        print("密码输入正确")
        break
else:
    print("密码输入3次全部错误,请明日再试")

  

四、验证continue

我们知道continue的作用是结束本次循环,那么既然breakfor...else...while...else...中都起作用,那么continue呢?

接下来我们就验证一下

验证1

i = 0
while i < 3:
    i += 1
    print("来了老弟...")
    continue
    print("一起学Python啊,别忘了来 codetutor.top网站哈")
else:
    print("我是else中的代码...")

  

运行结果

来了老弟...
来了老弟...
来了老弟...
我是else中的代码...

  

验证2
for i in range(3):
    print("来了老弟...")
    continue
    print("一起学Python啊,别忘了来 codetutor.top网站哈")
else:
    print("我是else中的代码...")

  

运行结果

来了老弟...
来了老弟...
来了老弟...
我是else中的代码...

  

结论:

  • while...else...for...else...中,break会让else中的代码不执行,而continue没有这个功能
posted @ 2021-12-08 15:40  dong4716138  阅读(120)  评论(2编辑  收藏  举报