gpt4 book ai didi

python - 索引错误 : list assignment index out of range Python 3

转载 作者:太空宇宙 更新时间:2023-11-04 02:40:41 25 4
gpt4 key购买 nike

有人知道为什么我会在这段代码中得到 IndexError 吗?

            global gegner
global gegnerhp
gegner = []
gegberhp = []



for i in range(1,anzahlgegner):
random = randint(1,5)
if random == 1:
gegner[i] = "goblin"
gegnerhp[i] = randint(10,50)
elif random == 2:
gegner[i] = "ghost"
gegnerhp[i] = randint(10,50)
elif random == 3:
gegner[i] = "hound"
gegnerhp[i] = randint(10,50)
elif random == 4:
gegner[i] = "wolf" #LINE 147
gegnerhp[i] = randint(10,50)
elif random == 5:
gegner[i] = "goblin"
gegnerhp[i] = randint(10, 50)
print("* {0} with {1} HP".format(gegner[i]),gegnerhp[i])

例如,当 random 为 4 时,我得到以下错误:

  File "C:/Users/Fabio/PycharmProjects/test\dungeon.py", line 147, in run
gegner[i] = "wolf"
IndexError: list assignment index out of range

也许我对列表/数组的声明是错误的?...

最佳答案

这里有很多误解,我认为只解决你特别询问的那个问题不会有适当的帮助,所以我要做的不止这些。

首先,列表。您正在创建空列表 gegner 和 gegnerhp;看起来您随后想要向这些列表中添加一些项目,并且您试图通过指定索引来实现。在 python 中,列表索引从 0 开始,而不是 1。

即在以下列表中:

>>> gegner = ["wolf", "hound", "goblin"]
>>> print(gegner[0])
wolf
>>> print(gegner[1])
hound

索引“1”是列表中的第二个项。

在您的代码中,您的 range(1,anzhalgegner) 将从 1 开始递增到您将 anzhalgegner 设置为的值。在您的第一次迭代中,您的代码尝试在位置 1 为列表 gegner 分配一个值 - 但是,该列表在位置 0 没有任何内容,这意味着它不能为位置 1 分配任何内容。

让您入门的最简单的更改是从 0 开始您的范围。

一旦你试过了,我也建议不要手动指定列表中的什么位置来放置一个项目(list[index] = value),因为你所做的只是在列表的末尾添加东西列表,考虑使用 append 方法。然后它看起来像这样:

if random == 1:
gegner.append("goblin")
gegnerhp.append(randint(10,50))

关于python - 索引错误 : list assignment index out of range Python 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46631200/

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