我需要使用列表推导(需要将列表推导用于作业)打印出具有自己位置(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] 删除。
我来说两句