浅谈对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 不同对象比较大小示例探讨
Aug 21 Python
Python 中的 else详解
Apr 23 Python
python3中bytes和string之间的互相转换
Feb 09 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python多线程同步---文件读写控制方法
Feb 12 Python
pymongo中聚合查询的使用方法
Mar 22 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
3种适用于Python的疯狂秘密武器及原因解析
Apr 29 Python
新手学习Python2和Python3中print不同的用法
Jun 09 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 Python
python利用线程实现多任务
Sep 18 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 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获取文件内容最后一行示例
2014/01/09 PHP
基于jQuery的图片大小自动适应实现代码
2010/11/17 Javascript
jQuery 全选/反选以及单击行改变背景色实例
2013/07/02 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
scroll事件实现监控滚动条并分页显示(zepto.js)
2016/12/18 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
利用js定义一个导航条菜单
2017/03/14 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
Node错误处理笔记之挖坑系列教程
2018/06/05 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
Vue中跨域及打包部署到nginx跨域设置方法
2019/08/26 Javascript
javascript头像上传代码实例
2019/09/28 Javascript
详解js中的原型,原型对象,原型链
2020/07/16 Javascript
JS+Canvas实现五子棋游戏
2020/08/26 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
[48:24]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第一场 12.09
2020/12/12 DOTA
python轻松实现代码编码格式转换
2015/03/26 Python
Python打印输出数组中全部元素
2018/03/13 Python
Python3.5装饰器原理及应用实例详解
2019/04/30 Python
六行python代码的爱心曲线详解
2019/05/17 Python
python 绘制拟合曲线并加指定点标识的实现
2019/07/10 Python
在Django model中设置多个字段联合唯一约束的实例
2019/07/17 Python
详解canvas绘制多张图的排列顺序问题
2019/01/21 HTML / CSS
西海岸男士和男童服装:Johnnie-O
2018/03/15 全球购物
在C中是否有模拟继承等面向对象程序设计特性的好方法
2012/05/22 面试题
群众路线教育党员自我剖析材料
2014/10/06 职场文书
颐和园导游词400字
2015/01/30 职场文书
运动会通讯稿600字
2015/07/20 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
Mac M1安装mnmp (Mac+Nginx+MySQL+PHP) 开发环境
2021/03/29 PHP
Python使用UDP实现720p视频传输的操作
2021/04/24 Python
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python
CSS 实现磨砂玻璃(毛玻璃)效果样式
2023/05/21 HTML / CSS