python循环不断崩溃

时间:2013-10-22 23:17:36

标签: python loops

这是我的代码

def time_to_end_of_world(p_spread,p_cure):
    ...:     my_world=set_up_cities()
    ...:     zombify(my_world,0)
    ...:     count=0
    ...:     while is_end_of_world(my_world)==False:
    ...:         sim_step(my_world,p_spread,p_cure)
    ...:         count+=1
    ...:         return count

我一直在拿出1

如果我将返回计数移出一个像这样的缩进

def time_to_end_of_world(p_spread,p_cure):
    ...:     my_world=set_up_cities()
    ...:     zombify(my_world,0)
    ...:     count=0
    ...:     while is_end_of_world(my_world)==False:
    ...:         sim_step(my_world,p_spread,p_cure)
    ...:         count+=1
    ...:     return count

程序崩溃......

任何想法?

4 个答案:

答案 0 :(得分:1)

很可能有人会从今年开始关注这个......

我正在做与你相同的任务,并遇到同样的问题 - 但是我找到了修复。问题在于sim_step()中的numpy.random.randint()。

随机整数函数排除括号中的整数,因此你的循环永远不会结束,因为它永远不会感染City 15;如果使用numpy.random.randint(15),则最多只能达到14。更改为(16),它应该是固定的。

干杯

答案 1 :(得分:0)

在第一个示例中,您始终在第一次进入循环时返回。

通过在循环外移动return语句,等待is_end_of_world(my_world)==False变为False以退出循环。它可能永远不会,导致程序崩溃。

答案 2 :(得分:0)

第一个版本仅运行模拟的一个步骤。第二次尝试运行模拟直到世界结束。因此,在第一个代码之后的步骤中,您的sim_stepis_end_or_world代码会出现问题。

答案 3 :(得分:0)

问题必须是在sim_step中实际上没有更新my_world,或者is_end_of_world永远不会返回true。返回应该像第二个例子一样“不缩进”。发布sim步骤的代码和is_end_of_world