浅谈对python中if、elif、else的误解


Posted in Python onAugust 20, 2020

今天下午在练习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”结构,运行结果正确。

浅谈对python中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 相关文章推荐
Python操作MySQL简单实现方法
Jan 26 Python
基于python的七种经典排序算法(推荐)
Dec 08 Python
总结python实现父类调用两种方法的不同
Jan 15 Python
python实现redis三种cas事务操作
Dec 19 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
使用python批量修改文件名的方法(视频合并时)
Mar 24 Python
Python 自动登录淘宝并保存登录信息的方法
Sep 04 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
Python退出时强制运行一段代码的实现方法
Apr 29 Python
Python如何定义接口和抽象类
Jul 28 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
ubuntu16.04升级Python3.5到Python3.7的方法步骤
Aug 20 #Python
Python自动化测试中yaml文件读取操作
Aug 20 #Python
通过代码实例解析Pytest运行流程
Aug 20 #Python
Python爬虫实现自动登录、签到功能的代码
Aug 20 #Python
python openCV实现摄像头获取人脸图片
Aug 20 #Python
Python实现自动签到脚本功能
Aug 20 #Python
python如何随机生成高强度密码
Aug 19 #Python
You might like
10个简化PHP开发的工具
2014/12/25 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
VBScript版代码高亮
2006/06/26 Javascript
CSDN轮换广告图片轮换效果
2007/03/27 Javascript
IE/FireFox具备兼容性的拖动代码
2007/08/13 Javascript
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
关于html+ashx开发中几个问题的解决方法
2011/07/18 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
JavaScript实现网页上的浮动广告的简单方法
2013/06/14 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
AngularJS 单元测试(二)详解
2016/09/21 Javascript
JS表单数据验证的正则表达式(常用)
2017/02/18 Javascript
深入浅析ES6 Class 中的 super 关键字
2017/10/20 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
node后端服务保活的实现
2019/11/10 Javascript
vue使用微信扫一扫功能的实现代码
2020/04/11 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
2020/06/16 Javascript
Java多线程编程中ThreadLocal类的用法及深入
2016/06/21 Python
python snownlp情感分析简易demo(分享)
2017/06/04 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
Python单元测试实例详解
2018/05/25 Python
基于DATAFRAME中元素的读取与修改方法
2018/06/08 Python
Python图像滤波处理操作示例【基于ImageFilter类】
2019/01/03 Python
Python 实现一行输入多个数字(用空格隔开)
2020/04/29 Python
Python csv文件记录流程代码解析
2020/07/16 Python
python 浮点数四舍五入需要注意的地方
2020/08/18 Python
python 利用matplotlib在3D空间绘制二次抛物面的案例
2021/02/06 Python
Java面试题汇总
2015/12/06 面试题
吸烟检讨书2000字
2014/02/13 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
雏鹰争章活动总结
2014/05/09 职场文书
公安机关起诉意见书
2015/05/20 职场文书
Spring中bean的生命周期之getSingleton方法
2021/06/30 Java/Android