Проблема с задачей Python
В общем код точно рабочий, просто из-за функций необходимых для автотеста, он не работает. в данный момент проблема в том что при запросе фильмов, ввод не зацикливается. Вводится один фильм и выдает результат. Нужна помощь в исправлении.
def get_input_parameters():
number = int(input('Сколько фильмов хотите добавить? '))
for _ in range(number):
new_favorite_films = input('Введите название фильма: ')
return new_favorite_films
pass
def display_result(favorite_films, errors):
print(f'Ваш список любимых фильмов: {", ".join(favorite_films)}')
print(f'Список отсутствующих фильмов: {", ".join(errors)}')
pass
def add_favorite_film(new_favorite_films, available_films):
errors = []
favorite_films = []
if new_favorite_films in available_films:
favorite_films.append(new_favorite_films)
else:
print('Ошибка: фильма', new_favorite_films, 'у нас нет :(')
errors.append(new_favorite_films)
return favorite_films, errors
pass
if __name__ == '__main__':
# Это условие необходимо, чтобы в рамках автотестов не произошёл
# вызов функций get_input_parameters и display_result
available_films = [
"Крепкий орешек", "Назад в будущее", "Таксист",
"Леон", "Богемская рапсодия", "Город грехов",
"Мементо", "Отступники", "Деревня"
]
new_favorite_films = get_input_parameters() # получаем параметры
favorite_films, errors = add_favorite_film(
new_favorite_films,
available_films
) # добавлем фильмы в список "любимых".
display_result(favorite_films, errors) # выводим результат
Ошибка тут:
def get_input_parameters():
number = int(input('Сколько фильмов хотите добавить? '))
for _ in range(number):
new_favorite_films = input('Введите название фильма: ')
return new_favorite_films # тут у тебя явно лишний TAB, если вводится всего 1
pass # это не нужно
должен быть список. Так, например:
def get_input_parameters():
number = int(input('Сколько фильмов хотите добавить? '))
new_favorite_films = []
for _ in range(number):
new_favorite_films += [input('Введите название фильма: ')]
return new_favorite_films
Код в блок кода оберните < >
Проблема в том, что функция get_input_parameters() возвращает результат после первой итерации цикла, поэтому ввод зацикливаться не будет. Чтобы решить эту проблему, нужно изменить функцию get_input_parameters() следующим образом:
def get_input_parameters():
number = int(input('Сколько фильмов хотите добавить? '))
new_favorite_films = []
for _ in range(number):
film = input('Введите название фильма: ')
new_favorite_films.append(film)
return new_favorite_films
В этой новой версии функции мы создаем пустой список new_favorite_films, затем в цикле добавляем новые фильмы в этот список и в конце возвращаем его. Таким образом, пользователю будет предложено ввести несколько фильмов, а не только один.