浅谈对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中使用items()方法返回字典元素对的教程
May 21 Python
一键搞定python连接mysql驱动有关问题(windows版本)
Apr 23 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
轻松理解Python 中的 descriptor
Sep 15 Python
python版本的仿windows计划任务工具
Apr 30 Python
linux下python使用sendmail发送邮件
May 22 Python
Linux下多个Python版本安装教程
Aug 15 Python
解决python线程卡死的问题
Feb 18 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
使用Python爬取Json数据的示例代码
Dec 07 Python
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
Jun 07 Python
Python使用永中文档转换服务
May 06 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中0,null,empty,空,false,字符串关系的详细介绍
2013/06/20 PHP
PHP+Mysql无刷新问答评论系统(源码)
2016/12/20 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
jquery 上下滚动广告
2009/06/17 Javascript
js中根据字数截取字符串,不能截断url
2012/01/12 Javascript
JQuery for与each性能比较分析
2013/05/14 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
javascript实现网页屏蔽Backspace事件,输入框不屏蔽
2015/07/21 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
angularjs实现柱状图动态加载的示例
2017/12/11 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
详解Element-UI中上传的文件前端处理
2019/08/07 Javascript
JavaScript oncopy事件用法实例解析
2020/05/13 Javascript
python抓取京东小米8手机配置信息
2018/11/13 Python
5分钟 Pipenv 上手指南
2018/12/20 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
基于Python3读写INI配置文件过程解析
2020/07/23 Python
美国户外烹饪产品购物网站:Outdoor Cooking
2020/01/10 全球购物
财务管理专业毕业生求职信范文
2013/09/21 职场文书
法学专业毕业生自荐信范文
2013/12/18 职场文书
慰问敬老院活动总结
2014/04/26 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
岗位说明书范文
2014/05/07 职场文书
永远跟党走演讲稿
2014/09/12 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
幼儿教师远程研修感悟
2015/11/18 职场文书
创业计划书之干洗店
2019/09/10 职场文书