.1 while循環
循環語句是程序設計中常用的語句之一。任何編程語言都有while循環,Python也不例外。while循環的格式如下所示。
while(表達式):…else:…
while循環的執行過程:當循環表達式為真時,依次執行while中的語句。直到循環表達式的值為False,程序的流程轉到else語句。其中else子句可以省略,表達式兩側的括號也可以省略。
注意:while循環中的else子句也屬于循環的一部分,最后一次循環結束后將執行else子句。
下面這段代碼演示了while循環的使用。程序首先要求輸入5個數字,然后依次輸出這5個數字。
#while循環numbers=input("輸入幾個數字,用逗號分隔:").split(",")print(numbers)x=0whilex<len(numbers):#當x的值小于輸入字數的個數的時候,執行循環內容print(numbers[x])x+=1#一個循環結束時給x加1
【代碼說明】
第2行代碼使用input()捕獲輸入。按照提示輸入5個數字,并用逗號分隔。input()根據輸入的逗號,生成一個列表。
第3行代碼輸出列表numbers的內容。
第4行代碼定義變量x的值為0。
第5行代碼循環列表numbers。
第6行代碼輸出列表中第x+1個數字的值。
第7行代碼,每次循環使變量x增1。
下面【例3-6】中的這段代碼演示了else子句在while循環中的使用。當變量x的值大于0時,執行循環,否則輸出變量x的值。
【例3-6.py】
#帶else子句的while循環x=float(input("輸入x的值:"))#接收用戶輸入的數字并轉換為float類型i=0while(x!=0):#Python3中的不等于不再使用<>,一律使用!=if(x>0):x-=1#如果x大于0,則減1else:x+=1#如果x小于0,則加1ii=i+1print("第%d次循環:%f"%(i,x))else:print("x等于0:",x)
【代碼說明】
第2行代碼輸入變量x的值。
第3行代碼定義變量i,變量i表示循環次數。
第4行代碼,給出循環條件x != 0。如果x不等于0,則執行第5行代碼;否則,執行else子句的內容。
第5行代碼,判斷變量x的值是否大于0。
第6行代碼,如果x的值大于0,則每次循環都減1。
第7行代碼,判斷變量x的值是否小于0。
第8行代碼,如果x的值小于0,則每次循環都加1。
第9行代碼,每次循環使變量i的值加1。
第11行代碼,循環結束,else子句輸出變量x的值。輸出結果(假設輸入數字為0):x等于0:0。
在使用循環語句時,應注意循環表達式的布爾值,避免出現死循環。死循環是指循環條件永遠為真的循環。例如:
i=1whilei>0:#i永遠大于0ii=i+1print(i)
這段代碼就是一個死循環,變量i的值永遠都大于0。
2. for循環
for循環用于遍歷一個集合,依次訪問集合中的每個項目。for循環的格式如下所示。
for變量in集合:…else:…
for…in…循環的執行過程:每次循環從集合中取出一個值,并把該值賦值給變量。集合可以是元組、列表、字典等數據結構。其中else子句可以省略。
注意:for循環中的else子句也屬于循環的一部分,最后一次循環結束后將執行else子句。
for…in…循環通常與range()函數一起使用,range()返回一個列表,for…in…遍歷列表中的元素。range()函數的聲明如下:
classrange(object)range(stop)->rangeobjectrange(start,stop[,step])->rangeobject
【代碼說明】
range()返回一個range對象,列表的元素值由3個參數決定:參數start表示列表開始的值,默認值為0;參數stop表示列表結束的值,該參數不可缺少;參數setp表示步長,即每次遞增或遞減的值,默認值為1。
下面【例3-7】中的這段代碼遍歷range()生成的列表,過濾出正數、負數和0。
【例3-7.py】
#forin語句forxinrange(-1,2):ifx>0:print("正數:",x)elifx==0:print("零:",x)else:print("負數:",x)else:print("循環結束")
【代碼說明】
第2行代碼遍歷range(-1,2)生成的列表。range(-1,2)返回的3個數字分別為-1、0、1。每次循環結束,變量x的值依次為-1、0、1。
第3行代碼判斷變量x的值是否大于0。
第4行代碼輸出正數的值。輸出結果為“正數:1”。
第5行代碼判斷變量x的值是否等于0。
第6行代碼,輸出結果為“零:0”。
第8行代碼,輸出負數的值。輸出結果為“負數:-1”。
第9行代碼并沒有結束for循環,else子句執行后循環才結束。輸出結果為“負數:-1”。
在C、Java語言中,支持如下結構的for語句。
for(表達式1;表達式2;表達式3)語句塊
Python不支持這樣的for循環。如果需要編寫類似功能的循環,可以使用while循環。例如:
x=0whilex<5:print(x)xx=x+2
while循環的寫法比較瑣碎,需要比較判斷。因此,對此也可以使用for循環,借助range()函數來實現。例如:
forxinrange(0,5,2):print(x)
【代碼說明】
輸出的數字在[0,5)這個區間,不包括5。每次循環結束,x的值加2。輸出結果:
024
這里只用了兩行代碼就實現了傳統for循環。如果要用條件表達式作為循環的條件,可以構造range()函數來實現。
3. break和continue語句
break語句可以使程序跳出循環語句,從而執行循環體之外的程序,即break語句可以提前結束循環。例如,模擬switch分支結構使用了break語句。
operator="+"x=1y=2forcaseinswitch(operator):#switch只能用于for...in...循環中ifcase('+'):print(x+y)breakifcase('-'):print(x-y)breakifcase('*'):print(x*y)breakifcase('/'):print(x/y)breakifcase():#默認分支print("")
【代碼說明】
第7行代碼中使用了break。當變量operator的值為“+”,則執行表達式x + y,然后中斷switch分支結構,后面的case分支都不會執行。此時輸出結果為3。后面的break作用相同。當匹配到某個case后,程序將跳出switch。
如果第一個case不使用break子句,程序將輸出兩個值,分別是3和-1。因為執行完輸出表達式x + y后,分支結構并沒有中斷,程序將流轉到下面一個case。然后繼續計算表達式x – y的值,遇到后面的break語句才退出分支結構。break語句在循環結構中也有類似的作用?!纠?-8】中的這段代碼將從0到99中查找用戶輸入的值。
【例3-8.py】
x=int(input("輸入x的值:"))y=0foryinrange(0,100):ifx==y:print("找到數字:",x)breakelse: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'outsideloop
continue語句也是用來跳出循環的語句,但是與break不同的是,使用continue語句不會跳出整個循環體,只是跳出當前的循環,然后繼續執行后面的循環。
x=0foriin[1,2,3,4,5]:ifx==i:continuex+=iprint("x的值為",x)
【代碼說明】
第1行代碼將x賦值為0。
第2行代碼使用for...in...語句遍歷列表[1,2,3,4,5]。
第3行代碼將x與i進行比較,如果x與值i相等,則執行第4行的continue語句,停止當前循環,即不再執行第5行代碼,繼續執行下一個循環。
第6行代碼打印出最終的結果,輸出為12。
“Python循環語句代碼詳解”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注本站網站,小編將為大家輸出更多高質量的實用文章!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
網易理財的現金寶產品有風險嗎?現金寶是網易理財平臺精選的合作方提供的一款具有較高收益且保證資金隨取隨用的貨幣基金產品,貨幣市場基金是證券投資基金中的低風險品種,歷史上未曾出現負收益情況。網易現金寶是互聯網公司網易和知名的基金公司匯添富基金合作推出的理財產品,購買后即可享受貨幣基金收益。一分錢起存。收益高于銀行活期存款,又具有很好的流動性,隨取隨用,支持7*24小時申請即時取現,取現資金實時到賬。和...
什么是預算赤字?預算赤字是指在編制預算時,就存在收不抵支的情況,預算列有赤字,不代表預算執行的結果也一定有赤字。因為在預算執行過程中可以通過采取增收節支的措施,實現收支的平衡。預算赤字的特點:一是赤字的計劃性;二是預算收支差額中不包括含公債收入因素。2022年我國財政赤字率擬按2.8%左右安排,比去年有所下調,有利于增強財政可持續性。我國彌補財政赤字的方式有:1、動用歷年結余 動用歷年結余就是使用...
有人捧著幾十萬跨省存錢是怎么回事?近日,浙商銀行、恒豐銀行、渤海銀行3家銀行密集發布了調整人民幣存款掛牌利率公告。第一財經記者發現,本輪降息中,中長期定期存款利率下調幅度相對較大,其中,渤海銀行3年期整存整取定期存款由3.25%調整為2.95%,下調了30個BP。業內普遍認為,這是繼4月多家中小銀行降息后新-輪“補降”。與4月存款降息潮以中小銀行為主不同,此輪3家都是股份制...