这是我的代码
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
程序崩溃......
任何想法?
答案 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_step
或is_end_or_world
代码会出现问题。
答案 3 :(得分:0)
问题必须是在sim_step中实际上没有更新my_world,或者is_end_of_world永远不会返回true。返回应该像第二个例子一样“不缩进”。发布sim步骤的代码和is_end_of_world