淺談對python中if、elif、else的誤解
今天下午在練習(xí)python時(shí)用了“if...if...else...”的分支結(jié)構(gòu),結(jié)果運(yùn)行出來嚇我一跳。原來我想當(dāng)然的認(rèn)為“if...if...else...”是“if...elif...else...”的簡化結(jié)構(gòu)(這個(gè)錯(cuò)誤的看法好像還是從學(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>
因此如果依次寫了幾個(gè)“if語句”,沒有else或者elif,那么每個(gè)“if語句”都將會(huì)被評估一遍,結(jié)果為True的條件下面的語句塊都會(huì)被執(zhí)行。同樣如果你寫了幾個(gè)“if語句”,然后在最后寫了一個(gè)else,那也只能被認(rèn)為是幾個(gè)單分支結(jié)構(gòu)然后并列了一個(gè)二分支結(jié)構(gòu),而不是一個(gè)多分支結(jié)構(gòu)。因此在運(yùn)行的時(shí)候,除最后一個(gè)if外,前面的“if語句”都將會(huì)被執(zhí)行一次,然后再執(zhí)行最后的“if-else”這個(gè)二分支。而這個(gè)else恰好又是除最后一個(gè)if條件的補(bǔ)集,一般包含前面某個(gè)if語句的條件,因此else下面的語句塊可能會(huì)被執(zhí)行,而不會(huì)達(dá)到“if-elif-else”只取其一的效果。所以才會(huì)有我今天下午的吃驚!
我用一個(gè)簡單的代碼來對比一下這個(gè)結(jié)果:
第一幅圖執(zhí)行完第一個(gè)“if語句”,又執(zhí)行了下面的“if-else”;第三幅圖則是一個(gè)多分支,判斷第一個(gè)條件結(jié)果為True后,執(zhí)行下面的語句塊,結(jié)束后跳出整個(gè)“if-elif-else”結(jié)構(gòu),運(yùn)行結(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語言的時(shí)候這個(gè)地方就搞混了。
到此這篇關(guān)于淺談對python中if、elif、else的誤解的文章就介紹到這了,更多相關(guān)python中if、elif、else內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python中的if、else、elif語句用法簡明講解
- python中if-elif-else語句實(shí)例用法講解
- python中if和elif的區(qū)別介紹
- 詳解Python if-elif-else知識(shí)點(diǎn)
- Python中if elif else及縮進(jìn)的使用簡述
- 巧妙使用Python裝飾器處理if...elif...else
- Python中判斷語句入門指南(if?elif?else語句)
- 理解Python數(shù)據(jù)離散化手寫if-elif語句與pandas中cut()方法實(shí)現(xiàn)
- Python中if和elif的用法示例及區(qū)別詳解
相關(guān)文章
python3 BeautifulSoup模塊使用字典的方法抓取a標(biāo)簽內(nèi)的數(shù)據(jù)示例
這篇文章主要介紹了python3 BeautifulSoup模塊使用字典的方法抓取a標(biāo)簽內(nèi)的數(shù)據(jù),結(jié)合實(shí)例形式Fenix了python3 BeautifulSoup模塊進(jìn)行數(shù)據(jù)的抓取相關(guān)操作技巧,需要的朋友可以參考下2019-11-11
將TensorFlow的模型網(wǎng)絡(luò)導(dǎo)出為單個(gè)文件的方法
本篇文章主要介紹了將TensorFlow的網(wǎng)絡(luò)導(dǎo)出為單個(gè)文件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04
一文帶你了解Python協(xié)程的詳細(xì)解釋以及例子
協(xié)程不是計(jì)算機(jī)提供的,計(jì)算機(jī)只提供:進(jìn)程、線程。協(xié)程是人工創(chuàng)造的一種用戶態(tài)切換的微進(jìn)程,使用一個(gè)線程去來回切換多個(gè)進(jìn)程,本文就來通過一些示例和大家詳細(xì)聊聊Python中的協(xié)程吧2023-03-03
基于python模擬TCP3次握手連接及發(fā)送數(shù)據(jù)
這篇文章主要介紹了基于python模擬TCP3次握手連接及發(fā)送數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Flask創(chuàng)建并運(yùn)行數(shù)據(jù)庫遷移的實(shí)現(xiàn)過程
Flask創(chuàng)建并運(yùn)行數(shù)據(jù)庫遷移的過程是一個(gè)涉及多個(gè)步驟的操作,旨在幫助開發(fā)者在開發(fā)過程中管理數(shù)據(jù)庫模式的變化,而不需要手動(dòng)地刪除和重建數(shù)據(jù)庫表,從而避免數(shù)據(jù)丟失,以下是一個(gè)詳細(xì)的步驟說明,需要的朋友可以參考下2024-09-09
python 實(shí)現(xiàn)提取某個(gè)索引中某個(gè)時(shí)間段的數(shù)據(jù)方法
今天小編就為大家分享一篇python 實(shí)現(xiàn)提取某個(gè)索引中某個(gè)時(shí)間段的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02

