今天下午在练习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 :

else :

3.多分支结构(if-elif-else语句)(else可选)

if :

elif :

...

else :

因此如果依次写了几个“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”结构,运行结果正确。

在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博客!

python执行不了elif_浅谈对python中if、elif、else的误解相关推荐

  1. python计算现场得分_浅谈用 Python 计算文本 BLEU 分数

    浅谈用 Python 计算文本 BLEU 分数 BLEU, 全称为 Bilingual Evaluation Understudy(双语评估替换), 是一个比较候选文本翻译与其他一个或多个参考翻译的评 ...

  2. python 前端框架比较_浅谈五大Python Web框架

    说到Web Framework,Ruby的世界Rails一统江湖,而Python则是一个百花齐放的世界,各种micro-framework.framework不可胜数,不完全列表见: 虽然另一大脚本语 ...

  3. python中if和elif的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  4. python中分支语句elif与else的区别_浅谈对python中if、elif、else的误解

    今天下午在练习python时用了"if...if...else..."的分支结构,结果运行出来吓我一跳.原来我想当然的认为"if...if...else..." ...

  5. 浅谈用Python计算文本BLEU分数

    在本教程中,你探索了BLEU评分,根据在机器翻译和其他语言生成任务中的参考文本对候选文本进行评估和评分. 具体来说,你学到了: BLEU评分的简单入门介绍,并直观地感受到到底是什么正在被计算. 如何使 ...

  6. Python实例浅谈之三Python与C/C++相互调用

    参考:http://blog.csdn.net/taiyang1987912/article/details/44779719 Python实例浅谈之三Python与C/C++相互调用 二.Pytho ...

  7. pythonweb开发-Web | 浅谈用Python进行Web开发

    Web开发这样一个大概念,对我这种小白来说,想学也不知道从哪下手.在网上广泛地浏览了一下这个方面的文章后,我发现当今Web开发的一大热门语言是Python(最大的当然还是PHP),而恰好我平常用Pyt ...

  8. 浅谈域渗透中的组策略及gpp运用

    组策略(英语:Group Policy)是微软Windows NT家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境.组策略提供了操作系统.应用程序和活动目录中用户设置的集中化管理和配置 ...

  9. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

最新文章

  1. Stanford UFLDL教程 可视化自编码器训练结果
  2. 检索数据_8_查询语句里执行条件判断
  3. BUAA 更大公约数
  4. SPSS图文教程:正态转换的多种方法
  5. Google浏览器更改默认路径为D盘路径
  6. 如何看懂计算机英文文档,如何看英文技术文档
  7. java实现高清图片剪切
  8. 手机上微信总是说无法连接服务器错误代码,微信登录失败怎么办|微信登录失败常见提示及处理方法...
  9. 电信家庭宽带光猫端口映射实现外网访问家庭内网
  10. linux初学习题五显示系统时间现实格式为:小时/分钟/秒AM/PM!
  11. future java get_关于 Future get方法的疑问
  12. js三元表达式使用方法概述
  13. Quartz定时任务使用小记(11月22日)
  14. 雷人雷语的宅男同事经典语录!
  15. ZT 分智网博客 – 职场、面试技巧、职业规划
  16. share mouse键盘不能在再另一个屏幕使用
  17. CIR,CBS,EBS,PIR,PBS傻傻分不清楚?看这里!----揭秘令牌桶
  18. 配置oracle数据库容许远程连接(包括通过plsql进行远程连接)
  19. xlsx.js设置Excel样式
  20. 解决Android闪退的坑

热门文章

  1. sqlserver 迁移
  2. title或alt自动换行
  3. ip tcp udp mpeg4头结构的定义
  4. 微软Silverlight 3正式版
  5. Android TV 开发 (1)
  6. linux里用cmake安装的软件要怎么卸载?
  7. Codeforces Round #371 (Div. 2) C. Sonya and Queries 水题
  8. 笔试题--你准备好了吗
  9. 大数据技术的表现形式有哪些
  10. 大数据平台有什么功能作用