中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Python循環(huán)語句代碼逐行詳解:while、for、break和continue


導讀:循環(huán)語句是指重復執(zhí)行同一段代碼塊,通常用于遍歷集合或者累加計算。Python中的循環(huán)語句有while語句、for語句。


作者:黃傳祿 張克強 趙越
來源:大數(shù)據(jù)DT(ID:hzdashuju)




01 while循環(huán)

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

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

while循環(huán)的執(zhí)行過程:當循環(huán)表達式為真時,依次執(zhí)行while中的語句。直到循環(huán)表達式的值為False,程序的流程轉(zhuǎn)到else語句。其中else子句可以省略,表達式兩側(cè)的括號也可以省略。

注意:while循環(huán)中的else子句也屬于循環(huán)的一部分,最后一次循環(huán)結(jié)束后將執(zhí)行else子句。

下面這段代碼演示了while循環(huán)的使用。程序首先要求輸入5個數(shù)字,然后依次輸出這5個數(shù)字。

1# while循環(huán)
2numbers = input('輸入幾個數(shù)字,用逗號分隔:').split(',')
3print(numbers)
4x = 0
5while x < len(numbers):    # 當x的值小于輸入字數(shù)的個數(shù)的時候,執(zhí)行循環(huán)內(nèi)容    
6    print (numbers[x])
7    x += 1                  # 一個循環(huán)結(jié)束時給x加1

【代碼說明】

  • 第2行代碼使用input()捕獲輸入。按照提示輸入5個數(shù)字,并用逗號分隔。input()根據(jù)輸入的逗號,生成一個列表。
  • 第3行代碼輸出列表numbers的內(nèi)容。
  • 第4行代碼定義變量x的值為0。
  • 第5行代碼循環(huán)列表numbers。
  • 第6行代碼輸出列表中第x+1個數(shù)字的值。
  • 第7行代碼,每次循環(huán)使變量x增1。

下面【例3-6】中的這段代碼演示了else子句在while循環(huán)中的使用。當變量x的值大于0時,執(zhí)行循環(huán),否則輸出變量x的值。

【例3-6.py】

1# 帶else子句的while循環(huán)
2x = float(input('輸入x的值:'))   # 接收用戶輸入的數(shù)字并轉(zhuǎn)換為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次循環(huán):%f' %(i, x))
11else:
12    print ('x等于0:'x)

【代碼說明】

  • 第2行代碼輸入變量x的值。
  • 第3行代碼定義變量i,變量i表示循環(huán)次數(shù)。
  • 第4行代碼,給出循環(huán)條件x != 0。如果x不等于0,則執(zhí)行第5行代碼;否則,執(zhí)行else子句的內(nèi)容。
  • 第5行代碼,判斷變量x的值是否大于0。
  • 第6行代碼,如果x的值大于0,則每次循環(huán)都減1。
  • 第7行代碼,判斷變量x的值是否小于0。
  • 第8行代碼,如果x的值小于0,則每次循環(huán)都加1。
  • 第9行代碼,每次循環(huán)使變量i的值加1。 
  • 第11行代碼,循環(huán)結(jié)束,else子句輸出變量x的值。輸出結(jié)果(假設(shè)輸入數(shù)字為0):x等于0:0。

在使用循環(huán)語句時,應(yīng)注意循環(huán)表達式的布爾值,避免出現(xiàn)死循環(huán)。死循環(huán)是指循環(huán)條件永遠為真的循環(huán)。例如:

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

這段代碼就是一個死循環(huán),變量i的值永遠都大于0。


02 for循環(huán)

for循環(huán)用于遍歷一個集合,依次訪問集合中的每個項目。for循環(huán)的格式如下所示。

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

for…in…循環(huán)的執(zhí)行過程:每次循環(huán)從集合中取出一個值,并把該值賦值給變量。集合可以是元組、列表、字典等數(shù)據(jù)結(jié)構(gòu)。其中else子句可以省略。

注意:for循環(huán)中的else子句也屬于循環(huán)的一部分,最后一次循環(huán)結(jié)束后將執(zhí)行else子句。

for…in…循環(huán)通常與range()函數(shù)一起使用,range()返回一個列表,for…in…遍歷列表中的元素。range()函數(shù)的聲明如下:

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

【代碼說明】

range()返回一個range對象,列表的元素值由3個參數(shù)決定:參數(shù)start表示列表開始的值,默認值為0;參數(shù)stop表示列表結(jié)束的值,該參數(shù)不可缺少;參數(shù)setp表示步長,即每次遞增或遞減的值,默認值為1。

下面【例3-7】中的這段代碼遍歷range()生成的列表,過濾出正數(shù)、負數(shù)和0。

【例3-7.py】

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

