Python 我怎样才能解决这个问题;列表索引超出范围“;错误

Python 我怎样才能解决这个问题;列表索引超出范围“;错误,python,indexoutofrangeexception,Python,Indexoutofrangeexception,我正在做一个战舰游戏,现在我已经为游戏创建了一个网格,“get_location”函数由for循环调用,为每艘战舰随机生成位置。有“如果”语句测试船只是否适合放置之前选择的位置,然后有“添加船只”功能将船只放置在网格上。 但有时人工智能会将飞船放置在网格之外,我会得到“列表索引超出范围”的错误 我知道错误在说什么,但我不知道如何修复它。我希望有人能帮助我解决这个问题。以下是导致问题的代码部分: def get_位置(索引): 提前感谢您的回复 我可能在这里遗漏了一些东西,但不是随机的。randi

我正在做一个战舰游戏,现在我已经为游戏创建了一个网格,“get_location”函数由for循环调用,为每艘战舰随机生成位置。有“如果”语句测试船只是否适合放置之前选择的位置,然后有“添加船只”功能将船只放置在网格上。 但有时人工智能会将飞船放置在网格之外,我会得到“列表索引超出范围”的错误

我知道错误在说什么,但我不知道如何修复它。我希望有人能帮助我解决这个问题。以下是导致问题的代码部分:

def get_位置(索引):


提前感谢您的回复

我可能在这里遗漏了一些东西,但不是随机的。randint(0,GRID_WIDTH)可能会为您提供GRID_WIDTH,我认为这超出了索引范围?

看起来您希望列和行使用
randrange
而不是
randint
。您可能确实希望
randint
用于
direction
,但为了保持一致性,您可以使用
randrange(0,2)
。查看
帮助(random.randrange)
输出。我尝试将其更改为randrange,但仍然出现错误。此外,您提到“帮助(random.randrange)是我可以访问以获取帮助的吗?如果是,我如何访问它。是的,打开python shell并键入
导入random;帮助(random.randrange)
好的,谢谢,从我对“randrange”的理解来看,它说它排除了范围的端点。然而,即使端点被排除在外,船只的长度也超过2个空格,船只的某些部分将脱离网格。:(这导致了错误。我不确定你的确切意思,但是“random.randint(0,网格宽度)“只需选择一个介于0和9之间的随机整数(即网格宽度)并将其分配给变量(列或行)和“if”语句就可以验证它所选列+它们的大小是否会脱离网格,如果发现无效,则应再次调用该函数以选择另一个位置。显然“else:add_-vessel(index,row,column,direction)”函数似乎导致用于验证容器是否适合网格的“if”语句出现问题。(我认为)
# Get the name and size from the lists using the index.
name = VESSEL_NAMES[index]
size = VESSEL_SIZES[index]

column = random.randint(0, GRID_WIDTH)
row = random.randint(0, GRID_HEIGHT)
direction = random.randint(H, V) # H=0, V=1 (global constants)
print()
if (direction == H and column + size > GRID_WIDTH) :
    get_location(index)
    print()
if (direction == V and row + size > GRID_HEIGHT) :
    get_location(index)
    print()
else :
    add_vessel(index, row, column, direction)