詳解Python中while無(wú)限迭代循環(huán)方法
前言
Python 有 while 語(yǔ)句和 for 語(yǔ)句作為循環(huán)處理。雖然 for 語(yǔ)句具有一定數(shù)量的進(jìn)程,但 while 語(yǔ)句是『直到滿足條件』類型的循環(huán)進(jìn)程。
對(duì)于無(wú)限迭代 while,循環(huán)執(zhí)行的次數(shù)沒(méi)有事先明確指定。相反,只要滿足某些條件指定的塊就會(huì)重復(fù)執(zhí)行。
使用定義迭代 for,指定塊將被執(zhí)行的次數(shù)在循環(huán)開(kāi)始時(shí)已經(jīng)倍明確指定。
除了 while 語(yǔ)句的一般特性之外,Python 也有自己的規(guī)范,例如對(duì) do while 語(yǔ)句的支持不足。循環(huán)處理是編程的基本語(yǔ)法。
while循環(huán)
while <布爾計(jì)算的表達(dá)式>:
<執(zhí)行的python語(yǔ)句> # 循環(huán)體
控制表達(dá)式 ,<布爾計(jì)算的表達(dá)式> 通常涉及一個(gè)或多個(gè)變量,這些變量在開(kāi)始循環(huán)之前被初始化,然后在循環(huán)體的某處可能會(huì)被修改。
當(dāng) while 遇到循環(huán)時(shí),首先在 Boolean context 中 <布爾計(jì)算的表達(dá)式> 進(jìn)行評(píng)估。
n = 5 while n > 0: n -= 1 print(n)
輸出:
4
3
2
1
0
while 首先測(cè)試循環(huán)的控制表達(dá)式。假設(shè)開(kāi)始就為假,則循環(huán)體將永遠(yuǎn)不會(huì)被執(zhí)行。
n = 5 while n > 5: n -= 1 print(n)
break語(yǔ)句 和 continue語(yǔ)句
while 循環(huán)的整個(gè)主體都在每次迭代中執(zhí)行,Python 提供了兩個(gè)過(guò)早終止循環(huán)迭代的關(guān)鍵字。
- break 語(yǔ)句立即完全終止循環(huán)。程序執(zhí)行繼續(xù)到循環(huán)體之后的第一條語(yǔ)句。
- continue 語(yǔ)句立即終止當(dāng)前循環(huán)迭代。執(zhí)行跳轉(zhuǎn)到循環(huán)的頂部,并重新評(píng)估控制表達(dá)式以確定循環(huán)是再次執(zhí)行還是終止。
# break 舉例 n = 5 while n > 0: n -= 1 if n == 2: break print(n) print('循環(huán)結(jié)束。')
輸出:
4
3
循環(huán)結(jié)束。
# continue 舉例 n = 5 while n > 0: n -= 1 if n == 2: continue print(n) print('循環(huán)結(jié)束。')
輸出:
4
3
1
0
循環(huán)結(jié)束。
else 子句
Python 允許在循環(huán)else結(jié)束時(shí)使用可選子句。
while <布爾計(jì)算的表達(dá)式>: <執(zhí)行的python語(yǔ)句> # 循環(huán)體 else: <循環(huán)終止后執(zhí)行語(yǔ)句> n = 5 while n > 0: n -= 1 print(n) else: print('Loop done.')
輸出:
4
3
2
1
0
Loop done.
# 如果有break某些情況下就不會(huì)倍執(zhí)行 n = 5 while n > 0: n -= 1 print(n) if n == 2: break else: print('循環(huán)結(jié)束。')
輸出:
4
3
2
無(wú)限循環(huán)
假設(shè)編寫了一個(gè)while理論上永遠(yuǎn)不會(huì)結(jié)束的循環(huán)。
while True: print('真·三國(guó)無(wú)雙') 真·三國(guó)無(wú)雙 真·三國(guó)無(wú)雙 . . . 真·三國(guó)無(wú)雙 Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyboardInterrupt
這樣的循環(huán)只能手動(dòng)停止。
單實(shí)際上也有它的應(yīng)用,例如循環(huán)刪除列表中的元素。
list_ = ['真·三國(guó)無(wú)雙', '真·三國(guó)無(wú)雙', '真·三國(guó)無(wú)雙'] while True: if not list_ : break print(list_ .pop(-1))
輸出:
真·三國(guó)無(wú)雙
真·三國(guó)無(wú)雙
真·三國(guó)無(wú)雙
可以 break 在循環(huán)中指定多個(gè)語(yǔ)句??梢酝ㄟ^(guò) break 從幾個(gè)不同的位置結(jié)束循環(huán),而不必在循環(huán)頭中指定所有終止條件。
while True:
if <布爾計(jì)算的表達(dá)式1>: # 條件判斷1
break
if <布爾計(jì)算的表達(dá)式2>: # 條件判斷2
break
if <布爾計(jì)算的表達(dá)式3>: # 條件判斷3
break
嵌套while循環(huán)
Python 控制結(jié)構(gòu)可以相互嵌套。
if age < 18: if gender == 'M': print('子供') else: print('娘') elif age >= 18 and age < 65: if gender == 'M': print('父親') else: print('母親') else: if gender == 'M': print('おじいさん') else: print('祖母')
while循環(huán)可以包含在另一個(gè)while循環(huán)中。
list_ = ['父親', '母親'] while len(list_ ): print(list_.pop(0)) list__ = ['おじいさん', '祖母'] while len(list__ ): print('>', list__.pop(0))
輸出:
父親
> おじいさん
> 祖母
母親
> おじいさん
> 祖母
在嵌套循環(huán)中找到的 break 語(yǔ)句適用于最近的封閉循環(huán)。
while <布爾計(jì)算的表達(dá)式1>: statement statement while <布爾計(jì)算的表達(dá)式2>: statement statement break # 適用于 while <布爾計(jì)算的表達(dá)式2>: 循環(huán) break # 適用于 while <布爾計(jì)算的表達(dá)式1>: 循環(huán)
while循環(huán)可以嵌套在 if、elif、else 語(yǔ)句中。
if <布爾計(jì)算的表達(dá)式1>:
<python執(zhí)行語(yǔ)句1>
while <布爾計(jì)算的表達(dá)式2>:
<python執(zhí)行語(yǔ)句2>
<python執(zhí)行語(yǔ)句3>
else:
while <布爾計(jì)算的表達(dá)式3>:
<python執(zhí)行語(yǔ)句4>
<python執(zhí)行語(yǔ)句5>
<python執(zhí)行語(yǔ)句6>
while <布爾計(jì)算的表達(dá)式1>:
if <布爾計(jì)算的表達(dá)式2>:
<python執(zhí)行語(yǔ)句1>
elif <布爾計(jì)算的表達(dá)式3>:
<python執(zhí)行語(yǔ)句2>
else:
<python執(zhí)行語(yǔ)句3>
if <布爾計(jì)算的表達(dá)式4>:
<python執(zhí)行語(yǔ)句4>
單行 while 循環(huán)
與 if 語(yǔ)句一樣,while 可以在一行中指定循環(huán)。也可以用 ;組成多個(gè)循環(huán)體語(yǔ)句。
n = 5 while n > 0: n -= 1; print(n)
輸出:
4
3
2
1
0
兩個(gè)復(fù)合語(yǔ)句組合成簡(jiǎn)寫方式是不可以的。
if True: print('data') data while n > 0: n -= 1; if True: print('data') SyntaxError: invalid syntax
以上就是詳解Python中while無(wú)限迭代循環(huán)方法的詳細(xì)內(nèi)容,更多關(guān)于Python while無(wú)限迭代的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解pandas中Series()和DataFrame()的區(qū)別與聯(lián)系
本文主要介紹了詳解pandas中Series()和DataFrame()的區(qū)別與聯(lián)系,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01淺談tensorflow與pytorch的相互轉(zhuǎn)換
本文主要介紹了簡(jiǎn)單介紹一下tensorflow與pytorch的相互轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06將python運(yùn)行結(jié)果保存至本地文件中的示例講解
今天小編就為大家分享一篇將python運(yùn)行結(jié)果保存至本地文件中的示例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07pytorch創(chuàng)建tensor函數(shù)詳情
這篇文章主要介紹了pytorch創(chuàng)建tensor函數(shù)詳情,文章圍繞tensor函數(shù)的相關(guān)自來(lái)哦展開(kāi)詳細(xì)內(nèi)容的介紹,需要的小伙伴可以參考一下,希望對(duì)你有所幫助2022-03-03python3.4 將16進(jìn)制轉(zhuǎn)成字符串的實(shí)例
今天小編就為大家分享一篇python3.4 將16進(jìn)制轉(zhuǎn)成字符串的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-06-06Python實(shí)現(xiàn)判斷并移除列表指定位置元素的方法
這篇文章主要介紹了Python實(shí)現(xiàn)判斷并移除列表指定位置元素的方法,涉及Python針對(duì)列表的索引范圍判斷及元素刪除等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04