Top.Mail.Ru
Ответы

Проблема с задачей 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) # выводим результат

Дополнен
По дате
По рейтингу
Аватар пользователя
Высший разум

Ошибка тут:

123456
 def get_input_parameters():  
    number = int(input('Сколько фильмов хотите добавить? '))  
    for _ in range(number):  
        new_favorite_films = input('Введите название фильма: ')  
        return new_favorite_films # тут у тебя явно лишний TAB, если вводится всего 1
    pass # это не нужно 

должен быть список. Так, например:

123456
 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() следующим образом:

1234567
 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, затем в цикле добавляем новые фильмы в этот список и в конце возвращаем его. Таким образом, пользователю будет предложено ввести несколько фильмов, а не только один.