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语句,或者没有异常出现。
Python 中for...esle和while...else语法的更多相关文章
- Python中的不同进制的语法和转换
不同进制的书写方式 八进制(Octal) 0o377 十六进制(Hex) 0xFF 二进制(Binary) 0b11111111 不同进制之间的转换 python提供了三个内置的函数,能够用来在不同进 ...
- Python中语法糖及带参语法糖
在python中,@符号常被称作语法糖(装饰器),在某函数定义时,用以包装该函数,以达到截取,控制该函数的目的. def d(f): print('d...') k=f #此处保留了传进来的原函数 f ...
- python学习第九讲,python中的数据类型,字符串的使用与介绍
目录 python学习第九讲,python中的数据类型,字符串的使用与介绍 一丶字符串 1.字符串的定义 2.字符串的常见操作 3.字符串操作 len count index操作 4.判断空白字符,判 ...
- Python中的高级变量类型
高级变量类型 目标 列表 元组 字典 字符串 公共方法 变量高级 知识点回顾 Python 中数据类型可以分为 数字型 和 非数字型 数字型 整型 (int) 浮点型(float) 布尔型(bool) ...
- [Python-MATLAB] 在Python中调用MATLAB的API
可以参考官方的说明文档: http://cn.mathworks.com/help/matlab/matlab_external/get-started-with-matlab-engine-for- ...
- Python 中的三元运算(软件测试中运用)
前言 在java中,有类似于 (condition) ? a :b 这样的语法,表示如果condition 为真,返回a,反之返回b.我们称之为三元运算. 那Python中,有没有这样的语法呢,非常遗 ...
- 第7.4节 Python中与众不同的类
一. 引言 在较旧的Python版本中,类型和类之间泾渭分明:内置对象是基于类型的,而自定义对象是基于类的.因此,你可以创建类,但不能创建类型.在较新的Python 2版本中,这种差别不那么明显 ...
- Python基础之:Python中的异常和错误
目录 简介 Python中的内置异常类 语法错误 异常 异常处理 抛出异常 异常链 自定义异常 finally 简介 和其他的语言一样,Python中也有异常和错误.在 Python 中,所有异常都是 ...
- 简单探讨python中的语句和语法
python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了,对象需要靠表达式建立处理,而表达式往往存在于语句 ...
随机推荐
- Virtual Box虚拟机下CentOS网络设置
VirtualBox中有4中网络连接方式: a. NAT 网络地址转换模式(Network Address Translation)b. Bridge ...
- Codeforces 932.F Escape Through Leaf
F. Escape Through Leaf time limit per test 3 seconds memory limit per test 256 megabytes input stand ...
- Codeforces 526.D Om Nom and Necklace
D. Om Nom and Necklace time limit per test 1 second memory limit per test 256 megabytes input standa ...
- poj 1743 后缀数组 最长不重叠子串
Musical Theme Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 30941 Accepted: 10336 D ...
- 抓包 ------ Wireshark 的使用
Wireshark的数据包详情窗口,如果是用中括号[]括起来的,表示注释,在数据包中不占字节 发了一个包,很久没有收到应答后,会重发包,在Wireshark抓包工具提示“[TCP Retransmis ...
- windows中apache+tomcat整合,使php和java项目能够独立运行
一.下载和安装 1.安装php 网上有安装教程,不再赘述 2.安装apache 比如安装目录为e:\apache; 项目根目录为e:\www; 网上有安装教程,不再赘述 3.安装jdk 不再 ...
- Tensorflow BatchNormalization详解:3_使用tf.layers高级函数来构建带有BatchNormalization的神经网络
Batch Normalization: 使用tf.layers高级函数来构建带有Batch Normalization的神经网络 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 吴 ...
- wget命令下载文件
wget -r -N -l -k http://192.168.99.81:8000/solrhome/ 命令格式: wget [参数列表] [目标软件.网页的网址] -V,–version 显示软 ...
- python 文字转语音包pyttsx安装出错解决方法
pyttsx的python的文字转语音的包,但是pyttsx的官方网站上资源只更新2012年,所以在py3中使用pip install pyttsx或者下载安装包进行安装时,虽然可以安装成功,但是im ...
- BestCoder Round #41 记。
大概整个过程都是很绝望的吧. 发现自己在七点之前是肯定搞不定网了..有冲动跑到机房去打 但是又不喜欢那样的气氛 这可是shi的场呢...好难过啊... 后来..好像是在和lyd讨论怎么把网络复原的过程 ...