python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解
今天下午在练习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 :
else :
3.多分支结构(if-elif-else语句)(else可选)
if :
elif :
...
else :
因此如果依次写了几个“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语言的时候这个地方就搞混了。
到此这篇关于浅谈对python中if、elif、else的误解的文章就介绍到这了,更多相关python中if、elif、else内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
本文标题: 浅谈对python中if、elif、else的误解
本文地址: http://www.cppcns.com/jiaoben/python/336404.html
python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解相关推荐
- python中if和elif的区别_浅谈对python中if、elif、else的误解
今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...
- mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- python中elif和else的区别_浅谈Python的条件判断语句if/else语句
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户的年龄,根据年龄打印不同的内容... python程序中,能让计算机自己作出判断的语句就是if语句: 例: age = 25 ...
- python中for循环和while循环的区别_浅谈python中的while循环
python中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环:for循环的时候必须有一个可迭代的对象,才能循环,比如说 列表.字典.字符串等 ...
- python计算现场得分_浅谈用 Python 计算文本 BLEU 分数
浅谈用 Python 计算文本 BLEU 分数 BLEU, 全称为 Bilingual Evaluation Understudy(双语评估替换), 是一个比较候选文本翻译与其他一个或多个参考翻译的评 ...
- java扫码枪键盘_浅谈在react中如何实现扫码枪输入
触发原理 原理就是监听键盘输入,比如扫一个为6970596130126的69条形码,用扫码枪扫一下会在光标位置依次输出: 6 9 7 0 5 9 6 1 3 0 2 6 但这不是完整的,所以需要写一个 ...
- java 定时任务怎么关闭_浅谈springboot项目中定时任务如何优雅退出
在一个springboot项目中需要跑定时任务处理批数据时,突然有个Kill命令或者一个Ctrl+C的命令,此时我们需要当批数据处理完毕后才允许定时任务关闭,也就是当定时任务结束时才允许Kill命令生 ...
- mysql存储过程set什么意思_浅谈MySQL存储过程中declare和set定义变量的区别
在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...
- python的re2和re区别_浅谈Python中re.match()和re.search()的使用及区别
1.re.match()fvk免费资源网 re.match()的概念是从头匹配一个符合规则的字符串,从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None.fvk免费资源网 包含的参数如下: ...
最新文章
- do{ ...}while(0)应用技巧
- 全球第一家只接收BCH的慈善组织
- crm系统是什么很棒ec实力_CRM系统都有哪些功能?CRM管理系统的主要用途又是什么?...
- JAVA API-----String类和StringBuffer类
- Web前端开发笔记——第一章 Web前端概论
- 这么多Apache顶级项目,SkyWalking为何一枝独秀?
- U-boot 打补丁,编译,设置环境变量,
- CCF认证历年试题解(python版本 + c语言版+c++版本)
- 线性反馈移位寄存器LFSR verilog实现
- 东南卫视肌肤食品微商套路解析
- 正则表达式-国际手机号或座机号校验
- Heka GeoIpDecoder 配置
- 指针实现写一个函数,将一个3×3的整数矩阵转置
- 2022年驾驶员考试挖掘机司机多选题专项训练及答案
- VMware的linux虚拟机玩耍 [2] (环境配置与一些软件安装)
- 深度学习100问之深入理解Regularization(正则化)
- Linux系统必学必会知识点整理
- 一种基于深度学习的单导联心电信号睡眠呼吸暂停检测方法
- 拼题A入驻CSDN平台啦!
- 数学建模——光盘的数据容量