2017-10-05 85 views
0

我正在编写一个代码,用于播放十五个游戏的Python 3。我目前正在研究移动瓷砖的功能,但我似乎无法继续前进。这里是我的功能看起来像现在:二维数组中的列表索引超出范围

​​

d是维在这里,用户提供的板,例如用户类型4,董事会将一个4x4正方形00号 - 15它。 我在这里想要完成的是检查右边,左边,底部或顶部的列表值是否等于两个零,因为这就是我编码的方式,完成后我会改变它。当我运行我的程序将打印板,但只要我在触发移动功能的命令类型,我得到 此错误:

08 07 06 
05 04 03 
02 01 00 
Tile to move: 1 
Traceback (most recent call last): 
    File "fifteen.py", line 58, in <module> 
    if move(tile, d, board) == False: 
    File "fifteen.py", line 30, in move 
    if board[r + 1][c] == "00": 
IndexError: list index out of range 

有人能帮忙吗?

回答

0

for r in range(d)中,r对从0d-1的值进行迭代。所以当r等于d-1,r + 1会给你d,这是超出范围。你必须检查r + 1是否在范围内。代码中的每个if语句也是如此。

尝试类似:

def isWithinBounds(x, lower, upper): 
    return x >= lower and x < upper 

,其中较低= 0和板的上部=维度。