浅谈对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代码(逐级优化)
May 25 Python
python监控网卡流量并使用graphite绘图的示例
Apr 27 Python
Python面向对象编程中的类和对象学习教程
Mar 30 Python
在Python的Django框架中加载模版的方法
Jul 16 Python
从源码解析Python的Flask框架中request对象的用法
Jun 02 Python
对numpy中shape的深入理解
Jun 15 Python
python监控文件并且发送告警邮件
Jun 21 Python
python3.4控制用户输入与输出的方法
Oct 17 Python
基于python实现百度翻译功能
May 09 Python
Python 中Django安装和使用教程详解
Jul 03 Python
python实现证件照换底功能
Aug 20 Python
Python中json.load()和json.loads()有哪些区别
Jun 07 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/04/10 PHP
php后台多用户权限组思路与实现程序代码分享
2012/02/13 PHP
初识laravel5
2015/03/02 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
PHP快速排序quicksort实例详解
2016/09/28 PHP
yii2 开发api接口时优雅的处理全局异常的方法
2019/05/14 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
PHP ElasticSearch做搜索实例讲解
2020/02/05 PHP
JavaScript 判断判断某个对象是Object还是一个Array
2010/01/28 Javascript
js parseInt(&quot;08&quot;)未指定进位制问题
2010/06/19 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
jquery基础教程之数组使用详解
2014/03/10 Javascript
Sort()函数的多种用法
2016/03/20 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
vue中的数据绑定原理的实现
2018/07/02 Javascript
vue+springboot实现项目的CORS跨域请求
2018/09/05 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
最小二乘法及其python实现详解
2020/02/24 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Perfume’s Club德国官网:在线购买香水
2019/04/08 全球购物
JAVA和C++区别都有哪些
2015/03/30 面试题
《富饶的西沙群岛》教学反思
2014/04/09 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
收入及婚姻状况证明
2014/11/20 职场文书
倡议书的格式写法
2015/04/28 职场文书
上班旷工检讨书
2015/08/15 职场文书
《夜莺的歌声》教学反思
2016/02/22 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
开机音效回归! Windows 11重新引入开机铃声
2021/11/21 数码科技
20180830晚上第一届KSL半决赛 雨神vs解冻(二龙 三炮解说)
2022/04/01 星际争霸
mysql幻读详解实例以及解决办法
2022/06/16 MySQL
源码安装apache脚本部署过程详解
2022/09/23 Servers