簡體   English   中英

使用while退出for循環

[英]Using while to exit for loop

我有這段代碼打印列表的前十個元素,然后打印結束:

a = ["11","12","13","14","15","16","17","18","19","110"]
n = 0
limit= 10
while n != limit:
    for b in a:
        if "1" in b:
            print(b)
            n += 1
print("end")

我試圖弄清楚如果我在列表中添加更多數字,它為什么會中斷。

a = ["11","12","13","14","15","16","17","18","19","110","111","112"]
n = 0
limit= 10
while n != limit:
    for b in a:
        if "1" in b:
            print(b)
            n += 1
print("end")

永遠持續下去,一次又一次地打印數字。 有人可以解釋為什么嗎?

我已經用它替換了它,但我只想了解第一個有什么問題。

a = ["11","12","13","14","15","16","17","18","19","110","111","112"]
n = 0
limit= 10
for b in a:
    if "1" in b:
        print(b)
        n += 1
    if n == limit:
        break
print("end")

它有什么問題?

在 ( while ) 循環中的每一輪都添加超過 1 ,因此在循環之前, n小於10 ,之后,它大於n 因此,從不等於10

只需將條件更改為>= (或>取決於您想要的)。

我仍然不相信你所做的任何事情都是正確的。 如果您確定要打印列表中的前 10 個元素,請使用以下方法:

a = ["1", "12", "13", "14", "15", "16", "17", "18", "19", "110", "111", "112"]

limit = 10
for i in a[0:limit]:
    print(i)
print("end")

我有這段代碼打印列表的前十個元素,然后打印結束

這不是您的原始代碼所做的。 for循環將遍歷列表的所有元素,無論多長時間。 因此,只有在您遍歷整個列表后才會檢查while條件。

因此,當代碼開始時,第一個while檢查在任何循環之前,並檢查0 != 10 然后在for循環訪問列表的每個元素之前不會再次檢查它。 因為您的第一個列表正好有 10 個元素,其中包含“1”,所以結果n正好是 10,而第二次測試while條件時,它將是10 == 10 但是在您的第二個示例中,您有 11 個元素,直到n為 11 才會檢查while條件。

嘗試將 print 語句放在不同的位置以查看發生了什么,例如,就在while語句之后,就在for語句之后,就在if語句之后。 這將向您顯示何時執行哪些語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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