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