Python循環語句代碼逐行詳解:while、for、break和continue

2021-02-19 大數據DT


導讀:循環語句是指重複執行同一段代碼塊,通常用於遍歷集合或者累加計算。Python中的循環語句有while語句、for語句。

循環語句是程序設計中常用的語句之一。任何程式語言都有while循環,Python也不例外。while循環的格式如下所示。

1while(表達式):
2    …
3else:
4    …

while循環的執行過程:當循環表達式為真時,依次執行while中的語句。直到循環表達式的值為False,程序的流程轉到else語句。其中else子句可以省略,表達式兩側的括號也可以省略。注意:while循環中的else子句也屬於循環的一部分,最後一次循環結束後將執行else子句。下面這段代碼演示了while循環的使用。程序首先要求輸入5個數字,然後依次輸出這5個數字。

1# while循環
2numbers = input("輸入幾個數字,用逗號分隔:").split(",")
3print(numbers)
4x = 0
5while x < len(numbers):    # 當x的值小於輸入字數的個數的時候,執行循環內容    
6    print (numbers[x])
7    x += 1                  # 一個循環結束時給x加1

第2行代碼使用input()捕獲輸入。按照提示輸入5個數字,並用逗號分隔。input()根據輸入的逗號,生成一個列表。下面【例3-6】中的這段代碼演示了else子句在while循環中的使用。當變量x的值大於0時,執行循環,否則輸出變量x的值。

1# 帶else子句的while循環
2x = float(input("輸入x的值:"))   # 接收用戶輸入的數字並轉換為float類型
3i = 0
4while(x  != 0):                  # Python 3中的不等於不再使用<>,一律使用!=
5    if(x > 0):
6        x -= 1                  # 如果x大於0,則減1
7    else:
8        x += 1                 # 如果x小於0,則加1
9    i = i + 1
10    print( "第%d次循環:%f" %(i, x))
11else:
12    print ("x等於0:", x)

第4行代碼,給出循環條件x != 0。如果x不等於0,則執行第5行代碼;否則,執行else子句的內容。第11行代碼,循環結束,else子句輸出變量x的值。輸出結果(假設輸入數字為0):x等於0:0。在使用循環語句時,應注意循環表達式的布爾值,避免出現死循環。死循環是指循環條件永遠為真的循環。例如:

1i = 1
2while i > 0:     # i永遠大於0
3    i = i + 1
4    print(i)

for循環用於遍歷一個集合,依次訪問集合中的每個項目。for循環的格式如下所示。

1for 變量 in 集合:
2    …
3else:
4    …

for…in…循環的執行過程:每次循環從集合中取出一個值,並把該值賦值給變量。集合可以是元組、列表、字典等數據結構。其中else子句可以省略。注意:for循環中的else子句也屬於循環的一部分,最後一次循環結束後將執行else子句。for…in…循環通常與range()函數一起使用,range()返回一個列表,for…in…遍歷列表中的元素。range()函數的聲明如下:

class range(object)
   range(stop) -> range object
range(start, stop[, step]) -> range object

range()返回一個range對象,列表的元素值由3個參數決定:參數start表示列表開始的值,默認值為0;參數stop表示列表結束的值,該參數不可缺少;參數setp表示步長,即每次遞增或遞減的值,默認值為1。下面【例3-7】中的這段代碼遍歷range()生成的列表,過濾出正數、負數和0。

1# for in語句
2for x in range(-1, 2):
3    if x > 0: 
4        print ("正數:",x)
5    elif x == 0 : 
6        print ("零:",x)
7    else:
8        print ("負數:",x)
9else:
10    print ("循環結束")

第2行代碼遍歷range(-1,2)生成的列表。range(-1,2)返回的3個數字分別為-1、0、1。每次循環結束,變量x的值依次為-1、0、1。第8行代碼,輸出負數的值。輸出結果為「負數:-1」。第9行代碼並沒有結束for循環,else子句執行後循環才結束。輸出結果為「負數:-1」。

for(表達式1; 表達式2; 表達式3) 
語句塊

Python不支持這樣的for循環。如果需要編寫類似功能的循環,可以使用while循環。例如:

1x = 0
2while x < 5:
3    print(x)
4    x = x + 2

while循環的寫法比較瑣碎,需要比較判斷。因此,對此也可以使用for循環,藉助range()函數來實現。例如:

1for x in range(0, 5, 2):
2    print (x)

輸出的數字在[0,5)這個區間,不包括5。每次循環結束,x的值加2。輸出結果:這裡只用了兩行代碼就實現了傳統for循環。如果要用條件表達式作為循環的條件,可以構造range()函數來實現。break語句可以使程序跳出循環語句,從而執行循環體之外的程序,即break語句可以提前結束循環。例如,模擬switch分支結構使用了break語句。

