浅谈对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使用urllib2模块获取gravatar头像实例
Dec 18 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
Python卸载模块的方法汇总
Jun 07 Python
使用C++扩展Python的功能详解
Jan 12 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
Django通用类视图实现忘记密码重置密码功能示例
Dec 17 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
Dec 25 Python
浅谈django 模型类使用save()方法的好处与注意事项
Mar 28 Python
pycharm的python_stubs问题
Apr 08 Python
python实现Oracle查询分组的方法示例
Apr 30 Python
Python Merge函数原理及用法解析
Sep 16 Python
python字符串的多行输出的实例详解
Jun 08 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中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
PHP简单实现解析xml为数组的方法
2018/05/02 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
PHP7 其他修改
2021/03/09 PHP
基于jquery的图片的切换(以数字的形式)
2011/02/14 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
raphael.js绘制中国地图 地图绘制方法
2014/02/12 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
2015/12/25 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
JavaScript使用链式方法封装jQuery中CSS()方法示例
2017/04/07 jQuery
JavaScript实现计数器基础方法
2017/10/10 Javascript
Vuex mutitons和actions初使用详解
2019/03/04 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
Python zip()函数用法实例分析
2018/03/17 Python
python实现大量图片重命名
2020/03/23 Python
Python 实现Image和Ndarray互相转换
2020/02/19 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
药剂专业自荐信范文
2014/04/16 职场文书
活动宣传策划方案
2014/05/23 职场文书
音乐幼师求职信
2014/07/09 职场文书
"9.18"国耻日演讲稿范文
2014/09/14 职场文书
领导走群众路线整改措施思想汇报
2014/10/12 职场文书
2014年除四害工作总结
2014/12/06 职场文书
实施意见格式范本
2015/06/05 职场文书
好人好事新闻稿
2015/07/17 职场文书
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL
基于Python编写简易版的天天跑酷游戏的示例代码
2022/03/23 Python