標籤:選擇 else 說明 計算 iter 隊列 fun 沒有 序列
控制流程語句
在 Python 中有三種控制流程語句——if
、for
和 while
。
if
語句
if
語句用以檢查條件:如果 條件為真(True),我們將運行一塊語句(稱作 if-block 或 if塊),否則 我們將運行另一塊語句(稱作 else-block 或 else 塊),其中 else 從句是可選的。
例子:
#Python if.pynumber = 23guess = int(input(‘Enter an integer:‘))if guess == number: # 新塊從這裡開始 print(‘Congratulations, you guessed it.‘) print(‘(but you do not win any prizes!)‘) # 新塊在這裡結束elif guess < number: # 另一代碼塊 print(‘No, it is a little higher than that‘) # 你可以在此做任何你希望在該代碼塊內進行的事情else: print(‘No, it is a little lower than that‘) # 你必須通過猜測一個大於(>)設定數的數字來到達這裡。print(‘Done‘)# 這最後一句語句將在# if 語句執行完畢後執行。
輸出:
# python if.pyEnter an integer : 50No, it is a little lower than thatDone# python if.pyEnter an integer : 22No, it is a little higher than thatDone# python if.pyEnter an integer : 23Congratulations, you guessed it.(but you do not win any prizes!)Done
它是如何工作的
在這個程式中,我們根據使用者猜測的數字來檢查這一數字是否是我們之前所設定的。我們將變數number 設為任何我們所希望的整數,例如23
,然後,我們通過input()
函數來擷取使用者的猜測數。所謂函數是一種可重複使用的程式。
input()
函數將以字串的形式返回我們所輸入的內容。然後我們通過int
將這個字串轉換成一個整數並將其儲存在變數 guess
中。實際上,int
是一個類(Class)
,我們可以使用它將一串字串轉換成一個整數。
接下來,我們將使用者提供的猜測數與我們所選擇的數字進行對比,如果它們相等,我們就列印一條成功資訊。
然後,我們檢查猜測數是否小於我們設定的數字,如果是,我們將告訴使用者他們必須猜一個更高一些的數字。在這裡我們使用的是elif
語句,它們實際上將兩個相連的if else-if else
語句合并成一句 if-elif-else
語句。
當 Python 完整執行了if
語句及與其相關的elif
和 else
子句後,它將會移動至包含if
語句的代碼塊的下一句語句中。在本例中,也就是主代碼塊(程式開始執行的地方),其下一句語句就是 print(‘Done‘)
語句。
在完成這些工作後,Python 會發現已行至程式末尾並宣告工作的完成。
注意:
- 在這裡我們使用縮排來告訴 Python 哪些語句分別屬於哪個塊,這便是為什麼在 Python 中縮排如此重要。
if
、elif
和 else
語句在結尾處包含一個冒號——我們藉此向 Python 指定接下來會有一塊語句在後頭。
- 你可以在
if
塊的 一個 if 語句中設定另一個if
語句,並可以如此進行下去——這被稱作嵌套的if
語句。
elif
和else
部分都是可選的,一個最小規模且有效 if 語句是這樣的:
if True: print(‘Yes, it is true‘)
while
語句
while
語句能夠讓你在條件為真的前提下重複執行某塊語句,while
語句是 迴圈(Looping)
語句的一種, while
語句同樣可以擁有 else
子句作為可選選項。
例子:
#Python while.pynumber = 23running = Truewhile running: guess = int(input(‘Enter an integer:‘)) if guess == number: print(‘Congratulations, you guessed it.‘) # 這將導致 while 迴圈中止 running = False elif guess < number: print(‘No, it is a little higher than that.‘) else: print(‘No, it is a little lower than that.‘)else: print(‘The while loop is over.‘) # 在這裡你可以做你想做的任何事print(‘Done‘)
輸出:
#Python while.pyEnter an integer:50No, it is a little lower than that.Enter an integer:22No, it is a little higher than that.Enter an integer:23Congratulations, you guessed it.The while loop is over.Done
它是如何工作的?
在這一程式中,我們依舊通過猜數遊戲來示範,不過新程式的優點在於能夠允許使用者持續猜測直至他猜中為止——而無需像if
所做的那樣,每次猜測都要重新運行程式。
首先我們將 input
與if
語句移到 while 迴圈之中,並在 while
迴圈開始前將變數running
設定為True
。程式開始時,我們首先檢查變數running
是否為True
,之後再執行相應的 while
塊。在這一代碼塊被執行之後,將會重新對條件進行檢查,在本例中也就是running
變數。如果它依舊為True
,我們將再次執行 while
塊,否則我們將繼續執行可選的else
塊,然後進入到下一個語句中。
else
代碼塊在 while 迴圈的條件變為 False
時開始執行;如果 while 迴圈中存在一個 else 代碼塊,它將總是被執行,除非你通過 break 語句來中斷這一迴圈。
True
和False
被稱作布爾(Boolean)
型,你可以將它們分別等價地視為1
與0
。
for 迴圈
for...in
語句是另一種迴圈語句,其特點是會在一系列對象上進行迭代(Iterates),意即它會遍曆序列中的每一個項目。
例子:
# Python for.pyfor i in range(1, 5): print(i)else: print(‘The for loop is over‘)
輸出:
1234The for loop is over
它是如何工作的?
我們通過內建的range
函數產生這一數字序列,使用 range
時,需要提供兩個數字,range
將會返回一個數字序列,從第一個數字開始,至第二個數字結束。例子:range(1,5)
將輸出序列[1, 2, 3, 4]
,在預設情況下,range
將會以1
逐步遞增,如果我們向 range
提供第三個數字,則這個數字將成為逐步遞增的加數。舉個例子來說明,range(1,5,2)
將會輸出[1, 3]
。
然後 for
迴圈就會在這一範圍內展開遞迴——for i in range(1,5)
等價於 for i in [1,2, 3, 4]
,這個操作將依次將隊列裡的每個數字(或是對象)分配給i
,一次一個,然後以每個i
的值執行語句塊,在本例中,我們這一語句塊所做的就是列印出這些值。
注意:
range(n,m)
這一序列擴充直到第m-1
個數字,也就是說,它不會包括第m
個數字在內。
range()
每次只會產生一個數字,如果你希望獲得完整的數字列表,要在使用range()
時調用list()
。例如下面這樣:list(range(5))
,它將會返回[0, 1, 2,3, 4]
。
else
部分是可選的,當迴圈中包含他時,它總會在for
迴圈結束後開始執行,除非程式遇到了break
語句。
break 語句
break
語句用以中斷(Break)
迴圈語句,也就是中止迴圈語句的執行,即使迴圈條件沒有變更為False
,或隊列中的項目尚未完全迭代時依舊中斷語句。
注意:
如果你 中斷 了一個for
或while
迴圈,任何相應迴圈中的else
塊都將不會被執行。
例子:
#Python break.pywhile True: s = input("Enter something:") if s == "quit": break print("Length of the string is",len(s))print("Done")
輸出:
Enter something:Programming is funLength of the string is 18Enter something:When the work is doneLength of the string is 21Enter something:if you wanna make your work also fun:Length of the string is 37Enter something:use Python!Length of the string is 11Enter something:quitDone
它是如何工作的?
通過檢查使用者輸入的是否是 quit
這一特殊條件來判斷是否應該終止程式。我們通過中斷迴圈並轉進至程式末尾來結束這一程式。
輸入字串的長度可以通過內建的 len
函數來計算。
注意:
break
語句同樣可以適用於for
迴圈。
continue 語句
continue
語句用以告訴 Python 跳過當前迴圈塊中的剩餘語句,並繼續該迴圈的下一次迭代。
輸入:
#Python continue.pywhile True: s = input(‘Enter something:‘) if s == "quit": break if len(s)<3: print("Too small") continue print("Input is of sufficient length")
輸出:
Enter something:1Too smallEnter something:12Too smallEnter something:123Input is of sufficient lengthEnter something:quit
它是如何工作的?
在本程式中,我們讀取使用者的輸入,只有在輸入的字串長度小於3
字元我們才會對其進行處理。為此,我們使用內建的len
函數和來擷取字串的長度,如果其長度小於3
,我們便通過使用 continue
語句跳過代碼塊中的其餘語句。否則,迴圈中的剩餘語句將被執行。
注意:
continue
語句同樣能用於 for
迴圈。
總結
我們已經瞭解了三種控制流程語句—— if
, while
和 for
——及其相關的break
與continue
語句是如何工作的。這些語句是 Python 中一些最常用的部分,因此,熟練使用它們是必要的。
Python-控制流程語句