2015-08-15 43 views
0

这里是我的一个连接4方案的一部分代码:为什么我在代码中获得索引超出范围?

def place_piece(n,column): 

    col=int(column) 
    boardlist=[['.'*42]] 
    for l in range(7): 
     if boardlist[col+42-7l]=='.': 
      if n%2==0: 
       piece=X 
      else: 
       piece=O 
      boardlist[col+7(6-l)]=piece 
      break 
    return boardlist 

print(place_piece(1,3)) 

当运行它,第5行if boardlist[col+42-7l]=='.':具有索引超出范围的错误。为什么?我怎么能解决这个问题?

+1

为什么要将int转换为int?那不可能是你的代码,因为在你尝试索引之前很久就会出错 –

+0

boardlist应该是什么?因为我猜测包含一个单元素列表的单元素列表包含一个包含42个句号的字符串是不是... – jonrsharpe

+0

等等然后我该如何制作一个42元素列表? @jonrsharpe –

回答

1

索引超出范围错误意味着您所指数组的索引不存在。这是你如何申报boardlist

boardlist=[['.'*42]] 

在这种情况下,boardlist本身只包含一个元素,这恰好是另一个数组。因此,唯一可行的指数是boardlist[0]。根据您发布的代码,我建议将其更改为:

boardlist=['.']*42 
+0

谢谢! @DizzyCode –

+0

没问题!如果此答案有帮助,请点击复选标记以接受它。 – deezy

0

您的col+42-7l超过len(boardlist) - 1在您的循环中的某个点。就如此容易。

相关问题