簡體   English   中英

在 Python 的 while 循環中使用 continue

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM