【问题标题】:For-Else loop in another For loop另一个 For 循环中的 For-Else 循环
【发布时间】:2014-03-21 16:37:46
【问题描述】:

我对另一个 for 循环中的 for-else 循环有一些疑问。所以这里是一个例子:

primelist = []
for p in range (2, x+1):
    print 'in first for'
    raw_input()
    for i in range(2, p):
        print 'in second for'
        if p%i == 0:
            print 'in if'
            raw_input()
            break
    else:
        print 'in else'
        raw_input()
        primelist = primelist + [p]
return primelist

如您所见,这是用于确定质数并将它们存储到一个列表中,以便以后可以检索它们。所以我的问题是第一个 for 循环。当我运行程序时,它会像这样进入:第一个 FOR 循环、ELSE、第一个 FOR 循环、第二个 FOR 循环等等。为什么它第一次跳到 ELSE? 此外,如果我要求我得到的第 1000 个号码:7919 与

for i in range(2, p)

和7907搭配

for i in range(2, p/2).

这是为什么呢? 希望你能帮我解决这个问题,但请不要给出其他实现质数算法的方法!

【问题讨论】:

  • 如您所写,此代码存在语法错误。您的意思是缩进 else 语句(及其子语句)以与 if 语句内联吗?
  • @Hooked 你可以在 Python 中使用 elsefor。如果循环在没有breaking 的情况下终止,则进入条件。
  • @SilasRay 哇,我没有意识到这一点。我的错误 BlackTM。我会留下我的评论供其他人学习。

标签: python algorithm program-structure for-else


【解决方案1】:

Python 的 range 不包含结束值。

range[start, end)

因此,在第一次迭代中,p 的值将是 2,range(2, 2) 是一个空列表。这就是为什么要输入 else 部分。

print range(2, 2)  # []

【讨论】: