浅谈对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简单获取本机计算机名和IP地址的方法
Jun 03 Python
python妹子图简单爬虫实例
Jul 07 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
Python打包可执行文件的方法详解
Sep 19 Python
浅谈python迭代器
Nov 08 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Tensorflow之梯度裁剪的实现示例
Mar 08 Python
django中url映射规则和服务端响应顺序的实现
Apr 02 Python
Django用户登录与注册系统的实现示例
Jun 03 Python
Python库安装速度过慢解决方案
Jul 14 Python
python多线程和多进程关系详解
Dec 14 Python
python 中的jieba分词库
Nov 23 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字符过滤函数去除字符串最后一个逗号(rtrim)
2013/03/26 PHP
带密匙的php加密解密示例分享
2014/01/29 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
PHP开发者必须掌握的6个关键字
2014/04/14 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
2015/09/14 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
bootstrap multiselect下拉列表功能
2017/08/22 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
2017/10/26 Javascript
vue项目中的webpack-dev-sever配置方法
2017/12/14 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
Vue 之孙组件向爷组件通信的实现
2019/04/23 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
vue实现的多页面项目如何优化打包的步骤详解
2020/07/19 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
[57:22]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第五场
2018/04/10 DOTA
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
python多线程http下载实现示例
2013/12/30 Python
Python单元测试框架unittest简明使用实例
2015/04/13 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
python构建基础的爬虫教学
2018/12/23 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
CSS3 input框的实现代码类似Google登录的动画效果
2020/08/04 HTML / CSS
HTML5 Canvas中绘制矩形实例
2015/01/01 HTML / CSS
什么是java序列化,如何实现java序列化
2012/11/14 面试题
社区班子对照检查材料
2014/08/27 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
2015年爱国卫生工作总结
2015/04/22 职场文书