Skip to content

Commit 26d526f

Browse files
authored
Update how.py
1 parent 7bfffd4 commit 26d526f

1 file changed

Lines changed: 157 additions & 99 deletions

File tree

123/how.py

Lines changed: 157 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -1,143 +1,201 @@
11
import random
22
import string
3+
import json
34

45
# Приветствие
56
def greet():
6-
print("Добро пожаловать в программу 'Менеджер фильмов и паролей'!")
7-
print("Здесь вы можете управлять рейтингами фильмов и своими паролями.")
7+
print("Добро пожаловать в программу 'Менеджер произведений и паролей'!")
8+
print("Здесь вы можете управлять рейтингами произведений и своими паролями.")
89
print("Выберите режим работы:")
9-
print("1. Управление рейтингами фильмов")
10+
print("1. Управление рейтингами произведений")
1011
print("2. Управление паролями")
1112

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+
}
1928
}
2029

2130
# Словарь для хранения паролей
2231
passwords = {}
2332

33+
# Пароль для доступа к словарю
34+
dictionary_password = None
35+
2436
# Функция для генерации случайного пароля
25-
def generate_random_password(length=12):
37+
def generate_random_password(length):
2638
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}")
47106
else:
48-
print("Фильм '{}' не найден".format(movie))
107+
print("Неверный пароль. Доступ запрещен.")
49108

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] = {}
53114

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}'.")
60119
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}' не найдена.")
80134
else:
81-
print("Пароль для '{}' не найден.".format(name))
135+
print("Неверный пароль. Доступ запрещен.")
82136

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}")
87142
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("Неверный пароль. Доступ запрещен.")
89160

90161
# Основной цикл программы
91162
def main():
92163
greet()
93164
mode = input("Выберите режим (1 или 2): ")
94165
if mode == "1":
95-
print("Вы выбрали режим управления рейтингами фильмов.")
166+
print("Вы выбрали режим управления рейтингами произведений.")
96167
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. Выход")
104177
command = input("Введите номер команды: ")
105178
if command == "1":
106-
show_movies()
179+
show_works()
107180
elif command == "2":
108-
remove_movie()
181+
remove_work()
109182
elif command == "3":
110-
add_movie()
183+
add_work()
111184
elif command == "4":
112-
random_movie()
185+
random_work()
113186
elif command == "5":
114187
change_rating()
115188
elif command == "6":
189+
set_dictionary_password()
190+
elif command == "7":
191+
filename = input("Введите имя файла для сохранения: ")
192+
save_to_file(filename, works)
193+
elif command == "8":
116194
break
117195
else:
118196
print("Такой команды не существует.")
119197
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()
141199
else:
142200
print("Неверный выбор режима.")
143201

0 commit comments

Comments
 (0)