Вопрос задан 05.10.2023 в 06:39. Предмет Информатика. Спрашивает Таужанова Яна.

(Python) Напишите программу для работы с рейтингами фильмов. Она может обрабатывать следующие

команды: add - добавить фильм с указанным названием. Если фильм с таким названием существует, выводите сообщение об ошибке. Рейтинги нового фильма - пустой словарь. delete - удалить фильм с указанным названием. Если фильма с таким названием не существует, выводите сообщение об ошибке. list - вывести список фильмов в виде таблицы (название, средний рейтинг). Если у фильма нет рейтингов, выводите вместо рейтинга сообщение, что фильм "не оценивался". rate - добавить оценку к фильму по названию. Нужно ввести имя пользователя и количество баллов от 1 до 10 (оно может быть дробным). Проверяйте, что оценка попадает в интервал от 0 до 10, предполагайте, что пользователь вводит только числа. Если пользователь ввёл оценку 0, удалите оценку этого пользователя. Если пользователь с указанным именем уже оценивал этот фильм, замените оценку на новую. find - найти фильм по названию и показать его название и все оценки в виде таблицы (имя пользователя, оценка) + среднюю оценку. Если у фильма нет рейтингов, выводите сообщение, что фильм "не оценивался". Напишите главный цикл приложения, который выводит меню и обрабатывает команды, используйте бесконечный цикл. Обрабатывайте команду exit для выхода. Выводите сообщение, если пользователь ввёл неправильную команду, и продолжайте работу. Оформите пожалуйста вывод аккуратно (аналогично телефонной книге). Выносите повторяющийся код и обработку каждой команды в функции.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Федів Антон.

dictionary = {}

while True:

   command = input('Введите команду: ')

   if command != 'exit' and command != 'list' and command != 'add' and command !=  'delete' and command != 'rate' and command != 'find':

       print('Error')

       continue

   if command == 'exit':

       break

   if command == 'list':

       for key in dictionary.keys():

           average = 0

           if len(dictionary[key]) == 0:

               print(f'Фильм {key} не оценивался')

           else:

               for key1 in dictionary[key].keys():

                   average += dictionary[key][key1]

               print(f'{key} средняя оценка: {average / len(dictionary[key])}')

       continue

   film = input('Введите название фильма: ')

   if command == 'add':

       if film in dictionary:

           print('Error')

       else:

           dictionary[film] = {}

   elif command == 'delete':

       if film in dictionary:

           del dictionary[film]

       else:

           print('Error')

   elif command == 'rate':

       name = input('Имя пользователя: ')

       rate = float(input('Оценка: '))

       if 0 < rate <= 10:

           dictionary[film][name] = rate

       else:

           print('Error')

   elif command == 'find':

       if len(dictionary[film]) == 0:

           print('Фильм не оценивался')

           continue

       for name, rate in dictionary[film].items():

           print(f'{name} поставил оценку: {rate}')

       average = 0

       for key in dictionary[film].keys():

           average += dictionary[film][key]

       print(f'Средняя оценка: {average / len(dictionary[film])}')

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вот программа для работы с рейтингами фильмов, реализующая указанные функции:

python
def add_movie(movies, movie_name): if movie_name not in movies: movies[movie_name] = {} else: print("Ошибка: Фильм с таким названием уже существует") def delete_movie(movies, movie_name): if movie_name in movies: del movies[movie_name] else: print("Ошибка: Фильм с таким названием не существует") def list_movies(movies): if not movies: print("Фильмы не оценивались") else: print("{:<20}{}".format("Название фильма", "Средний рейтинг")) for movie_name, ratings in movies.items(): average_rating = sum(ratings.values()) / len(ratings) if ratings else "не оценивался" print("{:<20}{}".format(movie_name, average_rating)) def rate_movie(movies, movie_name, user_name, rating): if 1 <= rating <= 10: if movie_name in movies: movies[movie_name][user_name] = rating else: print("Ошибка: Фильм с таким названием не существует") elif rating == 0: if movie_name in movies and user_name in movies[movie_name]: del movies[movie_name][user_name] else: print("Ошибка: Пользователь не оценивал этот фильм") else: print("Ошибка: Оценка должна быть в интервале от 1 до 10") def find_movie(movies, movie_name): if movie_name in movies: print("Фильм: {}".format(movie_name)) print("{:<20}{}".format("Имя пользователя", "Оценка")) for user, rating in movies[movie_name].items(): print("{:<20}{}".format(user, rating)) average_rating = sum(movies[movie_name].values()) / len(movies[movie_name]) print("Средний рейтинг: {:.2f}".format(average_rating)) else: print("Ошибка: Фильм с таким названием не существует") def main(): movies = {} while True: print("\nМеню:") print("1. Добавить фильм") print("2. Удалить фильм") print("3. Список фильмов") print("4. Оценить фильм") print("5. Найти фильм") print("6. Выход") choice = input("Введите номер команды: ") if choice == "1": movie_name = input("Введите название фильма: ") add_movie(movies, movie_name) elif choice == "2": movie_name = input("Введите название фильма: ") delete_movie(movies, movie_name) elif choice == "3": list_movies(movies) elif choice == "4": movie_name = input("Введите название фильма: ") user_name = input("Введите имя пользователя: ") try: rating = float(input("Введите оценку (от 1 до 10): ")) rate_movie(movies, movie_name, user_name, rating) except ValueError: print("Ошибка: Введите корректное число для оценки") elif choice == "5": movie_name = input("Введите название фильма: ") find_movie(movies, movie_name) elif choice == "6": break else: print("Ошибка: Неправильная команда") if __name__ == "__main__": main()

Просто скопируйте и вставьте этот код в свою среду Python и запустите его. Он создаст бесконечный цикл для взаимодействия с пользователем и выполнения команд для работы с рейтингами фильмов.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос