浅谈对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 相关文章推荐
在Django框架中伪造捕捉到的URLconf值的方法
Jul 18 Python
sublime text 3配置使用python操作方法
Jun 11 Python
Python实现中一次读取多个值的方法
Apr 22 Python
python 常见字符串与函数的用法详解
Nov 23 Python
python 根据时间来生成唯一的字符串方法
Jan 14 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
Apr 15 Python
浅谈django2.0 ForeignKey参数的变化
Aug 06 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
完美解决python针对hdfs上传和下载的问题
Jun 05 Python
基于python实现监听Rabbitmq系统日志代码示例
Nov 28 Python
用python获取txt文件中关键字的数量
Dec 24 Python
Python实现文字pdf转换图片pdf效果
Apr 03 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
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
php通过前序遍历树实现无需递归的无限极分类
2015/07/10 PHP
php的socket编程详解
2016/11/20 PHP
php的4种常用运行方式详解
2016/12/22 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
jquery可定制的在线UEditor编辑器
2015/11/17 Javascript
Bootstrap弹出带合法性检查的登录框实例代码【推荐】
2016/06/23 Javascript
angular十大常见问题
2017/03/07 Javascript
整理关于Bootstrap过渡动画的慕课笔记
2017/03/29 Javascript
js前端实现图片懒加载(lazyload)的两种方式
2017/04/24 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
vue实现全选和反选功能
2017/08/31 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
基于cropper.js封装vue实现在线图片裁剪组件功能
2018/03/01 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
在Bootstrap开发框架中使用dataTable直接录入表格行数据的方法
2018/10/25 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
基于javascript原生判断DOM是否加载完毕
2020/10/14 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
uni-app 自定义底部导航栏的实现
2020/12/11 Javascript
对于Python的框架中一些会话程序的管理
2015/04/20 Python
Python创建模块及模块导入的方法
2015/05/27 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
python 移动图片到另外一个文件夹的实例
2019/01/10 Python
pycharm配置pyqt5-tools开发环境的方法步骤
2019/02/11 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
2019/02/18 Python
Python编写打字训练小程序
2019/09/26 Python
python [:3] 实现提取数组中的数
2019/11/27 Python
Python实现进度条和时间预估的示例代码
2020/06/02 Python
python 提高开发效率的5个小技巧
2020/10/19 Python
俄罗斯有趣和原创礼物网上商店:MagicMag
2019/08/01 全球购物
Python数据结构之队列详解
2022/03/21 Python