В списке есть значения но Питон все равно ругается "pop from empty list". Что не так?
sandwich_orders = ['hamburger', 'panini', 'BLT', 'Monte-Kristo']
finished_sandwiches = []
for sandwich in sandwich_orders:
print(f"I made you {sandwich}")
while True:
order = sandwich_orders.pop()
finished_sandwiches.append(order)
print(finished_sandwiches)
Ответы (3 шт):
Автор решения: Dmitry
→ Ссылка
Все достаточно просто, если знать, что тип list изменяемый. Следовательно, вызывая, метод pop() в бесконечном цикле, вы в конце концов получите пустой список. Вопрос, а что вы ожидаете? У вас нет выхода из цикла while, при пустом списку sandwich_orders
Добавьте в конец проверку длины списка, и у вас ошибка пропадет
while True:
order = sandwich_orders.pop()
finished_sandwiches.append(order)
print(finished_sandwiches)
if len(sandwich_orders) == 0:
break
Автор решения: CameL
→ Ссылка
sandwich_orders = ['hamburger', 'panini', 'BLT', 'Monte-Kristo']
finished_sandwiches = []
for sandwich in sandwich_orders:
print(f"I made you {sandwich}")
while len(sandwich_orders) > 0:
order = sandwich_orders.pop()
finished_sandwiches.append(order)
print(finished_sandwiches)
Поменяйте условие в цикле while
Автор решения: CrazyElf
→ Ссылка
while True: # <-- нет проверки на исчерпание списка
order = sandwich_orders.pop()
...
Нужно поменять условие цикла, чтобы он прекратился, когда вы исчерпаете список. Сейчас вы продолжаете извлекать элементы с помощью .pop даже из пустого списка.
while sandwich_orders:
order = sandwich_orders.pop()
...