IndexError:列表分配索引超出范围Python 3
有人有一个想法,为什么我在这段代码中得到一个IndexError?IndexError:列表分配索引超出范围Python 3
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])
例如,当随机为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
是空的,因此访问它们会给你一个错误。
你得到一个IndexError
,因为列表是空的。
您无法通过访问无效索引来创建列表项。使用.append
isntead。
if random == 1:
gegner.append("goblin")
gegnerhp.append(randint(10, 50))
等
ty的末尾,但是现在如果我想要显示它,我必须使用下标: 'print(“* {0 } with {1} HP“.format(gegner [i-1]),gegnerhp [i-1])' 然后我得到错误: 'print(”* {0} with {1} HP“)。格式(gegner [i-1]),gegnerhp [i-1]) IndexError:元组索引超出范围' – zwerg4
您有一个右括号,您不应该使用'print(“* {0} with {1 } HP“.format(gegner [i-1],gegnerhp [i-1]))'而不是。 – Neo
omg,我的坏。 TY !! – zwerg4
有一些误解在这里,我不认为这只是解决您专门询问了一会适当的帮助,所以我打算做比那更多的。
首先,列出。您正在创建空列表gegner和gegnerhp;它看起来像然后你想要添加一些项目到这些列表,并且你正在试图通过指定一个索引来完成它。在Python,列表索引从0开始,而不是1
即以下列表中:
>>> gegner = ["wolf", "hound", "goblin"]
>>> print(gegner[0])
wolf
>>> print(gegner[1])
hound
索引“1”是在列表中的秒项。
在你的代码中,你的范围(1,anzhalgegner)将从1开始,并增加到你设置的任何一个anzhalgegner。在您的第一次迭代中,您的代码尝试为位置1处的列表gegner分配一个值 - 但是,该列表在位置0处没有任何内容,这意味着它不能向位置1分配任何东西。
最简单的更改为了让你开始将从0开始你的范围。
一旦你已经尝试了这一点,我还建议,而不是手动指定列表中放置一个项目的位置(list [index] = value ),因为您所做的只是将事情添加到列表的末尾,请考虑使用方法。然后它看起来像这样:
if random == 1:
gegner.append("goblin")
gegnerhp.append(randint(10,50))
他们必须已满?但如果我需要它们像这样的情况下,我该怎么办? – zwerg4
@ zwerg4使用'lst.append(element)'将项目添加到列表'' –