浅谈对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中的ceil()方法使用教程
May 14 Python
Python实现优先级队列结构的方法详解
Jun 02 Python
利用python实现数据分析
Jan 11 Python
python实现解数独程序代码
Apr 12 Python
Python中扩展包的安装方法详解
Jun 14 Python
Python实现字典按照value进行排序的方法分析
Dec 23 Python
Django 拆分model和view的实现方法
Aug 16 Python
python list转置和前后反转的例子
Aug 26 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
Python 改变数组类型为uint8的实现
Apr 09 Python
详解pandas映射与数据转换
Jan 22 Python
Python进程池与进程锁之语法学习
Apr 11 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/03/13 PHP
php curl登陆qq后获取用户信息时证书错误
2015/02/03 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PHP经典算法集锦【经典收藏】
2016/09/14 PHP
PHP内置函数生成随机数实例
2019/01/18 PHP
js no-repeat写法 背景不重复
2009/03/18 Javascript
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
初识Node.js
2014/09/03 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
Linux下编译安装php libevent扩展实例
2015/02/14 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
jQuery滚动插件scrollable.js用法分析
2017/05/25 jQuery
vue实现单选和多选功能
2017/08/11 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
2017/08/14 Javascript
React Native基础入门之初步使用Flexbox布局
2018/07/02 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
[43:14]Liquid vs Optic 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
[01:20:38]完美世界DOTA2联赛 GXR vs IO 第一场 11.07
2020/11/09 DOTA
Win10下Python环境搭建与配置教程
2016/11/18 Python
tensorflow训练中出现nan问题的解决
2018/02/10 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
python 表格打印代码实例解析
2019/10/12 Python
python编写计算器功能
2019/10/25 Python
考试不及格检讨书
2014/01/09 职场文书
创业女性典型材料
2014/05/02 职场文书
奥巴马英文演讲稿
2014/05/15 职场文书
会计专业自荐信
2014/06/03 职场文书
党员一帮一活动总结
2014/07/08 职场文书
婚前保证书范文
2015/02/28 职场文书
亮剑观后感600字
2015/06/05 职场文书
Spring boot admin 服务监控利器详解
2022/08/05 Java/Android