使用for循环和列表的Python索引错误

时间:2019-05-03 11:22:14

标签: python turtle-graphics

我是一个初学者,我想用乌龟编写一个简单的游戏。这个想法是让一个玩家和多个敌人。当玩家击中敌人时,敌人会改变位置(随机)。但是,当我创建一个用于制作多个敌对对象的for循环时,出现了此索引错误:

Traceback (most recent call last):
  File "/Users/name/PycharmProjects/untitled1/Testing", line 5, in <module>
    enemys[count].append(turtle.Turtle())
IndexError: list index out of range

我尝试使用range(0, len(enemys)),但是它没有达到我想要的目的,因为enemys的长度为零,所以它不会成为敌人。这是我的代码:

import turtle    
maxEnemies = 6
enemys= []
for count in range(0, maxEnemies):
    enemys[count].append(turtle.Turtle())
    enemys[count].speed(0)
    enemys[count].shape("circle")
    enemys[count].color("red")
    enemys[count].penup()
    enemys[count].setpos(random.randint(-300, 300), random.randint(-300, 300))

我的期望是它将产生6个物体,全部为红色,圆形等。

2 个答案:

答案 0 :(得分:1)

您可以这样做,甚至不需要Call: lm(formula = y ~ x1 + x2) Residuals: Min 1Q Median 3Q Max -6 -2 0 2 6 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 74.0000 3.4226 21.621 1.14e-07 *** x1 1.8000 0.6071 2.965 0.021 * x2 0.4000 0.3071 1.303 0.234 --- Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 Residual standard error: 4.781 on 7 degrees of freedom Multiple R-squared: 0.9971, Adjusted R-squared: 0.9963 F-statistic: 1209 on 2 and 7 DF, p-value: 1.291e-09 变量。

count

我对import turtle maxEnemies = 6 enemys= [] for _ in range(0, maxEnemies): enemy = turtle.Turtle() enemy.speed(0) enemy.shape('circle') enemy.color('red') enemy.penup() enemy.setpos(random.randint(-300, 300), random.randint(-300, 300)) enemys.append(enemy) 不太了解,因此语法可能会略有不同。

答案 1 :(得分:0)

enemys[count].append()会将值附加到列表,因为您在列表enemys的元素上使用它,它将尝试附加到enemys内的列表,但它为空所以它给出了错误。 这是正确的代码:

for count in range(0, maxEnemies):
    enemys.append(turtle.Turtle())
    enemys[count].speed(0)
    enemys[count].shape("circle")
    enemys[count].color("red")
    enemys[count].penup()
    enemys[count].setpos(random.randint(-300, 300), random.randint(-300, 300))