首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用时间退出for循环

使用时间退出for循环
EN

Stack Overflow用户
提问于 2020-07-22 13:24:19
回答 3查看 46关注 0票数 0

我有这样的代码,它打印列表的前10个元素,然后打印end:

代码语言:javascript
运行
复制
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")

我想弄清楚,如果我把更多的数字加到列表中,它为什么会打破呢?

代码语言:javascript
运行
复制
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")

永远继续,一遍又一遍地打印数字。谁能解释一下原因吗?

我已经用这个代替了它,但我只想知道第一个问题出了什么问题。

代码语言:javascript
运行
复制
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")

这是怎么回事?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-07-22 13: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语句之后。它将显示何时执行哪些语句。

票数 1
EN

Stack Overflow用户

发布于 2020-07-22 13:28:19

您可以在(while)循环中的每一个回合中添加超过一个,所以在循环之前,n更小的 thant 10,之后是大于n。因此,绝不等于 10

只需将条件更改为>= (或根据所需内容更改为> )即可。

票数 1
EN

Stack Overflow用户

发布于 2020-07-22 13:32:38

我仍然不相信你所做的一切都是正确的。如果fr确定要打印列表中的前10个元素,请使用以下方法:

代码语言:javascript
运行
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63035244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档