class Planet:
def __init__(self, name, radius, system, gravity):
self.name=name
self.radius=radius
self.gravity=gravity
self.system=system
def orbit(self):
return(f'{self.name} is orbiting in the {name} system')
planet_list=[]
while True:
name = input('Enter the Planet\'s name: \n')
radius = int(input('Enter the Planet\'s radius: \n'))
gravity = int(input('Enter the Planet\'s gravity: \n'))
system = input('Enter the Planet\'s system: \n')
sub_list=[name,radius,gravity,system]
planet_list.append(sub_list)
again=input('\nAdd another planet? (Y/N): ')
if again.startswith('y') or again.startswith('Y'):
continue
elif again.startswith('n') or again.startswith('N'):
break
else:
print('I didn\'t quite catch that...')
continue
def planet_intro(dictionary):
for world in planet_list:
i=0
print(f'\nPlanet: {planet_list[i][0]}\nRadius: {planet_list[i][1]}\nGravity: {planet_list[i][2]}\nSystem: {planet_list[i][3]}\n')
i+=1
planet_intro(planet_list)
我已经有一段时间了,但是无论出于什么原因,我都无法声明整数并将该变量用作索引的值。我今天刚从语言上跳入Java,所以这可能是一个非常简单的解决方案,已经超出了我的脑海,但是我还没有弄清楚。
因此,如果我运行此命令,它将为planet_list
中的许多列表重复相同的数据,而不会迭代索引的值(更改打印的数据)。
答案 0 :(得分:2)
您的迭代有点不正确。
使用:
def planet_intro(planet_list):
for world in planet_list:
print(f'\nPlanet: {world[0]}\nRadius: {world[1]}\nGravity: {world[2]}\nSystem: {world[3]}\n')
答案 1 :(得分:1)
打印语句相同的原因是您需要将i=0
移出循环(每次循环时,您都将i
重置为0
)。另外,您应该将planet_list
def planet_intro(planet_list):
i=0
for world in planet_list:
print(f'\nPlanet: {planet_list[i][0]}\nRadius: {planet_list[i][1]}\nGravity: {planet_list[i][2]}\nSystem: {planet_list[i][3]}\n')
i+=1
您还可以使用枚举遍历列表中的项目并获得索引。您的代码想要:
def planet_intro(planet_list):
for i, world in enumerate(planet_list):
print(f'\nPlanet: {planet_list[i][0]}\nRadius: {planet_list[i][1]}\nGravity: {planet_list[i][2]}\nSystem: {planet_list[i][3]}\n')
但是我仍然认为Rakesh具有最好的代码,所以我会选择他。