淺談對python中if、elif、else的誤解
今天下午在練習(xí)python時用了“if...if...else...”的分支結(jié)構(gòu),結(jié)果運行出來嚇我一跳。原來我想當(dāng)然的認(rèn)為“if...if...else...”是“if...elif...else...”的簡化結(jié)構(gòu)(這個錯誤的看法好像還是從學(xué)C語言繼承過來的)。學(xué)了這么多天才發(fā)現(xiàn)其中的區(qū)別啊。下面先說說python,然后再說一下C語言里面的if語句。
“python中通過if、elif、else等保留字提供單分支、二分支和多分支結(jié)構(gòu)?!?/p>
1.單分支結(jié)構(gòu)(if語句)
if<條件>: <語句塊>
2. 二分支結(jié)構(gòu)(if-else語句)
if <條件>: <語句塊1> else : <語句塊2>
3.多分支結(jié)構(gòu)(if-elif-else語句)(else可選)
if <條件1> : <語句塊1> elif <條件2> : <語句塊2> ... else : <語句塊N>
因此如果依次寫了幾個“if語句”,沒有else或者elif,那么每個“if語句”都將會被評估一遍,結(jié)果為True的條件下面的語句塊都會被執(zhí)行。同樣如果你寫了幾個“if語句”,然后在最后寫了一個else,那也只能被認(rèn)為是幾個單分支結(jié)構(gòu)然后并列了一個二分支結(jié)構(gòu),而不是一個多分支結(jié)構(gòu)。因此在運行的時候,除最后一個if外,前面的“if語句”都將會被執(zhí)行一次,然后再執(zhí)行最后的“if-else”這個二分支。而這個else恰好又是除最后一個if條件的補(bǔ)集,一般包含前面某個if語句的條件,因此else下面的語句塊可能會被執(zhí)行,而不會達(dá)到“if-elif-else”只取其一的效果。所以才會有我今天下午的吃驚!
我用一個簡單的代碼來對比一下這個結(jié)果:
第一幅圖執(zhí)行完第一個“if語句”,又執(zhí)行了下面的“if-else”;第三幅圖則是一個多分支,判斷第一個條件結(jié)果為True后,執(zhí)行下面的語句塊,結(jié)束后跳出整個“if-elif-else”結(jié)構(gòu),運行結(jié)果正確。
在C語言里類似的結(jié)構(gòu)好像被稱為選擇結(jié)構(gòu),最常用的有以下三種形式:
(1) if(表達(dá)式) 語句1 (2) if(表達(dá)式) 語句1 else 語句2 (3) if(表達(dá)式1) 語句1 else if(表達(dá)式2) 語句2 else if(表達(dá)式3) 語句3 . . . else if(表達(dá)式m) 語句m else 語句m+1
用法和python的單分支、二分支、多分支類似,所以說我從學(xué)C語言的時候這個地方就搞混了。
到此這篇關(guān)于淺談對python中if、elif、else的誤解的文章就介紹到這了,更多相關(guān)python中if、elif、else內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
tensorflow模型繼續(xù)訓(xùn)練 fineturn實例
今天小編就為大家分享一篇tensorflow模型繼續(xù)訓(xùn)練 fineturn實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python3實現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼
這篇文章主要介紹了Python3實現(xiàn)監(jiān)控新型冠狀病毒肺炎疫情的示例代碼,代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2020-02-02django 解決model中類寫不到數(shù)據(jù)庫中,數(shù)據(jù)庫無此字段的問題
這篇文章主要介紹了django 解決model中類寫不到數(shù)據(jù)庫中,數(shù)據(jù)庫無此字段的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧2020-05-05ROS系統(tǒng)將python包編譯為可執(zhí)行文件的簡單步驟
本文章講述ROS系統(tǒng)下如何將python編譯為可以執(zhí)行文件,步驟比較簡單,感興趣的朋友跟隨小編一起看看吧2021-07-07Pandas數(shù)據(jù)分析多文件批次聚合處理實例解析
這篇文章主要為大家介紹了Pandas數(shù)據(jù)分析多文件批次聚合處理實例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02