zoukankan      html  css  js  c++  java
  • 判断语句和循环语句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没有这个功能
  • 相关阅读:
    Pandas的merge并对比SQL中join
    常用cron表达式
    基于Python3实现的各类数据库连接和连接池
    JS 原生 push对象到数组中遇到的问题
    H5移动端IOS音频自动播放解决
    微信小程序,购物车模块代码解读
    小程序,wx.request请求数据服务器配置
    &&和||短路逻辑运算
    小程序,wx.request;动态向服务器端请求数据。
    微信小程序页面跳转
  • 原文地址:https://www.cnblogs.com/dong4716138/p/15661856.html
Copyright © 2011-2022 走看看