[英]Using continue in while loop for python
我的初始代碼...
name="LOVE"
i=0
while i < len(name):
i=i+1
if name[i] == "V":
print('Hi')
continue
print('Hello')#never printed
print(name[i])
print("The end")
想要的結果是
L
O
Hi
E
The end
我已閱讀有關此主題的其他答案,但我無法理解或找不到我正在尋找的答案。 我知道在 while 循環中編寫 continue 是不好的做法,即使這樣我也想知道是否有一種方法可以在不拋出錯誤(邏輯或索引錯誤)或進入無限循環的情況下使用它。 'while' 據我所知,沒有選擇
while(i++<len(name))
在 python 中,所以沒有用。 由於控制轉移到循環的開頭並且測試表達式不會再次計算,我嘗試將 increment 語句保持在 continue 塊上方,而將打印語句放在下方,以便在邏輯上與所需的輸出保持一致。 首先,我在輸出中丟失了 'L','if' 語句中的 'IndexError' 並且我期待最后在打印語句中出現相同的錯誤。 所以我試圖通過從 -1 開始索引並捕獲我的錯誤來改進。
name="LOVE"
i=-1
try:
while i < len(name):
i=i+1
if name[i] == "V":
print('Hi')
continue
print('Hello')#never printed
print(name[i])
except IndexError:
print()
print("The end")
在使用 for 時,continue 語句將控制簡單地轉移到下一次迭代,其中由於是下一次迭代,counter(val) 已經遞增,因此它可以流暢地工作。 像下面,
for val in "LOVE":
if val == "V":
print('Hi')
continue
print('Hello')#never printed
print(val)
print("The end")
我再次知道這一點,但這不是我感興趣的......總而言之,我想知道的是是否有更優雅的方法來做到這一點而沒有 try catch 塊,還有其他類型的 continue in而在 Python 3.x 中達到所需的輸出? PS:-這是我在這個論壇上的第一個問題,所以請對我輕松一點。
你真的不需要continue
,只是你的if
語句中的else
子句。 (此外,由於i == 0
開始,您需要等到將i
用作索引后再增加它。)
name="LOVE"
i=0
while i < len(name):
if name[i] == "V":
print('Hi')
else:
print(name[i])
i=i+1
print("The end")
或者
for c in name:
if c == "V":
print('Hi')
else:
print(c)
這真的是一個for
工作。 您想要結束循環,由except
子句和i < len(name)
條件表示,以及循環增量,由i=i+1
增量表示。 這兩個任務通常由 迭代器執行,並且字符串是可迭代的。 可以重寫for
in while
形式,但意義不大:
i = iter(name)
while True:
try:
c = next(i)
except StopIteration:
break
print('Hi' if c == 'V' else c)
for c in name
編寫要容易得多。
您還可以使用finally
,無論try
怎樣,它都應該執行:
i = 0
while i < len(name):
try:
if ...:
continue
finally:
i += 1
解決這個問題的優雅(pythonic)方法是使用 for 循環,就像其他人建議的那樣。 但是,如果您堅持將 while 循環與 continue 一起使用,則應嘗試調整 while 循環的條件。 例如像這樣:
name="LOVE"
i=-1
while i < len(name)-1:
i=i+1
if name[i] == "V":
print('Hi')
continue
print('Hello')#never printed
print(name[i])
print("The end")
string="LOVE"
i=0
while i<len(string):
if string[i]=="V":
print("HI")
i+=1
continue
else:print(string[i])
i+=1
print("Thank You")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.