Как последовательно сократить список? [python]
Изучаю питон по книге Э.Мэтиза, помогите разобраться с задачей пожалуйста.
Задача: Используйте метод pop() для последовательного удаления гостей из списка до тех пор, пока в списке не останется только 2 человека. Каждый раз, когда из списка удаляется очередное имя, выведи для этого человека сообщение о том, что ты сожалеешь об отмене приглашения.
Мой код:
guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
for guest in guests:
count_guests = len(guests)
if count_guests != 2:
popped_guests = guests.pop()
print(popped_guests.title() + ', вы удалены из списка приглашенных! Мне жаль!')
else:
print(guest.title() + ', а для вас осталось приглашение!')
Терминал выводит такой ответ:
Вася, вы удалены из списка приглашенных! Мне жаль!
Саша, вы удалены из списка приглашенных! Мне жаль!
Алена, вы удалены из списка приглашенных! Мне жаль!
Вопросы: почему не срабатывает else? почему удаляет только 3 из 6 элементов списка, когда должен вроде удалить 4? Спасибо!
Ответы (3 шт):
Вы зря вот это:
for guest in guests:
затеяли. На четвёртом круге цикл должен дойти до Алёны, а её уже и нет.
Измените цикл
Для таких целей лучше всего использовать цикл while.
guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
while len(guests) > 2:
popped_guest = guests.pop()
print(popped_guest.title() + ', вы удалены из списка приглашенных! Мне жаль!')
Ну и если вы хотите вывести тех, кому приглашение досталось:
guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
while len(guests) > 2:
popped_guest = guests.pop()
print(popped_guest.title() + ', вы удалены из списка приглашенных! Мне жаль!')
for g in guests:
print(g.title() + ', а для вас осталось приглашение!')
Используйте цикл While, удаляя элементы, пока в списке их не останется два.
guests = ['алина', 'давид', 'кобзон', 'алена', 'саша', 'вася']
while len(guests) > 2:
popped_guests = guests.pop()
print(popped_guests.title() + ', вы удалены из списка приглашенных! Мне жаль!')
else:
print([guest.title()+ ', а для вас осталось приглашение!' for guest in guests])