上節(jié)課講了if判斷實現(xiàn)條件成立就執(zhí)行某段分支代碼,那么條件不成立,我想讓它執(zhí)行另外一段代碼,怎么做呢?
有個語法叫做else加冒號,else:。然后后面也會跟鎖緊的代碼塊。else的子代碼塊會在前面的if條件不成立的情況下執(zhí)行。
還是拿上章的例子來看,我寫一個else代碼,就是如果我前面的條件成立我就表白,但是條件不成立,就打印一句‘你是個好人!’。
然后我們再來看整段代碼的流程,首先還是執(zhí)行主線代碼,采集條件你熟不是人,性別年齡的三段代碼。然后執(zhí)行到if判斷的時候就會有兩個分支,如果條件成立,則會打印表白的話。我們可以最后加一句‘你這個渣男!’。哪有直接表白的對吧!
如果條件成立,就會跳過else代碼直接回到主線執(zhí)行后面的代碼,‘你這個渣男’。如果條件不成立,直接就執(zhí)行else的子代碼塊。最后整個if判斷的子代碼執(zhí)行完之后則會回到主線繼續(xù)執(zhí)行后面的代碼。
我們來運行看看,首先是條件成立。if條件執(zhí)行完之后,就執(zhí)行最后的主代碼塊,打印‘你這個渣男’。
再來看條件不成立執(zhí)行else代碼。就會直接打印‘你是個好人’。言外之意就是你不滿足女朋友的條件。
不管你if條件判斷的結(jié)果如何,分支的代碼怎么執(zhí)行,最后打印的代碼是主代碼塊,都不會影響執(zhí)行。你再怎么偽裝都掩蓋不了你渣男的身份,是這個意思吧?。?!
關(guān)于if、else我們就講完了,就是滿足條件執(zhí)行一段代碼,不滿足條件執(zhí)行另一段代碼。
接著我們再看另一種情況,在我們的生活中所有的判斷都是非此即彼吧,可能遇到的問題有第一種情況,還有第二、第三、第N種情況。
舉個例子,你兒子考試,你和他說只要你考到100分,就帶你去海洋公園看美人魚(不知道是你想看還是你兒子想看),考到90分以上就帶你兒子去吃大餐,考到60分以上,啥都沒有,不及格就是一頓皮鞭炒肉。
這就有四種情況了,剛剛我們講的if、else就實現(xiàn)不了了,這時候if就有的另外一種語法,叫elif。
elif可以寫無限多個,你想寫多少就寫多少,也就是不管你有多少種情況,都可以使用elif來處理。最后你也可以跟一個剛剛講的else,你可以根據(jù)自己的實際需求來,不過一般都會加上,來處理我們所想到的條件都不成立的情況。
整個運行流暢就是首先判斷if的第一個條件,如果條件成立就會執(zhí)行第一個子代碼塊,然后會直接跳過所有的elif和else,繼續(xù)執(zhí)行主線的代碼,如果第一個條件不成立,就會進(jìn)入下一個elif條件判斷,成立則執(zhí)行對應(yīng)的子代碼塊。之后立即退出判斷回到主線。
如果所有條件都不成立,則會執(zhí)行else的子代碼塊。
我們來把剛剛的例子實現(xiàn)一下,繼續(xù)用input方式實現(xiàn)。最后的不及格直接用else表示。
好,我們先來輸入考了100份的情況,直接打印‘周末帶你去海洋公園!’。
輸入90分以上。
輸入60分以上。
最后輸入不及格。
最后我們總結(jié)一下,if+elif+else的這種用法,最后只會成功運行一個子代碼塊,只要有一個條件成立了,后續(xù)的判斷都不會在做了。如果所有條件都不成立,則只會執(zhí)行else下的子代碼塊。
未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python if多條件判斷