我有这样的代码,它打印列表的前10个元素,然后打印end:
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")
这是怎么回事?
发布于 2020-07-22 05:32:49
我有这样的代码,它打印列表的前10个元素,然后打印end
你的原始代码不是这么做的。无论多长时间,for
循环都将遍历列表的所有元素。因此,只有在遍历了整个列表之后才会检查while
条件。
因此,当代码开始时,第一个while
检查是在任何循环之前,并检查0 != 10
。然后,在for
循环访问完列表中的每个元素之前,不会再次检查它。因为第一个列表中正好有10个元素,其中包含"1“,所以n
将恰好是10个,第二次测试while
条件时,它将是10 == 10
。但是在第二个例子中,在有11个元素的情况下,直到while
为11时,才会检查n
条件。
尝试将print语句放在不同的位置,以查看发生了什么,例如,在while
语句之后,在for
语句之后,在if
语句之后。它将显示何时执行哪些语句。
发布于 2020-07-22 05:28:19
您可以在(while
)循环中的每一个回合中添加超过一个,所以在循环之前,n
是更小的 thant 10
,之后是大于n
的。因此,绝不等于 10
。
只需将条件更改为>=
(或根据所需内容更改为>
)即可。
发布于 2020-07-22 05:32:38
我仍然不相信你所做的一切都是正确的。如果fr确定要打印列表中的前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")
https://stackoverflow.com/questions/63035244
复制相似问题