浅谈对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入门篇之列表和元组
Oct 17 Python
python使用Flask框架获取用户IP地址的方法
Mar 21 Python
Python实现的简单hangman游戏实例
Jun 28 Python
python实现的正则表达式功能入门教程【经典】
Jun 05 Python
Python实现的文本对比报告生成工具示例
May 22 Python
Python饼状图的绘制实例
Jan 15 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
Python标准库使用OrderedDict类的实例讲解
Feb 14 Python
Python中print函数简单使用总结
Aug 05 Python
浅谈Pytorch中的torch.gather函数的含义
Aug 18 Python
Python装饰器结合递归原理解析
Jul 02 Python
深入了解Python装饰器的高级用法
Aug 13 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 程序员的调试技术小结
2009/11/15 PHP
php类中private属性继承问题分析
2012/11/01 PHP
php中如何使对象可以像数组一样进行foreach循环
2013/08/09 PHP
php操作MongoDB基础教程(连接、新增、修改、删除、查询)
2014/03/25 PHP
php从给定url获取文件扩展名的方法
2015/03/14 PHP
PHP编程快速实现数组去重的方法详解
2017/07/22 PHP
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
[IE&amp;FireFox兼容]JS对select操作
2007/01/07 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
一款由jquery实现的整屏切换特效
2014/09/15 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
jquery实现可旋转可拖拽的文字效果代码
2016/01/27 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
详谈vue+webpack解决css引用图片打包后找不到资源文件的问题
2018/03/06 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
Python读写Excel文件方法介绍
2014/11/22 Python
Python中用max()方法求最大值的介绍
2015/05/15 Python
python统计cpu利用率的方法
2015/06/02 Python
python实现网站的模拟登录
2016/01/04 Python
Python 爬虫图片简单实现
2017/06/01 Python
Python爬虫信息输入及页面的切换方法
2018/05/11 Python
对python抓取需要登录网站数据的方法详解
2018/05/21 Python
Python提取支付宝和微信支付二维码的示例代码
2019/02/15 Python
python自动生成model文件过程详解
2019/11/02 Python
Python restful框架接口开发实现
2020/04/13 Python
python中turtle库的简单使用教程
2020/11/11 Python
serialVersionUID具有什么样的特征
2014/02/20 面试题
医生自荐信
2013/10/11 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
2015小学新教师个人工作总结
2015/10/14 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js