1operator = "+"
2x = 1
3y = 2
4for case in switch(operator):   # switch只能用於for... in...循環中
5    if case('+'):
6        print (x + y)
7        break
8    if case('-'):
9        print (x - y)
10        break
11    if case('*'):
12        print (x * y)
13        break
14    if case('/'):
15        print (x / y)
16        break
17    if case():                      # 默認分支
18        print ("")

第7行代碼中使用了break。當變量operator的值為「+」,則執行表達式x + y,然後中斷switch分支結構,後面的case分支都不會執行。此時輸出結果為3。後面的break作用相同。當匹配到某個case後,程序將跳出switch。如果第一個case不使用break子句,程序將輸出兩個值,分別是3和-1。因為執行完輸出表達式x + y後,分支結構並沒有中斷,程序將流轉到下面一個case。然後繼續計算表達式x – y的值,遇到後面的break語句才退出分支結構。break語句在循環結構中也有類似的作用。【例3-8】中的這段代碼將從0到99中查找用戶輸入的值。

1x = int(input("輸入x的值:"))
2y = 0
3for y in range(0, 100):
4    if x == y:
5        print ("找到數字:", x)
6        break
7else:
8    print("沒有找到")

第1行代碼捕獲用戶輸入的值,並把該值轉換為int類型,賦值給變量x。第2行代碼定義一個變量y,變量y用於暫存需要遍歷的列表的值。第3行代碼使用for…in…循環遍歷range(0, 100)返回的列表。range(0, 100)的返回值為0、1、2、…、99。第4行代碼判斷輸入的值是否等於列表中的值。如果條件成立,輸出查找到的數字,並立即退出循環。循環結束,後面的else子句將不會被執行。第7行代碼,當沒有找到輸入的值時,else子句後面的代碼將被執行。注意:break語句不能運行在循環體或分支語句之外,否則,Python解釋器將提示如下錯誤。

SyntaxError: 'break' outside loop

continue語句也是用來跳出循環的語句,但是與break不同的是,使用continue語句不會跳出整個循環體,只是跳出當前的循環,然後繼續執行後面的循環。

1x = 0
2for i in [1,2,3,4,5]:
3    if x == i:
4    continue
5x  += i
6print("x的值為", x)                                                        

第2行代碼使用for...in...語句遍歷列表[1,2,3,4,5]。第3行代碼將x與i進行比較,如果x與值i相等,則執行第4行的continue語句,停止當前循環,即不再執行第5行代碼,繼續執行下一個循環。

關於作者:黃傳祿,高級講師、管理軟體開發工程師、資料庫庫系統工程師、信息系統管理工程師。有10多年的一線教學經驗和高端培訓經驗,出版多部技術專著,獲得多個軟體著作權。

本文摘編自《零基礎學Python》(第2版),經出版方授權發布。推薦語:為了能夠使廣大讀者既能夠掌握Python語言的基礎知識,又能夠將Python語言應用於某個特定的領域(如Web開發),本書介紹了與Python相關的方方面面,每個章節都提供了詳盡的例子,結合實例講解各個知識點。涉及的程序代碼都給出了詳細的注釋,有助於讀者輕鬆領會程序開發的精髓,快速提高開發技能。PPT | 讀書 | 書單 | 硬核 | 乾貨 講明白 | 神操作大數據 | 雲計算 | 資料庫 | Python | 可視化AI | 人工智慧 | 機器學習 | 深度學習 | NLP5G | 中臺 | 用戶畫像 1024 | 數學 | 算法 數字孿生

