康威的生命游戏 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" 单元格。
我正在做 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" 单元格。