浅谈对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中多线程的创建及基本调用方法
Jul 08 Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 Python
TF-IDF与余弦相似性的应用(二) 找出相似文章
Dec 21 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 Python
详解python里的命名规范
Jul 16 Python
Linux下安装python3.6和第三方库的教程详解
Nov 09 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
使用Python实现跳帧截取视频帧
May 31 Python
python实现的自动发送消息功能详解
Aug 15 Python
python导入库的具体方法
Jun 18 Python
Python面向对象多态实现原理及代码实例
Sep 16 Python
python如何利用cv2模块读取显示保存图片
Jun 04 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
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
PHP引用符&amp;的用法详细解析
2013/08/22 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
浅析Js中的单引号与双引号问题
2013/11/06 Javascript
script标签属性用type还是language
2015/01/21 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
引用jquery框架后出错的解决方法
2016/08/09 Javascript
基于jQuery实现一个marquee无缝滚动的插件
2017/03/09 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
2018/07/18 Javascript
jQuery实现滑动星星评分效果(每日分享)
2019/11/13 jQuery
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
vue3使用vue-count-to组件的实现
2020/12/25 Vue.js
[51:39]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第二场 2月7日
2021/03/11 DOTA
小结Python用fork来创建子进程注意事项
2014/07/03 Python
python实现模拟按键,自动翻页看u17漫画
2015/03/17 Python
pycharm安装图文教程
2017/05/02 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
python调用动态链接库的基本过程详解
2019/06/19 Python
python做接口测试的必要性
2019/11/20 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
html5的新玩法——语音搜索
2013/01/03 HTML / CSS
HTML5 Convas APIs方法详解
2015/04/24 HTML / CSS
医院辞职信范文
2014/01/17 职场文书
银行办公室岗位职责
2014/03/10 职场文书
相亲大会策划方案
2014/06/05 职场文书
应聘教师求职信
2014/07/19 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
销售经理岗位职责范本
2015/04/02 职场文书
2016公司新年问候语
2015/11/11 职场文书
社区服务理念口号
2015/12/25 职场文书