相關焦點

  • Python基礎-While循環語句
    1. while循環語句作用:實現特定代碼重複執行格式:while 條件: 重複執行的一行或多行代碼>解釋:Python 每次會判斷 while 關鍵字後面的條件是否為真, 如果為真, 則執行 while 下面的一行或多行代碼, 直到不滿足條件, 循環執行結束.
  • Python:break語句與continue語句
    在執行循環代碼的過程中,有的時候可能不需要一直循環到結束,在for循環遍歷循環中,我們不需要等到遍歷結束就要終止循環;或者在while條件循環中不等到條件判斷為False的時候終止循環。這時候就會用到 break 與 continue 語句,break語句與continue語句在Python循環中分別有著不同的用法。
  • python系列15:跳出循環:break與continue
    前言在實際使用的過程中會有其他的問題,比如如果只想列印str_condiion = 'I like python'中的字母,而不列印空格呢(可以考慮if判斷等)?如果列印過程中碰到字母o即結束循環?那應該怎麼做呢?前面學習了for與while循環,也大致了解了兩者的差異,也清楚了在不同場景下各自的優先選擇誰。
  • Python中break語句用法詳解!
    這篇文章主要介紹了詳解Python中break語句的用法,是Python入門的呼出知識,需要的朋友可以參考下 在Python中的break
  • python代碼結構:使用if語句、while循環和for迭代,附詳細說明!
    注釋可以單獨一行,也可與代碼同行,同行放在代碼後面。特殊說明:(1)Python沒有多行注釋的符號。需要明確地在注釋部分的每一行開始處加上一個#。如果在該長度下寫不完代碼,可以使用連接符\(反斜線)。把它放在一行的技術位置,python將其解釋為同一行。3.使用if、elif和else進行比較兩個等號(==)是用來判斷相等的,而一個等號(=)是把某個值賦給一個變量。
  • python中continue和break的區別、乘法表
    python中continue和break的區別num = 1while num <= 5:
  • Python編程10:跳出循環結構之break和continue
    ,它有for循環和while循環兩種,其中while循環,是在滿足某個條件時會一直循環。但有時我們也想能夠中途離開循環,也就是在for循環結束計數之前,或者while循環條件為真之前,能退出循環。Python提供了兩種方法:使用continue關鍵字和使用break關鍵字。在使用這兩個關鍵字之前,我們先來看一段很簡單的代碼(圖1)。
  • python邏輯控制總結——break,continue和pass
    今天,我們通過while來實現一個人工智慧……python學說話題目:從控制臺接受用戶的輸入內容,並將內容原樣輸出。當用戶輸入「再見」時,輸出「再見」後程序結束。代碼如下:python break 和 continue如demo中所展示,通過while True的形式,創建了一個無限循環後,在循環體內,可以在特定條件下,通過break語句結束循環。有時候,我們可以不希望結束循環,而是希望不執行循環體的後續內容,而直接進入下一個循環。這時候,可以使用continue。如設定「日本」為違禁詞。
  • while循環簡介(3)
    使用break退出循環要立刻退出while循環,不再運行循環中餘下的代碼,也不管條件測試的結果如何,可使用break語句。break語句用於控制程序流程,可使用它來控制哪些代碼運行,哪些代碼不執行,從而讓程序按照你的要求執行你的代碼。
  • Python while循環語句詳解
    Python 中,while 循環和 if 條件分支語句類似,即在條件(表達式)為真的情況下,會執行相應的代碼塊。
  • python循環語句,while循環嵌套列印九九乘法表
    for循環的格式for 臨時變量 in 列表或者字符串等:循環滿足條件時執行的代碼else:循環不滿足條件時執行的代碼break和continue':breakprint(x)小總結:break的作用:用來結束整個循環2. continue<1> for循環
  • JS(5)——循環語句、break、continue關鍵字、測試程序性能
    循環語句:通過循環語句可以反覆的執行一段代碼多次while循環語法:
  • python入門第八課:while循環和用戶輸入
    本教程使用的課本是《Python編程:從入門到實踐》,作者:[美] Eric Matthes本節介紹python中如何與用戶進行交互,同時學習另外一個循環運算符while。和continue有時候需要提前終止循環,可以用break語句來終止。
  • Python基礎教程之循環語句的使用
    # 循環## 目標* 程序的三大流程* while 循環基本使用* break 和 continue i += 1print("0~100之間偶數求和結果 = %d" % result)```## 03. break 和 continue> `break`
  • 零基礎學習 Python 之 while 循環語句
    同時寫這個教程也算是對自己之前所學知識的一個鞏固和提高,喜歡的朋友們可以點個關注,有問題歡迎隨時和我交流。本文所有的代碼編寫均是Python3 版本。首先是將變量 cnt 的值賦為 1, while 循環比較 cnt 的值和 5 的大小關係,如果 cnt 小於等於 5 的話繼續執行。在循環的內部列印 cnt 的值,然後使用 cnt += 1 對 cnt 進行自增操作,返回到循環的開始位置,繼續比較 cnt 和 5 的大小關係。
  • Python中的while循環
    # Python 編程中 while 語句用於循環執行程序,即在某條件下,循環執行某段程序,以處理需要重複處理的相同任務。 # while中執行語句可以是單個語句或語句塊。判斷條件可以是任何表達式,任何非零、或非空(null)的值均為true。當判斷條件假 false 時,循環結束。
  • C++關鍵字:break和continue在循環語句中的使用
    /***************************************************************************關鍵字:break和continue的演示使用在任何一個while,do_while或for循環的結構體中,都能夠使用break和continue
  • Pyhon之While循環語句
    利用while語句,可以讓代碼塊一遍又一遍的執行,只要while語句的條件為True。while子句)break和countinue的區別break:讓執行跳出while循環子句,只要遇到break語句,立即退出while循環子句continue: 用於循環內部,只要遇到continue語句
  • Python continue的用法
    和 break 語句相比,continue 語句的作用則沒有那麼強大,它只會終止執行本次循環中剩下的代碼,直接從下一次循環繼續執行。
  • break以及continue語句
    HTML5學堂:ECMAScript當中存在著break以及continue兩種語句,這兩種語句通常用於循環語句以及分支語句當中。