浅谈对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实现从url中提取域名的几种方法
Sep 26 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python优先队列实现方法示例
Sep 21 Python
对python数据切割归并算法的实例讲解
Dec 12 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
Python利用itchat库向好友或者公众号发消息的实例
Feb 21 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
python解析xml文件方式(解析、更新、写入)
Mar 05 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 Python
python基于Kivy写一个图形桌面时钟程序
Jan 28 Python
ubuntu安装jupyter并设置远程访问的实现
Mar 31 Python
Python之Matplotlib绘制热力图和面积图
Apr 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 urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
PHP操作MySQL事务实例
2014/11/05 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
javascript实现文本域写入字符时限定字数
2014/02/12 Javascript
jquery重复提交请求的原因浅析
2014/05/23 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
Node.js调试技术总结分享
2017/03/12 Javascript
vue音乐播放器插件vue-aplayer的配置及其使用实例详解
2017/07/10 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
使用jquery+iframe做一个ajax上传效果(实例)
2017/08/24 jQuery
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
使用vue.js在页面内组件监听scroll事件的方法
2018/09/11 Javascript
解决js相同的正则多次调用test()返回的值却不同的问题
2018/10/10 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
vue3修改link标签默认icon无效问题详解
2019/10/09 Javascript
node.js事件轮询机制原理知识点
2019/12/22 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python基于csv模块实现读取与写入csv数据的方法
2018/01/18 Python
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
开会迟到检讨书
2014/01/08 职场文书
省文明单位申报材料
2014/05/08 职场文书
十佳少先队员演讲稿
2014/09/12 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
常务副总经理岗位职责
2015/02/02 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
只用Python就可以制作的简单词云
2021/06/07 Python
改造DE1103三步曲
2022/04/07 无线电