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

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

def rate_f(movies):
if len(dictionary[movies]) == 0:
return True
def film_in_dictionary(movies):
if movies in dictionary:
return True
else:
return False
def average(movies):
mean = 0
for key2 in dictionary[movies].keys():
mean += dictionary[movies][key2]
print(f'{movies} средняя оценка: {mean / len(dictionary[movies])}')
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():
if rate_f(key):
print(f'{key} не оценивался')
else:
average(key)
continue
film = input('Введите название фильма: ')
if command == 'add':
if film_in_dictionary(film):
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 rate_f(film):
continue
for name, rate in dictionary[film].items():
print(f'{name} поставил оценку: {rate}')
average(film)



Конечно, вот пример программы на Python, реализующей описанный функционал:
pythondef add_movie(movies, movie_name):
if movie_name in movies:
print("Фильм с таким названием уже существует.")
else:
movies[movie_name] = {}
def delete_movie(movies, movie_name):
if movie_name in movies:
del movies[movie_name]
else:
print("Фильм с таким названием не найден.")
def list_movies(movies):
print("Список фильмов:")
print("{:<20} {:<20}".format("Название", "Средний рейтинг"))
for movie, ratings in movies.items():
if not ratings:
average_rating = "не оценивался"
else:
average_rating = sum(ratings.values()) / len(ratings)
print("{:<20} {:<20}".format(movie, average_rating))
def rate_movie(movies, movie_name, user_name, rating):
if movie_name in movies:
if rating == 0:
if user_name in movies[movie_name]:
del movies[movie_name][user_name]
else:
movies[movie_name][user_name] = rating
else:
print("Фильм с таким названием не найден.")
def find_movie(movies, movie_name):
if movie_name in movies:
print("Фильм:", movie_name)
print("{:<20} {:<10}".format("Пользователь", "Оценка"))
for user, rating in movies[movie_name].items():
print("{:<20} {:<10}".format(user, rating))
if not movies[movie_name]:
print("Фильм не оценивался.")
else:
average_rating = sum(movies[movie_name].values()) / len(movies[movie_name])
print("Средний рейтинг:", 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("Выберите команду (1-6): ")
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("Введите имя пользователя: ")
rating = float(input("Введите оценку (от 1 до 10): "))
rate_movie(movies, movie_name, user_name, rating)
elif choice == '5':
movie_name = input("Введите название фильма: ")
find_movie(movies, movie_name)
elif choice == '6':
print("Программа завершена.")
break
else:
print("Неправильная команда. Пожалуйста, выберите команду от 1 до 6.")
if __name__ == "__main__":
main()
Скопируйте этот код в файл с расширением .py
и запустите его. Программа будет предоставлять пользователю меню для выполнения различных команд с рейтингами фильмов.


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







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