浅谈对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连接mysql数据库示例(做增删改操作)
Dec 31 Python
给Python IDLE加上自动补全和历史功能
Nov 30 Python
python解决网站的反爬虫策略总结
Oct 26 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
Python中用字符串调用函数或方法示例代码
Aug 04 Python
用Pygal绘制直方图代码示例
Dec 07 Python
django框架实现一次性上传多个文件功能示例【批量上传】
Jun 19 Python
Pycharm创建项目时如何自动添加头部信息
Nov 14 Python
Python稀疏矩阵及参数保存代码实现
Apr 18 Python
python 爬虫之selenium可视化爬虫的实现
Dec 04 Python
Python Socket多线程并发原理及实现
Dec 11 Python
如何利用Python matplotlib绘制雷达图
Dec 21 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
Laravel 自定命令以及生成文件的例子
2019/10/23 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
js保留两位小数使用toFixed实现
2013/07/29 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
深入理解JavaScript中的对象
2015/06/04 Javascript
JavaScript程序设计之JS调试
2015/12/09 Javascript
JS结合bootstrap实现基本的增删改查功能
2016/07/22 Javascript
assert()函数用法总结(推荐)
2017/01/25 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
vue2.0 中#$emit,$on的使用详解
2017/06/07 Javascript
webpack配置打包后图片路径出错的解决
2018/04/26 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
BootStrap中的模态框(modal,弹出层)功能示例代码
2018/11/02 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
js回调函数原理与用法案例分析
2020/03/04 Javascript
详解Python中的Cookie模块使用
2015/07/06 Python
5款非常棒的Python工具
2018/01/05 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python OpenCV读取png图像转成jpg图像存储的方法
2018/10/28 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
python日期与时间戳的各种转换示例
2020/02/12 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
仓库组长岗位职责
2014/01/29 职场文书
文明班集体申报材料
2014/05/23 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
环保标语大全
2014/06/12 职场文书
关于读书的演讲稿400字
2014/08/27 职场文书
计算机考试作弊检讨书1000字
2015/01/01 职场文书
地道战观后感2000字
2015/06/04 职场文书
运动会观后感
2015/06/09 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL