浅谈对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内置的字符串处理函数整理
Jan 29 Python
Python标准库与第三方库详解
Jul 22 Python
python删除指定类型(或非指定)的文件实例详解
Jul 06 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
Python应用03 使用PyQT制作视频播放器实例
Dec 07 Python
requests和lxml实现爬虫的方法
Jun 11 Python
python opencv之SURF算法示例
Feb 24 Python
python设计微型小说网站(基于Django+Bootstrap框架)
Jul 08 Python
Python with用法:自动关闭文件进程
Jul 10 Python
Selenium之模拟登录铁路12306的示例代码
Jul 31 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 Python
Python绘制散点图之可视化神器pyecharts
Jul 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
一个ftp类(ini.php)
2006/10/09 PHP
php获取mysql数据库中的所有表名的代码
2011/04/23 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
PHP实现HTML页面静态化的方法
2015/11/04 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
GreyBox技术总结(转)
2010/11/23 Javascript
两种常用的javascript数组去重方法思路及代码
2013/03/26 Javascript
nodejs初步体验篇
2015/11/23 NodeJs
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
js微信分享API
2020/10/11 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
2017/09/05 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
2017/12/22 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
2018/10/29 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
迅速了解一下ES10中Object.fromEntries的用法使用
2019/03/05 Javascript
Vue内部渲染视图的方法
2019/09/02 Javascript
[53:52]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python判断图片宽度和高度后删除图片的方法
2015/05/22 Python
python入门基础之用户输入与模块初认识
2016/11/14 Python
Python实现快速计算词频功能示例
2018/06/25 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
python批量处理多DNS多域名的nslookup解析实现
2020/06/28 Python
css3 给页面加个半圆形导航条主要利用旋转和倾斜样式
2014/02/10 HTML / CSS
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
JD Sports比利时官网:英国领先的运动鞋和运动服饰零售商
2018/10/10 全球购物
美国家居装饰和豪华家具购物网站:One Kings Lane
2018/12/24 全球购物
《鞋匠的儿子》教学反思
2014/03/02 职场文书
计算机专业应届生求职信
2014/04/06 职场文书
家长会演讲稿
2014/04/26 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
vue修饰符.capture和.self的区别
2022/04/22 Vue.js
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android