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

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

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])}')



Вот программа для работы с рейтингами фильмов, реализующая указанные функции:
pythondef 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 и запустите его. Он создаст бесконечный цикл для взаимодействия с пользователем и выполнения команд для работы с рейтингами фильмов.


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







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili