今天下午在练习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”结构,运行结果正确。
在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语言的时候这个地方就搞混了。
更新日志
- 雨林唱片《赏》新曲+精选集SACD版[ISO][2.3G]
- 罗大佑与OK男女合唱团.1995-再会吧!素兰【音乐工厂】【WAV+CUE】
- 草蜢.1993-宝贝对不起(国)【宝丽金】【WAV+CUE】
- 杨培安.2009-抒·情(EP)【擎天娱乐】【WAV+CUE】
- 周慧敏《EndlessDream》[WAV+CUE]
- 彭芳《纯色角3》2007[WAV+CUE]
- 江志丰2008-今生为你[豪记][WAV+CUE]
- 罗大佑1994《恋曲2000》音乐工厂[WAV+CUE][1G]
- 群星《一首歌一个故事》赵英俊某些作品重唱企划[FLAC分轨][1G]
- 群星《网易云英文歌曲播放量TOP100》[MP3][1G]
- 方大同.2024-梦想家TheDreamer【赋音乐】【FLAC分轨】
- 李慧珍.2007-爱死了【华谊兄弟】【WAV+CUE】
- 王大文.2019-国际太空站【环球】【FLAC分轨】
- 群星《2022超好听的十倍音质网络歌曲(163)》U盘音乐[WAV分轨][1.1G]
- 童丽《啼笑姻缘》头版限量编号24K金碟[低速原抓WAV+CUE][1.1G]