【Python入门教程】第57篇 循环进阶之模拟do…while语句
本篇我們學(xué)習(xí)如何在 Python 中模擬 do…while 循環(huán)語(yǔ)句。
do…while 循環(huán)語(yǔ)句
許多編程語(yǔ)言,例如 JavaScript、Java、 C# 等,都提供了 do…while 循環(huán)語(yǔ)句。這種循環(huán)語(yǔ)句和 while 循環(huán)的不同之處在于它至少會(huì)迭代一次。因?yàn)樗诿看蔚Y(jié)束時(shí)檢查循環(huán)條件,當(dāng)循環(huán)條件為 True 時(shí)繼續(xù)執(zhí)行迭代。
以下是 Python 中實(shí)現(xiàn) do…while 循環(huán)的偽代碼:
do# code block while conditionPython 目前還不支持這種 do…while 循環(huán)語(yǔ)法。不過(guò),我們可以使用 while 循環(huán)加上 break 語(yǔ)句模擬這種語(yǔ)句。
首先,我們可以為 while 循環(huán)指定一個(gè)總是成立的條件 Ture,例如:
while True:# code block這種方法可以用于實(shí)現(xiàn)代碼塊的第一次執(zhí)行。實(shí)際上這是一個(gè)無(wú)限循環(huán),我們需要定義退出循環(huán)的條件:
while True:# code block# break out of the loopif condition:break以上語(yǔ)法中,代碼塊至少會(huì)被執(zhí)行一次,每次迭代之后會(huì)檢查 condition。
do…while 循環(huán)模擬示例
假如我們需要開發(fā)一個(gè)猜數(shù)字的游戲,邏輯如下:
- 首先,生成一個(gè) 0 到 10 之間的隨機(jī)數(shù)字。
- 然后,重復(fù)提示用戶輸入一個(gè)數(shù)字。如果輸入的數(shù)字小于或者大于生成的隨機(jī)數(shù),顯示相應(yīng)的提示。如果輸入的數(shù)字等于隨機(jī)數(shù),結(jié)束循環(huán)。
以下代碼使用 while 循環(huán)實(shí)現(xiàn)猜數(shù)字游戲:
from random import randint# determine the range MIN = 0 MAX = 10# generate a secret number secret_number = randint(MIN, MAX)# initialize the attempt attempt = 0# The first attempt input_number = int(input(f'Enter a number between {MIN} and {MAX}:')) attempt += 1if input_number > secret_number:print('It should be smaller.') elif input_number < secret_number:print('It should be bigger.') else:print(f'Bingo! {attempt} attempt(s)')# From the second attempt while input_number != secret_number:input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))attempt += 1if input_number > secret_number:print('It should be smaller.')elif input_number < secret_number:print('It should be bigger.')else:print(f'Bingo! {attempt} attempt(s)')運(yùn)行程序并輸入一些數(shù)字:
Enter a number between 0 and 10:5 It should be bigger. Enter a number between 0 and 10:7 It should be bigger. Enter a number between 0 and 10:8 Bingo! 3 attempt(s)由于 while 循環(huán)在迭代開始就執(zhí)行了條件檢查,所以需要重復(fù)編寫兩次提示用戶輸入和數(shù)字比較的代碼,循環(huán)之前寫一次,循環(huán)內(nèi)部寫一次。
為了避免這種重復(fù)的代碼,我們可以使用模擬的 do while 循環(huán)實(shí)現(xiàn)以上功能:
from random import randint# determine the range MIN = 0 MAX = 10# generate a secret number secret_number = randint(MIN, MAX)# initialize the attempt attempt = 0while True:attempt += 1input_number = int(input(f'Enter a number between {MIN} and {MAX}:'))if input_number > secret_number:print('It should be smaller.')elif input_number < secret_number:print('It should be bigger.')else:print(f'Bingo! {attempt} attempt(s)')break以上代碼修改的內(nèi)容如下:
- 首先,刪除了 while 循環(huán)之前的代碼。
- 其次,增加了停止循環(huán) break 語(yǔ)句,當(dāng)輸入的數(shù)字等于隨機(jī)數(shù)時(shí)停止循環(huán)。
總結(jié)
- Python 不支持 do…while 循環(huán)語(yǔ)句。
- Python 可以使用 while 循環(huán)加上 break 語(yǔ)句模擬 do…while 循環(huán)。
總結(jié)
以上是生活随笔為你收集整理的【Python入门教程】第57篇 循环进阶之模拟do…while语句的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: hive 正则表达式-regexp
- 下一篇: 考古中怎么判断化石的年代?碳14的半衰期