Как перебрать значение индекса в списке, используя целое число - PullRequest
0 голосов
/ 27 сентября 2018
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, без итерации значения индекса (с изменением напечатанных данных).

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Причина, по которой ваши операторы печати одинаковы, заключается в том, что вам нужно вывести 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')

Но я все еще думаю, что Ракеш имеет лучший код, поэтому я бы пошел с его.

0 голосов
/ 27 сентября 2018

Ваша итерация немного неверна.

Использование:

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...