gpt4 book ai didi

python list 索引超出范围错误

转载 作者:行者123 更新时间:2023-12-01 06:17:08 25 4
gpt4 key购买 nike

我正在开发一个 Python 俄罗斯方 block 游戏,我的教授为编程类(class)概念的最终项目分配了该游戏。此时我已经得到了他想要做的几乎所有事情,但我在其中的一部分遇到了一些小问题。每当我开始左右移动棋子时,我都会收到“索引超出范围错误”。只有当它对抗一 block 棋子时才会发生这种情况。以下是让我悲伤的罪魁祸首。

def clearRight(block=None):
global board, activeBlock, stackedBlocks
isClear = True
if(block == None):
block = activeBlock
if(block != None):

for square in block['squares']:
row = square[1]
col = square[0]+1
if(col >= 0 and stackedBlocks[row][col] !=None):
isClear=False
return isClear


def clearLeft(block=None):
global board, activeBlock, stackedBlocks
isClear = True
if(block == None):
block = activeBlock
if(block != None):

for square in block['squares']:
row = square[1]
col = square[0]-1
if(col >= 0 and stackedBlocks[row][col] !=None):
isClear=False
return isClear

我不想让任何人帮我修复它,我只是在寻找如何自己修复它的提示。预先感谢您提供的任何帮助。

最佳答案

第一种方法中存在一个拼写错误,会导致该问题。

当您检查右移 block 中的每个单元格时,您不会检查它们是否脱离网格。

if (col >= 0 and ...)

大概应该是

if (col < num_cols and ...)

我也同意CrazyDrummer的观点,做一个通用的清晰功能

<小时/>

剧透...

def clear(x_offset, block=None):
if not block:
block = activeBlock
if not block: return True
for x,y in block:
x += x_offset
if not (0 <= x < num_cols) or stackedBlocks[x, y]:
return False
return True

关于python list 索引超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com