Python條件判斷和循環
計算機之所以能做很多自動化的任務,因為它可以自己做條件判斷。
比如,輸入用戶年齡,根據年齡打印不同的內容,在Python程序中,可以用if語句實現:
age = 20
if age >= 15:
print ‘your age is‘, age
print ‘adult‘
print ‘END‘
>
註意:Python代碼的縮進規則。具有相同縮進的代碼被視為代碼塊,上面的3,4行 print 語句就構成一個代碼塊(但不包括第5行的print)。如果 if 語句判斷為 True,就會執行這個代碼塊。
縮進請嚴格按照Python的習慣寫法:4個空格,不要使用Tab,更不要混合Tab和空格,否則很容易造成因為縮進引起的語法錯誤。
//////////if 語句後接表達式,然後用:
表示代碼塊開始。
if -else
當 if 語句判斷表達式的結果為 True 時,就會執行 if 包含的代碼塊:
if age >= 10:
print ‘adult‘
如果我們想判斷年齡在10歲以下時,打印出 ‘小屁孩‘,怎麽辦?可以使用 if -else:
age = 9
if age >= 10:
print ‘kkkk‘
else:
print ‘小屁孩‘
利用 if ... else ... 語句,我們可以根據條件表達式的值為 True 或者 False ,分別執行 if 代碼塊或者 else 代碼塊。
註意: else 後面有個“:”。
if-elif-else
有的時候,一個 if ... else ... 還不夠用。比如,根據年齡的劃分:
條件1:18歲或以上:adult
條件2:6歲或以上:teenager
條件3:6歲以下:kid
我們可以用一個 if age >= 18 判斷是否符合條件1,如果不符合,再通過一個 if 判斷 age >= 6 來判斷是否符合條件2,否則,執行條件3:
這樣寫出來,我們就得到了一個兩層嵌套的 if ... else ... 語句。這個邏輯沒有問題,但是,如果繼續增加條件,比如3歲以下是 baby:
這種縮進只會越來越多,代碼也會越來越難看。
要避免嵌套結構的 if ... else ...,我們可以用 if ... 多個elif ... else ... 的結構,一次寫完所有的規則:
elif 意思就是 else if。這樣一來,我們就寫出了結構非常清晰的一系列條件判斷。
特別註意: 這一系列條件判斷會從上到下依次判斷,如果某個判斷為 True,執行完對應的代碼塊,後面的條件判斷就直接忽略,不再執行了。
思考下面的代碼:
當 age = 8 時,結果正確,但 age = 20 時,為什麽沒有打印出 adult?
如果要修復,應該如何修復?
for循環
list或tuple可以表示一個有序集合。如果我們想依次訪問一個list中的每一個元素呢?比如 list:
如果list只包含幾個元素,這樣寫還行,如果list包含1萬個元素,我們就不可能寫1萬行print。
這時,循環就派上用場了。
Python的 for 循環就可以依次把list或tuple的每個元素叠代出來:
註意: n 這個變量是在 for 循環中定義的,意思是,依次取出list中的每一個元素,並把元素賦值給 n,然後執行for循環體(就是縮進的代碼塊)。
這樣一來,遍歷一個list或tuple就非常容易了。
####################################
班裏考試後,老師要統計平均成績,已知4位同學的成績用list表示如下:
L = [75, 92, 59, 68]
請利用for循環計算出平均成績。
while循環
和 for 循環不同的另一種循環是 while 循環,while 循環不會叠代 list 或 tuple 的元素,而是根據表達式判斷循環是否結束。
比如要從 0 開始打印不大於 N 的整數:
while循環每次先判斷 x < N,如果為True,則執行循環體的代碼塊,否則,退出循環。
在循環體內,x = x + 1 會讓 x 不斷增加,最終因為 x < N 不成立而退出循環。
如果沒有這一個語句,while循環在判斷 x < N 時總是為True,就會無限循環下去,變成死循環,所以要特別留意while循環的退出條件。
##################################
利用while循環計算100以內奇數的和。
1、
2、
########################################
break退出循環
用 for 循環或者 while 循環時,如果要在循環體內直接退出循環,可以使用 break 語句。
比如計算1至100的整數和,我們用while來實現:
while True 就是一個死循環,但是在循環體內,我們還判斷了 x > 100 條件成立時,用break語句退出循環,這樣也可以實現循環的結束。
##############################################
利用 while True 無限循環配合 break 語句,計算 1 + 2 + 4 + 8 + 16 + ... 的前20項的和。
##############################################
continue繼續循環
在循環過程中,可以用break退出當前循環,還可以用continue跳過後續循環代碼,繼續下一次循環。
假設利用for循環計算平均分的代碼:
現在只想統計及格分數的平均分,就要把 n < 60 的分數剔除掉,這時,利用 continue,可以做到當 n < 60的時候,不繼續執行循環體的後續代碼,直接進入下一次循環:
> 註意:break是直接中斷循環,continue是跳過循環體後續代碼,並不是中斷。
#############################################
對已有的計算 0 - 100 的while循環進行改造,通過增加 continue 語句,使得只計算奇數的和:
修改代碼如下:
##############################################
多重循環
在循環內部,還可以嵌套循環,例子:
x 每循環一次,y 就會循環 3 次,這樣可以打印出一個全排列:
A1
A2
A3
B1
B2
B3
C1
C2
C3
###########################################
對100以內的兩位數,請使用一個兩重循環打印出所有十位數數字比個位數數字小的數,例如,23(2 < 3)
如何做?
###########################################
Python條件判斷和循環