Python 死循環和嵌套循環


何為死循環:在編程中,一個無法靠自身的控制終止的循環被稱為死循環。

死循環的使用:死循環並非一無是處,C語言中死循環while true或 while 1 是單片機編程的普遍用法,死循環一直運行等待中斷程序發生,然后去處理中斷程序。
在Python中,我們也可以利用死循環完成特定功能。
下面這段死循環程序可以用來一直捕捉輸入異常。
while True:
    try:
        x=int(input("Please enter a number:"))
        break
    except ValueError:
        print("Oops,that was no valid number. Try again ...")
后測循環:

假設程序需要用戶輸入一個非負數
如果輸入錯誤,重新提示用戶輸入直到得到一個有效值。
偽代碼如下:
重復執行以下語句
接受外部輸入數據
直到外部輸入為負值為止
循環不斷接收輸入,直到接受到合法的值為止
條件判斷在循環體后面,稱之為后測循環(即前面提到過的“直到型循環”)
后測循環至少執行一次循環體

后測循環實現:
Python沒有后測循環語句,但可以通過while間接實現。
思想是設計一個循環條件,直接進入循環體,循環至少執行一次,相當於后測循環。
  number=-1
  while number<0:
     number=eval(input("Enter a positive number:"))

break語句也可以用來實現后測循環:
  while True:
      number=eval(input("Enter a positive number:"))
      if x>=0:break #如果數字有效則跳出循環

#while語句體永遠執行,if條件決定循環退出
另外:if語句體只包含一個語句時,break可以跟在if同一行。這種結構被稱為循環出口。

#后測循環代碼1
在前面的while版本的后測循環代碼中添加一個if語句,使得在有效輸入時不顯示警告。
修改代碼如下:
  number=-1
      while number<0:
        number=eval(input("Enter a positive number:"))
        if number<0:
           print("The number you entered was not positive")
在上面這段代碼中,合法性檢驗重復了兩次。

 


#后測循環代碼2
限定合法性檢驗只判斷一次,需為if添加匹配的else語句來實現
修改后的代碼如下:
    while True:
         number=eval(input("Enter a positive number:"))
          if x>=0:
              break ##如果數字有效則跳出循環
          else:
              print("The number you entered was not positive")
 
        

半路循環:運用break中途退出循環,循環出口在循環體中部,被稱為半路循環

 
        
while True:
    number=eval(input("Enter a positive number:"))
    if x>=0:break  #跳出循環
    print("The number you entered was not positive")

半路循環-哨兵:半路循環退出實現哨兵循環的一般模式:

 
        
While True:
   Get next data item
   if the item is the sentinel :break
   process the item

我們注意:break語句是一種很方便的設計,但是,任何算法都可以使用不包含break語句的其他語句來實現
在程序中是否使用break語句,跟個人編程風格有關。
應避免在一個循環體內使用過多的break語句。因為當循環有多個出口的時候,程序邏輯就顯得不夠清晰了。


免責聲明!

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



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