浅谈对python中if、elif、else的误解

作者:L155JL 时间:2021-04-04 00:57:57 

今天下午在练习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语言的时候这个地方就搞混了。

来源:https://blog.csdn.net/L155JL/article/details/108107447

标签:python,if,elif,else
0
投稿

猜你喜欢

  • Tensorflow中使用tfrecord方式读取数据的方法

    2023-12-05 01:01:18
  • Python中WebService客户端接口调用及身份验证的问题

    2021-12-22 06:01:05
  • 监控 url fragment变化的js代码

    2023-08-25 10:20:58
  • Python3.4编程实现简单抓取爬虫功能示例

    2022-04-23 17:48:15
  • python实现书法碑帖图片分割

    2023-09-12 16:08:02
  • 详解python中的defaultdict 默认值

    2022-12-27 08:51:40
  • php mysql获取表字段名称和字段信息的三种方法

    2023-11-18 22:47:26
  • Python当中的array数组对象实例详解

    2022-02-12 23:22:47
  • 详解如何在pyqt中通过OpenCV实现对窗口的透视变换

    2021-11-04 07:10:13
  • 小结下dom节点操作

    2011-03-08 10:33:00
  • 关于keras中卷积层Conv2D的学习记录

    2022-07-16 17:33:16
  • 举例讲解Python的lambda语句声明匿名函数的用法

    2021-05-29 13:02:53
  • Python 内置变量和函数的查看及说明介绍

    2021-06-11 16:12:14
  • Python实现简单扫雷游戏

    2022-03-27 15:05:23
  • JS+CSS实现的日本门户网站经典选项卡导航效果

    2023-09-04 03:40:24
  • Go如何实现HTTP请求限流示例

    2023-07-21 00:40:27
  • 通过表单的做为二进制文件上传request.totalbytes提取出上传的二级制数据

    2011-03-16 10:39:00
  • python将ip地址转换成整数的方法

    2022-10-17 23:40:23
  • Python中生成Epoch的方法

    2021-06-27 15:21:15
  • python用字符组成图像代码实例

    2023-09-15 02:12:04
  • asp之家 网络编程 m.aspxhome.com