浅谈对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中的二进制位运算符
May 13 Python
Python编程判断一个正整数是否为素数的方法
Apr 14 Python
Python爬虫之网页图片抓取的方法
Jul 16 Python
Python实现的大数据分析操作系统日志功能示例
Feb 11 Python
PyQt5实现简单数据标注工具
Mar 18 Python
python3使用matplotlib绘制条形图
Mar 25 Python
python实现自动化上线脚本的示例
Jul 01 Python
python3 下载网络图片代码实例
Aug 27 Python
python2.7实现复制大量文件及文件夹资料
Aug 31 Python
python pyecharts 实现一个文件绘制多张图
May 13 Python
关于keras.layers.Conv1D的kernel_size参数使用介绍
May 22 Python
使用Pytorch训练two-head网络的操作
May 28 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 阴历-农历-转换类代码
2012/01/16 PHP
PHP和C#可共用的可逆加密算法详解
2015/10/26 PHP
phpMyAdmin通过密码漏洞留后门文件
2018/11/20 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
2019/12/12 PHP
javascript parseInt 函数分析(转)
2009/03/21 Javascript
关于this和self的使用说明
2010/08/01 Javascript
js控制滚动条缓慢滚动到顶部实现代码
2013/03/20 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
js改变style样式和css样式的简单实例
2016/06/28 Javascript
简单实现js页面切换功能
2021/01/10 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
2019/06/10 Javascript
vue回到顶部监听滚动事件详解
2019/08/02 Javascript
Vue axios 将传递的json数据转为form data的例子
2019/10/29 Javascript
vue弹出框组件封装实例代码
2019/10/31 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
Python中交换两个元素的实现方法
2018/06/29 Python
python实现拼图小游戏
2020/02/22 Python
如何利用Python识别图片中的文字
2020/05/31 Python
用HTML5制作一个简单的弹力球游戏
2015/05/12 HTML / CSS
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
老师推荐信
2013/10/28 职场文书
岗位职责的定义
2013/11/10 职场文书
会计专业的自荐信
2013/12/12 职场文书
人民教师的自我评价分享
2014/02/21 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
小学生操行评语大全
2014/04/22 职场文书
四风问题对照检查材料
2014/09/22 职场文书
党员民主评议个人总结
2014/10/20 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
2019XX公司员工考核管理制度!
2019/08/07 职场文书
Oracle数据库事务的开启与结束详解
2022/06/25 Oracle