浅谈对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解析json实例方法
Nov 19 Python
Python中使用item()方法遍历字典的例子
Aug 26 Python
Python中使用插入排序算法的简单分析与代码示例
May 04 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
基于Python中的yield表达式介绍
Nov 19 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
keras分类之二分类实例(Cat and dog)
Jul 09 Python
Django中和时区相关的安全问题详解
Oct 12 Python
python3爬虫中多线程进行解锁操作实例
Nov 25 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
Pytorch如何切换 cpu和gpu的使用详解
Mar 01 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 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
2021年最新CPU天梯图
2021/03/04 数码科技
Classes and Objects in PHP5-面向对象编程 [1]
2006/10/09 PHP
PHP+DBM的同学录程序(2)
2006/10/09 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
php支付宝系列之电脑网站支付
2018/05/30 PHP
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
jQuery实现锚点scoll效果实例分析
2015/03/10 Javascript
jQuery使用animate创建动画用法实例
2015/08/07 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
详解handlebars+require基本使用方法
2016/12/21 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
2018/10/12 Javascript
vue2 中二级路由高亮问题及配置方法
2019/06/10 Javascript
vue登录注册实例详解
2019/09/14 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
Pythont特殊语法filter,map,reduce,apply使用方法
2016/02/27 Python
Python KMeans聚类问题分析
2018/02/23 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
Python实现一个优先级队列的方法
2020/07/31 Python
scrapy中如何设置应用cookies的方法(3种)
2020/09/22 Python
详解Open Folder as PyCharm Project怎么添加的方法
2020/12/29 Python
阿联酋手表和配饰购物网站:Rivolishop
2019/11/25 全球购物
总经理助理岗位职责
2013/11/08 职场文书
2014年应届大学生毕业自我鉴定
2014/01/31 职场文书
竞争上岗实施方案
2014/03/21 职场文书
不错的求职信范文
2014/07/20 职场文书
个人委托书怎么写
2014/09/17 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
运动会通讯稿50字
2015/07/20 职场文书
2016感恩母亲节校园广播稿
2015/12/17 职场文书