Python-控制流語句
控制流語句
在 Python 中有三種控制流語句——if
、for
和 while
。
if
語句
if
語句用以檢查條件:如果 條件為真(True),我們將運行一塊語句(稱作 if-block 或 if塊),否則 我們將運行另一塊語句(稱作 else-block 或 else 塊),其中 else 從句是可選的。
例子:
#Python if.py number = 23 guess = 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.py
Enter an integer : 50
No, it is a little lower than that
Done
# python if.py
Enter an integer : 22
No, it is a little higher than that
Done
# python if.py
Enter an integer : 23
Congratulations, 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.py
number = 23
running = True
while 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.py
Enter an integer:50
No, it is a little lower than that.
Enter an integer:22
No, it is a little higher than that.
Enter an integer:23
Congratulations, 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.py
for i in range(1, 5):
print(i)
else:
print(‘The for loop is over‘)
輸出:
1
2
3
4
The 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.py
while True:
s = input("Enter something:")
if s == "quit":
break
print("Length of the string is",len(s))
print("Done")
輸出:
Enter something:Programming is fun
Length of the string is 18
Enter something:When the work is done
Length of the string is 21
Enter something:if you wanna make your work also fun:
Length of the string is 37
Enter something:use Python!
Length of the string is 11
Enter something:quit
Done
它是如何工作的?
通過檢查用戶輸入的是否是
quit
這一特殊條件來判斷是否應該終止程序。我們通過中斷循環並轉進至程序末尾來結束這一程序。輸入字符串的長度可以通過內置的
len
函數來計算。
註意:
break
語句同樣可以適用於for
循環。
continue 語句
continue
語句用以告訴 Python 跳過當前循環塊中的剩余語句,並繼續該循環的下一次叠代。
輸入:
#Python continue.py
while 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:1
Too small
Enter something:12
Too small
Enter something:123
Input is of sufficient length
Enter something:quit
它是如何工作的?
在本程序中,我們讀取用戶的輸入,只有在輸入的字符串長度小於
3
字符我們才會對其進行處理。為此,我們使用內置的len
函數和來獲取字符串的長度,如果其長度小於3
,我們便通過使用continue
語句跳過代碼塊中的其余語句。否則,循環中的剩余語句將被執行。
註意:
continue
語句同樣能用於for
循環。
總結
我們已經了解了三種控制流語句—— if
, while
和 for
——及其相關的break
與continue
語句是如何工作的。這些語句是 Python 中一些最常用的部分,因此,熟練使用它們是必要的。
Python-控制流語句