【问题标题】:why is this an infinite loop in python?为什么这是python中的无限循环?
【发布时间】:2010-01-12 17:40:27
【问题描述】:

我似乎无法弄清楚为什么这是 python 中的无限循环??

for i in range(n):
    j=1
    while((i*j)<n):
       j+=1

外部循环不应该执行 n 次吗?每次递增 j 直到等于 n div i?

【问题讨论】:

    标签: python loops infinite-loop


    【解决方案1】:

    i0 开始,所以while 条件始终为真;详情请见range docs

    【讨论】:

    • 感谢您添加链接,T.J. :-)
    【解决方案2】:

    您可以创建一个“跟踪”来显示变量的状态变化。

    1. n=5;我= 0
    2. n=5;我= 0; j= 1
    3. i*j 0
    4. i*j 0
    5. i*j 0
    6. i*j 0
    7. i*j 0

    等等

    您可以通过插入print 语句来证明您的跟踪是正确的。

    如有疑问,请打印出来。

    【讨论】:

    • 并在更大的程序中使用日志记录模块。您只需修改一行即可更改详细程度
    【解决方案3】:

    i 从零开始,因此内部循环的条件始终为 0*j &lt; n,这将始终为真。

    【讨论】:

      【解决方案4】:

      因为i的初始值为0。

      【讨论】:

        【解决方案5】:

        i 中的第一个值将是 0。0 乘以任何值都是 0。

        【讨论】:

          【解决方案6】:

          因为我是0!!并且 i*j=0

          【讨论】:

            【解决方案7】:

            range(n)0 开头,而不是 10 * j 将始终小于 n

            【讨论】:

              【解决方案8】:

              第一次通过外循环时,内循环变成无限循环。 在那之后发生什么并不重要。没有“无限之后”。

              【讨论】:

                【解决方案9】:

                i is 0 rewrite you loop like

                for i in range(1,n):
                j=1
                while((i*j)<n):
                   j+=1
                

                使用此版本的 range 函数将创建一个从 1 而不是 0 开始的范围

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-11-15
                  • 2021-08-16
                  • 2018-01-13
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多