博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 中for...esle和while...else语法
阅读量:7176 次
发布时间:2019-06-29

本文共 2683 字,大约阅读时间需要 8 分钟。

    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语句,或者没有异常出现。
 

转载于:https://www.cnblogs.com/gengcx/p/6707017.html

你可能感兴趣的文章
MediaWiki隐藏index
查看>>
I2C总线信号时序总结
查看>>
WPF绘制矢量图形模糊的问题
查看>>
jquery checkbox相关 prop方法
查看>>
简析 .NET Core 构成体系
查看>>
Bootstrap IIFE
查看>>
静态链接与动态链接的区别(转载)
查看>>
qt实现头像上传功能
查看>>
第二十三章 springboot + 全局异常处理
查看>>
lexicographical-numbers
查看>>
[Ramda] Basic Curry with Ramda
查看>>
我为NET狂~群福利:逆天书库
查看>>
epoll使用详解(精髓)
查看>>
BZOJ4707 : B君的技巧
查看>>
转义字符
查看>>
Linux命令(21)查看文件的行数
查看>>
IQ一个人的智力和对科学知识的理解掌握程度。 EQ对环境和个人情绪的掌控和对团队关系的运作能力。 AQ挫折商 一个人面对困境时减除自己的压力、渡过难关的能力。...
查看>>
第三方统计分析埋点工具对比,神策、Ptmind、GrowingIO、国双,还有谷歌分析,谁更好?...
查看>>
构建自己的DSL之一 Simple Crawler
查看>>
ebean
查看>>