火箭对Python列表的理解

AMCode96

我需要使用列表推导(需要将列表推导用于作业)打印出具有自己位置(x和y)的火箭列表。

目前,当我打印列表时遇到一个问题,它会先打印(0,0)9次,然后再为每个火箭打印分配的x和y值。我对python很陌生,所以请多多包涵。

class Rocket:
    ## Fill in the rest of the class definition

  def __init__ (self, x=0,y=0):
       self.x = x
       self.y = y

       
  def moveup(self):
        self.y += 1

rocket = Rocket(0,0)
print("Starting position is " , rocket.x, rocket.y)


direction = input("What direction do you want to go?")

if direction == "up":
     print("you went up")
     rocket.moveup()
     print("Position: ", rocket.x, rocket.y)

else:
      print("Nothing happened")


#-------------------------------------------------------------------------------------

rockets = [Rocket() for x in range(0,10)]

rockets.append(Rocket(0,0))
rockets.append(Rocket(1,1))
rockets.append(Rocket(2,2))
rockets.append(Rocket(3,3))
rockets.append(Rocket(4,4))
rockets.append(Rocket(5,5))
rockets.append(Rocket(6,6))
rockets.append(Rocket(7,7))
rockets.append(Rocket(8,8))
rockets.append(Rocket(9,9))

for rocket in rockets:
  print(rocket.x,rocket.y)

我的输出是:

Starting position is  0 0
What direction do you want to go?up
you went up
Position:  0 1
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9

我想我部分知道发生了什么,当我第一次列出列表时,每个火箭0,0,然后追加时,它会创建一个新火箭而不是对其进行编辑。我想我的主要问题是如何编辑数组的索引来更正此问题?

巴尔玛

您不需要列表理解和附加。只需使用列表理解中所需的火箭来初始化列表

rockets = [Rocket(i, i) for i in range(10)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章