• Python 中for...esle和while...else语法


        Python的for...else和while...else语法,这是Python中最不常用,最为误解的语法特性之一。

        Python中的for、while循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。换句话说,如果我们不是除正常以外的其他方式退出循环,那么else分支将被执行。也就是在循环体内没有break语句、没有return语句,或者没有异常出现。

        1.break情况

        下面我们来尝试在循环中执行break退出

        lucky_number.py

    lucky_num = 19
    #首先定义一个幸运数字,这样条理比较清晰
    #action = True
    guess_count = 0
    while guess_count < 3:
    #限制用户输入
    input_num = int(input("Input the guess num: "))
    #if lucky_num == input_num:
    #print("Bingo!")
    #action = False
    #break强制终端循环语句,避免陷入死循环之中
    if input_num > lucky_num:
    print("The real number is smalller!")
    elif input_num < lucky_num:
    print("The real number is bigger...")
    else:
    print("Bjngo!...")
    break
    guess_count += 1
    else:
    print("Too many retrys!")
    首先我们执行三次没有测对的情况如下:
    Input the guess num: 1
    The real number is bigger...
    Input the guess num: 2
    The real number is bigger...
    Input the guess num: 100
    The real number is smalller!
    Too many retrys!
    从结果上可以看出,最后执行了else分支语句(Too many retrys!),提示用户输入过多的次数,正常情况下是执行else语句的。下面我们来看
    一下非正常退出情况下:
    用户猜测正确:
    Input the guess num: 1
    The real number is bigger...
    Input the guess num: 19
    Bjngo!...
    从上面结果我们可以看出,当用户猜对数字后,break了一下,推出了while...else语句,else语句没有正常执行。
    2.return情况

    #首先定义一个幸运数字,这样条理比较清晰
    #action = True

    #限制用户输入,如果三次没有猜对则退出循环
    def count():
    lucky_num = 19
    guess_count = 0
    while guess_count < 3:
    input_num = int(input("Input the guess num: "))
    #if lucky_num == input_num:
    #print("Bingo!")
    #action = False
    #break强制终端循环语句,避免陷入死循环之中
    if input_num > lucky_num:
    print("The real number is smalller!")
    elif input_num < lucky_num:
    print("The real number is bigger...")
    else:
    print("Bjngo!...")
    return guess_count

    guess_count += 1
    else:
    print("Too many retrys!")

    numbers = count()
    print(numbers)

        由于rerturn语句只能在函数和类中使用,因此我定义了一个函数,看我们输入正确的时候是否能够终端else语句。
    (1).调用这个函数,输入三次不正确
    Input the guess num: 1
      The real number is bigger...
      Input the guess num: 1
      The real number is bigger...
      Input the guess num: 1
      The real number is bigger...
      Too many retrys!
      None
    从结果中可以看出来,当我们输入三次的时候,else语句正常运行,因为我们输入的都不正常,不影响else语句
    (2).用户猜测正确的情况:
    Input the guess num: 1
      The real number is bigger...
      Input the guess num: 19
      Bjngo!...
      1
    从结果可以看出,用户第一次猜测错误,第二猜对了,然后把guess_count返回给了变量numbers,没有运行else语句。
    结论:如果我们想在用户输入正确的时候退出循环,输入次数太多的时候提示用户,那么可以使用while...else...break语句,在用户
    输入次数
    超过限制没有答对的时候提醒用户;答对了的时候退出循环,不打印提醒,那么可以在用户输入正确的时候使用break进行中断。
    牢记:Python中的for、while循环都有一个可选的else分支(类似if语句和try语句那样),在循环迭代正常完成之后执行。换句话说,如果我们
    不是除正常以外的其他方式退出循环,那么else分支将被执行
    也就是在循环体内没有break语句、没有return语句,或者没有异常出现。









  • 相关阅读:
    UML用例图总结
    项目管理心得:一个项目经理的个人体会、经验总结
    UML类图符号简介
    C++中栈和堆上建立对象的区别
    Win32 API
    Python
    remove extra kernel
    Create short cut
    Set Form Position
    Get folder
  • 原文地址:https://www.cnblogs.com/gengcx/p/6707017.html
Copyright © 2020-2023  润新知