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