|
1 | 1 | import random |
2 | 2 | import string |
| 3 | +import json |
3 | 4 |
|
4 | 5 | # Приветствие |
5 | 6 | def greet(): |
6 | | - print("Добро пожаловать в программу 'Менеджер фильмов и паролей'!") |
7 | | - print("Здесь вы можете управлять рейтингами фильмов и своими паролями.") |
| 7 | + print("Добро пожаловать в программу 'Менеджер произведений и паролей'!") |
| 8 | + print("Здесь вы можете управлять рейтингами произведений и своими паролями.") |
8 | 9 | print("Выберите режим работы:") |
9 | | - print("1. Управление рейтингами фильмов") |
| 10 | + print("1. Управление рейтингами произведений") |
10 | 11 | print("2. Управление паролями") |
11 | 12 |
|
12 | | -# Словарь для хранения фильмов и их рейтингов |
13 | | -movies = { |
14 | | - "Inception": 8.8, |
15 | | - "The Shawshank Redemption": 9.3, |
16 | | - "The Dark Knight": 9.0, |
17 | | - "Pulp Fiction": 8.9, |
18 | | - "Fight Club": 8.8 |
| 13 | +# Словарь для хранения произведений и их рейтингов |
| 14 | +works = { |
| 15 | + "Фильмы": { |
| 16 | + "Inception": 8.8, |
| 17 | + "The Shawshank Redemption": 9.3, |
| 18 | + "The Dark Knight": 9.0, |
| 19 | + }, |
| 20 | + "Книги": { |
| 21 | + "1984": 9.0, |
| 22 | + "To Kill a Mockingbird": 8.7, |
| 23 | + }, |
| 24 | + "Альбомы": { |
| 25 | + "The Dark Side of the Moon": 9.5, |
| 26 | + "Thriller": 8.9, |
| 27 | + } |
19 | 28 | } |
20 | 29 |
|
21 | 30 | # Словарь для хранения паролей |
22 | 31 | passwords = {} |
23 | 32 |
|
| 33 | +# Пароль для доступа к словарю |
| 34 | +dictionary_password = None |
| 35 | + |
24 | 36 | # Функция для генерации случайного пароля |
25 | | -def generate_random_password(length=12): |
| 37 | +def generate_random_password(length): |
26 | 38 | characters = string.ascii_letters + string.digits + string.punctuation |
27 | | - password = ''.join(random.choice(characters) for _ in range(length)) |
28 | | - return password |
29 | | - |
30 | | -# Функции для управления рейтингами фильмов |
31 | | -def show_movies(): |
32 | | - print("Список фильмов и их рейтинги:") |
33 | | - for movie, rating in movies.items(): |
34 | | - print("{}: {}".format(movie, rating)) |
35 | | - |
36 | | -def add_movie(): |
37 | | - movie = input("Введите название фильма: ") |
38 | | - rating = float(input("Введите рейтинг фильма: ")) |
39 | | - movies[movie] = rating |
40 | | - print("Фильм '{}' добавлен с рейтингом {}".format(movie, rating)) |
41 | | - |
42 | | -def remove_movie(): |
43 | | - movie = input("Введите название фильма для удаления: ") |
44 | | - if movie in movies: |
45 | | - del movies[movie] |
46 | | - print("Фильм '{}' удален".format(movie)) |
| 39 | + return ''.join(random.choice(characters) for _ in range(length)) |
| 40 | + |
| 41 | +# Функция для управления паролями |
| 42 | +def manage_passwords(): |
| 43 | + while True: |
| 44 | + print("\nДоступные команды:") |
| 45 | + print("1. Показать список паролей") |
| 46 | + print("2. Удалить пароль") |
| 47 | + print("3. Добавить пароль") |
| 48 | + print("4. Получить случайный пароль") |
| 49 | + print("5. Выход") |
| 50 | + command = input("Введите номер команды: ") |
| 51 | + if command == "1": |
| 52 | + print("Список паролей:") |
| 53 | + for name, password in passwords.items(): |
| 54 | + print(f"{name}: {password}") |
| 55 | + elif command == "2": |
| 56 | + name = input("Введите название пароля для удаления: ") |
| 57 | + if name in passwords: |
| 58 | + del passwords[name] |
| 59 | + print(f"Пароль для '{name}' удален.") |
| 60 | + else: |
| 61 | + print(f"Пароль для '{name}' не найден.") |
| 62 | + elif command == "3": |
| 63 | + name = input("Введите название для пароля: ") |
| 64 | + length = int(input("Введите длину пароля: ")) |
| 65 | + password = generate_random_password(length) |
| 66 | + passwords[name] = password |
| 67 | + print(f"Пароль для '{name}' добавлен: {password}") |
| 68 | + elif command == "4": |
| 69 | + if passwords: |
| 70 | + name, password = random.choice(list(passwords.items())) |
| 71 | + print(f"Случайный пароль: {name} - {password}") |
| 72 | + else: |
| 73 | + print("Нет доступных паролей.") |
| 74 | + elif command == "5": |
| 75 | + break |
| 76 | + else: |
| 77 | + print("Такой команды не существует.") |
| 78 | + |
| 79 | +# Функция для установки пароля на словарь |
| 80 | +def set_dictionary_password(): |
| 81 | + global dictionary_password |
| 82 | + dictionary_password = input("Введите пароль для доступа к словарю: ") |
| 83 | + print("Пароль для доступа к словарю установлен.") |
| 84 | + |
| 85 | +# Функция для проверки пароля |
| 86 | +def check_dictionary_password(): |
| 87 | + if dictionary_password: |
| 88 | + password_attempt = input("Введите пароль для доступа к словарю: ") |
| 89 | + return password_attempt == dictionary_password |
| 90 | + return True |
| 91 | + |
| 92 | +# Функция для записи данных в файл |
| 93 | +def save_to_file(filename, data): |
| 94 | + with open(filename, 'w') as file: |
| 95 | + json.dump(data, file) |
| 96 | + print(f"Данные сохранены в файл '{filename}'.") |
| 97 | + |
| 98 | +# Функции для управления рейтингами произведений |
| 99 | +def show_works(): |
| 100 | + if check_dictionary_password(): |
| 101 | + print("Список произведений и их рейтинги:") |
| 102 | + for category, items in works.items(): |
| 103 | + print(f"{category}:") |
| 104 | + for item, rating in items.items(): |
| 105 | + print(f" {item}: {rating}") |
47 | 106 | else: |
48 | | - print("Фильм '{}' не найден".format(movie)) |
| 107 | + print("Неверный пароль. Доступ запрещен.") |
49 | 108 |
|
50 | | -def random_movie(): |
51 | | - movie, rating = random.choice(list(movies.items())) |
52 | | - print("Случайный фильм: {} с рейтингом {}".format(movie, rating)) |
| 109 | +def add_work(): |
| 110 | + if check_dictionary_password(): |
| 111 | + category = input("Введите категорию произведения (Фильмы, Книги, Альбомы): ") |
| 112 | + if category not in works: |
| 113 | + works[category] = {} |
53 | 114 |
|
54 | | -def change_rating(): |
55 | | - movie = input("Введите название фильма для изменения рейтинга: ") |
56 | | - if movie in movies: |
57 | | - new_rating = float(input("Введите новый рейтинг: ")) |
58 | | - movies[movie] = new_rating |
59 | | - print("Рейтинг фильма '{}' изменен на {}".format(movie, new_rating)) |
| 115 | + work = input("Введите название произведения: ") |
| 116 | + rating = float(input("Введите рейтинг произведения: ")) |
| 117 | + works[category][work] = rating |
| 118 | + print(f"Произведение '{work}' добавлено с рейтингом {rating} в категорию '{category}'.") |
60 | 119 | else: |
61 | | - print("Фильм '{}' не найден".format(movie)) |
62 | | - |
63 | | -# Функции для управления паролями |
64 | | -def show_passwords(): |
65 | | - print("Список паролей:") |
66 | | - for name, password in passwords.items(): |
67 | | - print("{}: {}".format(name, password)) |
68 | | - |
69 | | -def add_password(): |
70 | | - name = input("Введите название для пароля: ") |
71 | | - password = generate_random_password() |
72 | | - passwords[name] = password |
73 | | - print("Пароль для '{}' добавлен: {}".format(name, password)) |
74 | | - |
75 | | -def remove_password(): |
76 | | - name = input("Введите название пароля для удаления: ") |
77 | | - if name in passwords: |
78 | | - del passwords[name] |
79 | | - print("Пароль для '{}' удален.".format(name)) |
| 120 | + print("Неверный пароль. Доступ запрещен.") |
| 121 | + |
| 122 | +def remove_work(): |
| 123 | + if check_dictionary_password(): |
| 124 | + category = input("Введите категорию произведения (Фильмы, Книги, Альбомы): ") |
| 125 | + if category in works: |
| 126 | + work = input("Введите название произведения для удаления: ") |
| 127 | + if work in works[category]: |
| 128 | + del works[category][work] |
| 129 | + print(f"Произведение '{work}' удалено из категории '{category}'.") |
| 130 | + else: |
| 131 | + print(f"Произведение '{work}' не найдено в категории '{category}'.") |
| 132 | + else: |
| 133 | + print(f"Категория '{category}' не найдена.") |
80 | 134 | else: |
81 | | - print("Пароль для '{}' не найден.".format(name)) |
| 135 | + print("Неверный пароль. Доступ запрещен.") |
82 | 136 |
|
83 | | -def random_password(): |
84 | | - if passwords: |
85 | | - name, password = random.choice(list(passwords.items())) |
86 | | - print("Случайный пароль: {} - {}".format(name, password)) |
| 137 | +def random_work(): |
| 138 | + if check_dictionary_password(): |
| 139 | + category = random.choice(list(works.keys())) |
| 140 | + work, rating = random.choice(list(works[category].items())) |
| 141 | + print(f"Случайное произведение: {category} - {work} с рейтингом {rating}") |
87 | 142 | else: |
88 | | - print("Нет доступных паролей.") |
| 143 | + print("Неверный пароль. Доступ запрещен.") |
| 144 | + |
| 145 | +def change_rating(): |
| 146 | + if check_dictionary_password(): |
| 147 | + category = input("Введите категорию произведения (Фильмы, Книги, Альбомы): ") |
| 148 | + if category in works: |
| 149 | + work = input("Введите название произведения для изменения рейтинга: ") |
| 150 | + if work in works[category]: |
| 151 | + new_rating = float(input("Введите новый рейтинг: ")) |
| 152 | + works[category][work] = new_rating |
| 153 | + print(f"Рейтинг произведения '{work}' изменен на {new_rating} в категории '{category}'.") |
| 154 | + else: |
| 155 | + print(f"Произведение '{work}' не найдено в категории '{category}'.") |
| 156 | + else: |
| 157 | + print(f"Категория '{category}' не найдена.") |
| 158 | + else: |
| 159 | + print("Неверный пароль. Доступ запрещен.") |
89 | 160 |
|
90 | 161 | # Основной цикл программы |
91 | 162 | def main(): |
92 | 163 | greet() |
93 | 164 | mode = input("Выберите режим (1 или 2): ") |
94 | 165 | if mode == "1": |
95 | | - print("Вы выбрали режим управления рейтингами фильмов.") |
| 166 | + print("Вы выбрали режим управления рейтингами произведений.") |
96 | 167 | while True: |
97 | | - print("Доступные команды:") |
98 | | - print("1. Показать список фильмов и их рейтинг") |
99 | | - print("2. Удалить фильм") |
100 | | - print("3. Добавить фильм") |
101 | | - print("4. Случайный фильм для пользователя") |
102 | | - print("5. Изменить рейтинг фильму") |
103 | | - print("6. Выход") |
| 168 | + print("\nДоступные команды:") |
| 169 | + print("1. Показать список произведений и их рейтинг") |
| 170 | + print("2. Удалить произведение") |
| 171 | + print("3. Добавить произведение") |
| 172 | + print("4. Случайное произведение") |
| 173 | + print("5. Изменить рейтинг произведения") |
| 174 | + print("6. Установить пароль для доступа к словарю") |
| 175 | + print("7. Сохранить данные в файл") |
| 176 | + print("8. Выход") |
104 | 177 | command = input("Введите номер команды: ") |
105 | 178 | if command == "1": |
106 | | - show_movies() |
| 179 | + show_works() |
107 | 180 | elif command == "2": |
108 | | - remove_movie() |
| 181 | + remove_work() |
109 | 182 | elif command == "3": |
110 | | - add_movie() |
| 183 | + add_work() |
111 | 184 | elif command == "4": |
112 | | - random_movie() |
| 185 | + random_work() |
113 | 186 | elif command == "5": |
114 | 187 | change_rating() |
115 | 188 | elif command == "6": |
| 189 | + set_dictionary_password() |
| 190 | + elif command == "7": |
| 191 | + filename = input("Введите имя файла для сохранения: ") |
| 192 | + save_to_file(filename, works) |
| 193 | + elif command == "8": |
116 | 194 | break |
117 | 195 | else: |
118 | 196 | print("Такой команды не существует.") |
119 | 197 | elif mode == "2": |
120 | | - print("Вы выбрали режим управления паролями.") |
121 | | - while True: |
122 | | - print("Доступные команды:") |
123 | | - print("1. Показать список паролей") |
124 | | - print("2. Удалить пароль") |
125 | | - print("3. Добавить пароль") |
126 | | - print("4. Получить случайный пароль") |
127 | | - print("5. Выход") |
128 | | - command = input("Введите номер команды: ") |
129 | | - if command == "1": |
130 | | - show_passwords() |
131 | | - elif command == "2": |
132 | | - remove_password() |
133 | | - elif command == "3": |
134 | | - add_password() |
135 | | - elif command == "4": |
136 | | - random_password() |
137 | | - elif command == "5": |
138 | | - break |
139 | | - else: |
140 | | - print("Такой команды не существует.") |
| 198 | + manage_passwords() |
141 | 199 | else: |
142 | 200 | print("Неверный выбор режима.") |
143 | 201 |
|
|
0 commit comments