Python 中for...esle和while...else語法


    Python的for...else和while...else語法,這是Python中最不常用,最為誤解的語法特性之一。

    Python中的for、while循環都有一個可選的else分支(類似if語句和try語句那樣),在循環迭代正常完成之后執行。換句話說,如果我們不是除正常以外的其他方式退出循環,那么else分支將被執行。也就是在循環體內沒有break語句、沒有return語句,或者沒有異常出現。

    1.break情況

    下面我們來嘗試在循環中執行break退出

    lucky_number.py

lucky_num = 19
#首先定義一個幸運數字,這樣條理比較清晰
#action = True
guess_count = 0
while guess_count < 3:
#限制用戶輸入
input_num = int(input("Input the guess num: "))
#if lucky_num == input_num:
#print("Bingo!")
#action = False
#break強制終端循環語句,避免陷入死循環之中
if input_num > lucky_num:
print("The real number is smalller!")
elif input_num < lucky_num:
print("The real number is bigger...")
else:
print("Bjngo!...")
break
guess_count += 1
else:
print("Too many retrys!")
首先我們執行三次沒有測對的情況如下:
Input the guess num: 1
The real number is bigger...
Input the guess num: 2
The real number is bigger...
Input the guess num: 100
The real number is smalller!
Too many retrys!
從結果上可以看出,最后執行了else分支語句(Too many retrys!),提示用戶輸入過多的次數,正常情況下是執行else語句的。下面我們來看
一下非正常退出情況下:
用戶猜測正確:
Input the guess num: 1
The real number is bigger...
Input the guess num: 19
Bjngo!...
從上面結果我們可以看出,當用戶猜對數字后,break了一下,推出了while...else語句,else語句沒有正常執行。
2.return情況

#首先定義一個幸運數字,這樣條理比較清晰
#action = True

#限制用戶輸入,如果三次沒有猜對則退出循環
def count():
lucky_num = 19
guess_count = 0
while guess_count < 3:
input_num = int(input("Input the guess num: "))
#if lucky_num == input_num:
#print("Bingo!")
#action = False
#break強制終端循環語句,避免陷入死循環之中
if input_num > lucky_num:
print("The real number is smalller!")
elif input_num < lucky_num:
print("The real number is bigger...")
else:
print("Bjngo!...")
return guess_count

guess_count += 1
else:
print("Too many retrys!")

numbers = count()
print(numbers)

    由於rerturn語句只能在函數和類中使用,因此我定義了一個函數,看我們輸入正確的時候是否能夠終端else語句。
(1).調用這個函數,輸入三次不正確
Input the guess num: 1
  The real number is bigger...
  Input the guess num: 1
  The real number is bigger...
  Input the guess num: 1
  The real number is bigger...
  Too many retrys!
  None
從結果中可以看出來,當我們輸入三次的時候,else語句正常運行,因為我們輸入的都不正常,不影響else語句
(2).用戶猜測正確的情況:
Input the guess num: 1
  The real number is bigger...
  Input the guess num: 19
  Bjngo!...
  1
從結果可以看出,用戶第一次猜測錯誤,第二猜對了,然后把guess_count返回給了變量numbers,沒有運行else語句。
結論:如果我們想在用戶輸入正確的時候退出循環,輸入次數太多的時候提示用戶,那么可以使用while...else...break語句,在用戶
輸入次數
超過限制沒有答對的時候提醒用戶;答對了的時候退出循環,不打印提醒,那么可以在用戶輸入正確的時候使用break進行中斷。
牢記:Python中的for、while循環都有一個可選的else分支(類似if語句和try語句那樣),在循環迭代正常完成之后執行。換句話說,如果我們
不是除正常以外的其他方式退出循環,那么else分支將被執行
也就是在循環體內沒有break語句、沒有return語句,或者沒有異常出現。










免責聲明!

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



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