【问题标题】:Python Script Hangs, Potentially an Infinite Loop?Python 脚本挂起,可能是无限循环?
【发布时间】:2010-06-30 13:07:04
【问题描述】:

再次参与 Project Euler,这次我的脚本就挂在那里了。我很确定我让它运行了足够长的时间,而且我的手迹(正如我父亲所说的那样)不会产生任何问题。我哪里错了?

我只包含代码的相关部分,一次。

def main():
    f, n = 0, 20
    while f != 20:
        f = 0
        for x in range(1,21):
            if n % x != 0: break
            else: ++f
        if f == 20: print n
        n += 20

提前致谢!

【问题讨论】:

    标签: python infinite-loop


    【解决方案1】:

    Python 没有增量 (++)。它被解释为+(+(a))。 + 是一元加号运算符,它基本上什么都不做。使用+= 1

    【讨论】:

    • 我在输入时更改了它,我将其更改回来。感谢您的提醒。 :)
    • 表达式++f的意思是“正正f”,也就是f。你没有增加你的主循环变量。
    【解决方案2】:

    在您的情况下,“f”值永远不会达到 20,因此永远不会退出 1) 在第一次休息时(当 n=20 和 x =3 时),它再次设置 f=0。 同样,对于下一个循环,n 也会增加 20,但当 'x' 再次为 3 时,f=0

    所以这将进入无限循环......

    【讨论】:

    • 这不是一个无限循环。当 n 是前 20 个自然数的最小公倍数时,它将停止。
    • @Matthew 所以也许我的脚本没问题,但它运行的时间不够长?因为它仍然不起作用。 :(
    • 我为错误的答案道歉...@ Matthew thanx loop 终于停在 232792560 :)
    • 我不知道脚本是否正常。但它确实需要超过 1100 万次迭代才能终止。
    • 在我的情况下,脚本在 appx 2 分钟时间(正好 118 秒)内完成以找到数字 232792560
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2013-09-17
    • 2013-03-22
    • 2016-03-19
    相关资源
    最近更新 更多