TypeError: элемент последовательности 0: ожидаемый экземпляр str, значение int найдено при попытке печати списка - PullRequest
0 голосов
/ 21 июня 2019

Я делаю простую программу для лифтов, в которой мне нужно вывести состав каждого этажа до и после движения лифта. Для этого я создаю список пассажиров не в лифте на каждом этаже. Проблема возникает, когда я пытаюсь распечатать этот конкретный список, состоящий из идентификационных данных пассажира.

Я пробовал многочисленные способы напечатать список с множеством возникающих ошибок индекса, таких как кортеж вне диапазона или этот элемент не повторяется.

interior = [[] for i in range(self._floors)]
for f in range(self._floors): 
    for p in self._passengers:
        if p.waiting() and p.starting_floor() == f:
            interior[f].append(p.getid())
            interior[f].sort()
    print('{passengers:^53}'.format(passengers = ''.join(interior[f])))

Ожидаемые результаты - идентификация пассажиров, указанная в списке. Результатом является вышеупомянутая ошибка IndexError

Редактировать: я попытался отключить команду печати и теперь получаю индекс списка из-за ошибки диапазона из append ()

Edit2: я преобразовал начальный список в понимание списка, чтобы был элемент, соответствующий каждому этажу. Сейчас получаю TypeError: элемент последовательности 0: ожидаемый экземпляр str, int найден.

1 Ответ

0 голосов
/ 21 июня 2019

interior - список с одним элементом - пустой список.

доступ к нему с помощью interior[f] позволяет получить доступ только к первому элементу interior[0]. Так что для любого этажа больше 0 вы получите ошибку, так как других элементов нет.

Похоже, вы хотели бы изменить:

interior = [[]]

до:

interior = [[] for i in len(self._floors)]

Таким образом, у вас будет пустой список для каждого этажа, к которому вы можете добавлять пассажиров.

...