像其它語言一樣,Python也有條件分支。
例如,輸入用戶年齡,可能需要判斷是否成年,並做出不同反應。這就需要用到條件分支。
if條件分支
if條件分支的一般格式如下:
if condition:
statements
它的含義是:如果condition為True,則執行statements。通常condition都是一個結果為bool的表達式(前面說過,bool類型在條件判斷中很常用)。
例如,有一個表示年齡的變量age,需要通過它判斷是否成年(age>=18)。如果成年,輸出信息。
if age >= 18: print('You\'re an adult.')
這里有一個小知識:對於'包裹的字符串,如果字符串里含有',為了讓Python將'看作普通字符而不是字符串的結束標識,需要用\'。
要判斷是否未成年也很簡單,把條件age>=18改成age<18就可以了:
if age < 18: print('You\'re a teenager.')
if else條件分支
還是上面的例子,可能你希望在age>=18時,輸出一些信息,在age<18時,輸出一些其它信息。你可能想這么做:
if age >= 18: print('You\'re an adult.') if age < 18: print('You\'re a teenager.')
然而,Python(和其它編程語言)提供了更簡潔的途徑——if else條件分支。其格式如下:
if condition:
statements1
else:
statements2
if age >= 18: print('You\'re an adult.') else: print('You\'re a teenager.')
if elif else條件分支
可能你還覺得不夠,需要判斷該年齡是成人、青少年還是兒童。你可能想,可以這樣寫:
if age >= 18: print('You\'re an adult.') else if age >= 13: print('You\'re a teenager.') else: print('You\'re a child.')
首先,如果age>=18為True,輸出"You're an adult.";否則,如果age>=13為True,輸出"You're a teenager";否則,輸出"You're a child"。
但如果判斷再多一些,縮進也會更多,就會很不美觀。因此Python提供了if...elif...else...條件分支:
if age >= 18: print('You\'re an adult.') elif age >= 13: print('You\'re a teenager.') else: print('You\'re a child.')
elif是else if的簡寫。注意這里的else是可選的。
如果還需要判斷是否是嬰兒呢?沒關系,繼續加elif:
if age >= 18: print('You\'re an adult.') else if age >= 13: print('You\'re a teenager.') else if age >= 3: print('You\'re a child.') else: print('You\'re a baby.')
交互模式下的條件分支
如果你在交互模式下輸入條件分支:
>>> age = 15
>>> if age >= 18:
現在按enter,你會發現命令提示符變了:
...
一般情況下,交互模式的提示符為>>>;如果出現代碼塊(例如if、if else、if elif else這些),提示符就會變為...。
在Python中,>>>被稱為第一提示符(primary prompt),...被稱為第二提示符(secondary prompt)。(注:中文是我自己翻譯的)
注意在...后面打代碼,需要至少一個空格的縮進(我習慣上打一個tab):
>>> if a == 0: ... print('zero')
如果像下面這樣:
>>> if a == 0: ... print('zero')
就會有(類似)如下錯誤:
File "<stdin>", line 2 print('zero') ^ IndentationError: expected an indented block
注意打elif和else時是不使用縮進的:
>>> if a != 0: ... print('non zero') ... else: ... print('zero')
要結束一個條件分支,直接在...后面按下enter就可以了:
>>> if a != 0: ... print('non zero') ... >>>
注意第三行是個空行,第四行已經出了條件分支了。
注意
Python條件分支的條件也可以是非bool的類型。這種情況下,Python會將條件的值轉換成bool類型。例如:
if a: print('non zero') else: print('zero')
這里a會被轉換成bool,如果a不為0,轉換為True,否則為False。
小結
1. if條件分支:如果條件為True,則執行if后面的代碼塊,否則不執行。
2. if else條件分支:如果條件為True,則執行if后面的代碼塊,否則執行else后面的代碼塊。
3. if elif else條件分支:執行第一個為True的條件后面的代碼塊,如果沒有為True則執行else后面的代碼塊(如果有)。
4. Python的兩種提示符分別為>>>和...。
5. 在交互模式下,條件分支中的代碼需要縮進,但if/elif/else不用。