1. 程式人生 > >Python-控制流語句

Python-控制流語句

pin 字符 函數 判斷 == 即使 fun block 變更

控制流語句

在 Python 中有三種控制流語句——ifforwhile

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語句及與其相關的elifelse子句後,它將會移動至包含if語句的代碼塊的下一句語句中。在本例中,也就是主代碼塊(程序開始執行的地方),其下一句語句就是 print(‘Done‘) 語句。

在完成這些工作後,Python 會發現已行至程序末尾並宣告工作的完成。

註意:
  • 在這裏我們使用縮進來告訴 Python 哪些語句分別屬於哪個塊,這便是為什麽在 Python 中縮進如此重要。
  • ifelifelse 語句在結尾處包含一個冒號——我們借此向 Python 指定接下來會有一塊語句在後頭。
  • 你可以在 if塊的 一個 if 語句中設置另一個if 語句,並可以如此進行下去——這被稱作嵌套的if語句。
  • elifelse 部分都是可選的,一個最小規模且有效的 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所做的那樣,每次猜測都要重新運行程序。

首先我們將 inputif語句移到 while 循環之中,並在 while 循環開始前將變量running設置為True。程序開始時,我們首先檢查變量running是否為True ,之後再執行相應的 while 塊。在這一代碼塊被執行之後,將會重新對條件進行檢查,在本例中也就是running 變量。如果它依舊為True,我們將再次執行 while 塊,否則我們將繼續執行可選的else 塊,然後進入到下一個語句中。

else代碼塊在 while 循環的條件變為 False 時開始執行;如果 while 循環中存在一個 else 代碼塊,它將總是被執行,除非你通過 break 語句來中斷這一循環。

TrueFalse 被稱作布爾(Boolean)型,你可以將它們分別等價地視為10

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,或隊列中的項目尚未完全叠代時依舊中斷語句。

註意:

如果你 中斷 了一個forwhile循環,任何相應循環中的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循環。

總結

我們已經了解了三種控制流語句—— ifwhilefor——及其相關的breakcontinue 語句是如何工作的。這些語句是 Python 中一些最常用的部分,因此,熟練使用它們是必要的。

Python-控制流語句