浅谈对python中if、elif、else的误解
作者:L155JL 发布时间:2021-04-04 00:57:57
今天下午在练习python时用了“if...if...else...”的分支结构,结果运行出来吓我一跳。原来我想当然的认为“if...if...else...”是“if...elif...else...”的简化结构(这个错误的看法好像还是从学C语言继承过来的)。学了这么多天才发现其中的区别啊。下面先说说python,然后再说一下C语言里面的if语句。
“python中通过if、elif、else等保留字提供单分支、二分支和多分支结构。”
1.单分支结构(if语句)
if<条件>:
<语句块>
2. 二分支结构(if-else语句)
if <条件>:
<语句块1>
else :
<语句块2>
3.多分支结构(if-elif-else语句)(else可选)
if <条件1> :
<语句块1>
elif <条件2> :
<语句块2>
...
else :
<语句块N>
因此如果依次写了几个“if语句”,没有else或者elif,那么每个“if语句”都将会被评估一遍,结果为True的条件下面的语句块都会被执行。同样如果你写了几个“if语句”,然后在最后写了一个else,那也只能被认为是几个单分支结构然后并列了一个二分支结构,而不是一个多分支结构。因此在运行的时候,除最后一个if外,前面的“if语句”都将会被执行一次,然后再执行最后的“if-else”这个二分支。而这个else恰好又是除最后一个if条件的补集,一般包含前面某个if语句的条件,因此else下面的语句块可能会被执行,而不会达到“if-elif-else”只取其一的效果。所以才会有我今天下午的吃惊!
我用一个简单的代码来对比一下这个结果:
第一幅图执行完第一个“if语句”,又执行了下面的“if-else”;第三幅图则是一个多分支,判断第一个条件结果为True后,执行下面的语句块,结束后跳出整个“if-elif-else”结构,运行结果正确。
在C语言里类似的结构好像被称为选择结构,最常用的有以下三种形式:
(1) if(表达式) 语句1
(2) if(表达式)
语句1
else
语句2
(3) if(表达式1) 语句1
else if(表达式2) 语句2
else if(表达式3) 语句3
.
.
.
else if(表达式m) 语句m
else 语句m+1
用法和python的单分支、二分支、多分支类似,所以说我从学C语言的时候这个地方就搞混了。
来源:https://blog.csdn.net/L155JL/article/details/108107447


猜你喜欢
- 前言对于pprof,相信熟悉go语言的程序员基本都不陌生,一般线上的问题都是靠它可以快速定位。但是实际项目中,很多时候我们为了性能都不会开启
- 内容摘要:本文介绍了使用CSS结合javascript来实现对超链接的类型进行标注,让浏览者明确是zip,doc,pdf或其它格式的文件。这
- windows系统下安装Pyinstallercmd下输入指令pip install PyInstallerPyinstaller的使用进入
- 前言 基于mybatis的AbstractRoutingDataSource和I
- jqueryjQueryJQUERYJqueryJQueryjquery报错jsJSJsmyeclipseMyEclipseMyeclips
- 声音的本质是震动,震动的本质是位移关于时间的函数,波形文件(.wav)中记录了不同采样时刻的位移。通过傅里叶变换,可以将时间域的声音函数分解
- 几乎所有的微薄都提供了缩短网址的服务,其原理就是将一个url地址按照一定的算法生成一段字符串,然后加在一个短域名后面边成了一个新的url地址
- 作为一个mod_python模块的替代,你可以考虑使用mod_wsgi模块,此模块开发的时间比mod_python的开发时间离现在更近一些,
- 创建NumPy矩阵NumPy对于多维数组的运算,默认情况下并不进行矩阵运算。如果需要对数组进行矩阵运算,则可以调用相应的函数。在NumPy中
- 前言 不知道从什么时候开始有了写博客的想法,奈何自己的知识储备还很薄弱,迟迟无法下笔。这是我的第一篇博客,算是记录一下自己学习前
- 本文使用的代码book_dict = {"price": 500, "bookName": &quo
- 对于二维数组,img_mask[[ 0 0 0 ..., 7 7 7] [ 0 0 0 ..., 7 7 7] [ 0 0 0 ..., 7
- 开发工具:Microsoft Visual Studio 2005 数据库:Microsoft SQL Server 2005 说明:这里建
- 上次用Javascript+ASP实现了无刷新的新闻列表,最后还有一个小问题没有解决:下边的分页数列"首页、上10页、下10页、尾
- 看到标题就知道有逗比忘了密码。。。没错就是我。你也忘了密码? 不要着急!0x00:第一步:运行django shellpython3 man
- 【导语】:对自己写的冗长代码,想重构但又无思路?小编整理了系列介绍python代码重构优化的方法,助你一臂之力。编写干净的 Pythonic
- 问题给出一段话,由短句组成,短句之间可能被任意标点符号隔开。想要提取所有的短句。解决使用 re.split 函数,用正则式匹配的方法,一次性
- 前言本文主要给大家介绍了关于golang解析网页利器goquery使用的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介
- 大名鼎鼎的FCKeditor终于在最近发布新版本了,与增加版本号不同,这次完全把它改名了,更名为CKeditor。这应该是和它的开发公司CK
- <?php /******************************************** *&nb