【代碼說明】

  • 第2行代碼遍歷range(-1,2)生成的列表。range(-1,2)返回的3個數(shù)字分別為-1、0、1。每次循環(huán)結(jié)束,變量x的值依次為-1、0、1。
  • 第3行代碼判斷變量x的值是否大于0。
  • 第4行代碼輸出正數(shù)的值。輸出結(jié)果為“正數(shù):1”。
  • 第5行代碼判斷變量x的值是否等于0。
  • 第6行代碼,輸出結(jié)果為“零:0”。
  • 第8行代碼,輸出負數(shù)的值。輸出結(jié)果為“負數(shù):-1”。
  • 第9行代碼并沒有結(jié)束for循環(huán),else子句執(zhí)行后循環(huán)才結(jié)束。輸出結(jié)果為“負數(shù):-1”。

在C、Java語言中,支持如下結(jié)構(gòu)的for語句。

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

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

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

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

1for x in range(052):
2    print (x)

【代碼說明】

輸出的數(shù)字在[0,5)這個區(qū)間,不包括5。每次循環(huán)結(jié)束,x的值加2。輸出結(jié)果:

0
2
4

這里只用了兩行代碼就實現(xiàn)了傳統(tǒng)for循環(huán)。如果要用條件表達式作為循環(huán)的條件,可以構(gòu)造range()函數(shù)來實現(xiàn)。


03 break和continue語句

break語句可以使程序跳出循環(huán)語句,從而執(zhí)行循環(huán)體之外的程序,即break語句可以提前結(jié)束循環(huán)。例如,模擬switch分支結(jié)構(gòu)使用了break語句。

 1operator = '+'
2x = 1
3y = 2
4for case in switch(operator):   # switch只能用于for... in...循環(huán)中
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的值為“+”,則執(zhí)行表達式x + y,然后中斷switch分支結(jié)構(gòu),后面的case分支都不會執(zhí)行。此時輸出結(jié)果為3。后面的break作用相同。當匹配到某個case后,程序?qū)⑻鰏witch。

如果第一個case不使用break子句,程序?qū)⑤敵鰞蓚€值,分別是3和-1。因為執(zhí)行完輸出表達式x + y后,分支結(jié)構(gòu)并沒有中斷,程序?qū)⒘鬓D(zhuǎn)到下面一個case。然后繼續(xù)計算表達式x – y的值,遇到后面的break語句才退出分支結(jié)構(gòu)。break語句在循環(huán)結(jié)構(gòu)中也有類似的作用?!纠?-8】中的這段代碼將從0到99中查找用戶輸入的值。

【例3-8.py】

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

【代碼說明】

  • 第1行代碼捕獲用戶輸入的值,并把該值轉(zhuǎn)換為int類型,賦值給變量x。
  • 第2行代碼定義一個變量y,變量y用于暫存需要遍歷的列表的值。
  • 第3行代碼使用for…in…循環(huán)遍歷range(0, 100)返回的列表。range(0, 100)的返回值為0、1、2、…、99。
  • 第4行代碼判斷輸入的值是否等于列表中的值。如果條件成立,輸出查找到的數(shù)字,并立即退出循環(huán)。循環(huán)結(jié)束,后面的else子句將不會被執(zhí)行。
  • 第7行代碼,當沒有找到輸入的值時,else子句后面的代碼將被執(zhí)行。

注意:break語句不能運行在循環(huán)體或分支語句之外,否則,Python解釋器將提示如下錯誤。

SyntaxError: 'break' outside loop

continue語句也是用來跳出循環(huán)的語句,但是與break不同的是,使用continue語句不會跳出整個循環(huán)體,只是跳出當前的循環(huán),然后繼續(xù)執(zhí)行后面的循環(huán)。

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

【代碼說明】

  • 第1行代碼將x賦值為0。
  • 第2行代碼使用for...in...語句遍歷列表[1,2,3,4,5]。
  • 第3行代碼將x與i進行比較,如果x與值i相等,則執(zhí)行第4行的continue語句,停止當前循環(huán),即不再執(zhí)行第5行代碼,繼續(xù)執(zhí)行下一個循環(huán)。
  • 第6行代碼打印出最終的結(jié)果,輸出為12。

關(guān)于作者:黃傳祿,高級講師、管理軟件開發(fā)工程師、數(shù)據(jù)庫庫系統(tǒng)工程師、信息系統(tǒng)管理工程師。有10多年的一線教學經(jīng)驗和高端培訓經(jīng)驗,出版多部技術(shù)專著,獲得多個軟件著作權(quán)。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
零碎的小知識2 分支結(jié)構(gòu)
學習MISRAC之五:準確的程序流控制——(轉(zhuǎn))
初中生Python程序設(shè)計百問百答
一文搞懂Python程序語句
Python入門(5)——分支與循環(huán)
【Java基礎(chǔ) 3】流程控制
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服