康威的生命游戏 Python

Conway's Game of Life in Python

我正在做 John Conway 的生命游戏,我已经尝试了很长时间,但它一直给我这个错误:

if matrix[i+1][j] == 1:

IndexError: list index out of range

我不知道它有什么问题,通常 m[i+1][j] 可以找到我要求的特定职位。

您要将 1 添加到 i 最后一个 i 中,因此您很可能落在列表末尾:

In [3]: l = [1,2]   
In [4]: l[0]
Out[4]: 1    
In [5]: l[1]
Out[5]: 2    
In [6]: l[1+1]
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-6-f4912ad93661> in <module>()
----> 1 l[1+1]

IndexError: list index out of range

与其他答案不同,我假设您的问题是关于您在 GoL 实现中出现此错误的原因,而不是关于错误含义的问题。

您没有提供很多有关错误发生时间的信息,但实现 GoL 的一个常见问题是如何处理边界。 Wikipedia's GoL article 中对此进行了讨论。当您尝试计算边界处的邻域时,您很可能会遇到错误。这是一种常见的解决方案。在每一侧(包括顶部和底部)将网格扩展一个。调用新的单元格"boundary cells";使用它们来存储环形拓扑结构中 "neighors" 的状态。仅为非边界单元计算下一个状态;当您更新它们的状态时,还将每个边界单元格更新为它代表的环形 "wrapped" 单元格。