Python教程(2.7)——條件分支


像其它語言一樣,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不用。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM