繁体   English   中英

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

[英]Python Index Error using a for loop and list

我是一个初学者,我想用乌龟编写一个简单的游戏。 这个想法是让一个玩家和多个敌人。 当玩家击中敌人时,敌人会改变位置(随机)。 但是,当我创建一个用于制作多个敌对对象的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个物体,全部为红色,圆形等。

您可以这样操作,甚至不需要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)

我对turtle不太了解,因此语法可能会略有偏离。

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))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM