|
|
@@ -0,0 +1,121 @@
|
|
|
+import collections
|
|
|
+
|
|
|
+# Изначальный словарь с питомцами
|
|
|
+pets = {
|
|
|
+ 1: {
|
|
|
+ "Мухтар": {
|
|
|
+ "Вид питомца": "Собака",
|
|
|
+ "Возраст питомца": 9,
|
|
|
+ "Имя владельца": "Павел"
|
|
|
+ },
|
|
|
+ },
|
|
|
+ 2: {
|
|
|
+ "Каа": {
|
|
|
+ "Вид питомца": "желторотый питон",
|
|
|
+ "Возраст питомца": 19,
|
|
|
+ "Имя владельца": "Саша"
|
|
|
+ },
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+def get_suffix(age):
|
|
|
+ """Возвращает правильное склонение слова 'год' в зависимости от возраста."""
|
|
|
+ if age % 10 == 1 and age % 100 != 11:
|
|
|
+ return "год"
|
|
|
+ elif age % 10 in [2, 3, 4] and not (age % 100 in [12, 13, 14]):
|
|
|
+ return "года"
|
|
|
+ else:
|
|
|
+ return "лет"
|
|
|
+
|
|
|
+
|
|
|
+def get_pet(ID):
|
|
|
+ """Возвращает информацию о питомце по ID или False, если питомец не найден."""
|
|
|
+ return pets.get(ID, False)
|
|
|
+
|
|
|
+
|
|
|
+def create():
|
|
|
+ """Создает новую запись о питомце и добавляет ее в словарь pets."""
|
|
|
+ import collections
|
|
|
+ last_id = collections.deque(pets, maxlen=1)[0]
|
|
|
+ new_id = last_id + 1
|
|
|
+ pet_name = input("Введите имя питомца: ")
|
|
|
+ pet_type = input("Введите вид питомца: ")
|
|
|
+ pet_age = int(input("Введите возраст питомца: "))
|
|
|
+ owner_name = input("Введите имя владельца: ")
|
|
|
+
|
|
|
+ pets[new_id] = {
|
|
|
+ pet_name: {
|
|
|
+ "Вид питомца": pet_type,
|
|
|
+ "Возраст питомца": pet_age,
|
|
|
+ "Имя владельца": owner_name
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+def read(ID):
|
|
|
+ """Отображает информацию о питомце по ID в формате строки."""
|
|
|
+ pet = get_pet(ID)
|
|
|
+ if pet:
|
|
|
+ pet_name = list(pet.keys())[0]
|
|
|
+ pet_info = pet[pet_name]
|
|
|
+ age_suffix = get_suffix(pet_info['Возраст питомца'])
|
|
|
+ return (f"Это {pet_info['Вид питомца']} по кличке \"{pet_name}\". "
|
|
|
+ f"Возраст питомца: {pet_info['Возраст питомца']} {age_suffix}. "
|
|
|
+ f"Имя владельца: {pet_info['Имя владельца']}")
|
|
|
+ else:
|
|
|
+ return "Питомец с таким ID не найден."
|
|
|
+
|
|
|
+
|
|
|
+def update(ID):
|
|
|
+ """Обновляет информацию о питомце по ID."""
|
|
|
+ pet = get_pet(ID)
|
|
|
+ if pet:
|
|
|
+ pet_name = list(pet.keys())[0]
|
|
|
+ pet_info = pet[pet_name]
|
|
|
+ pet_info['Вид питомца'] = input("Введите новый вид питомца: ")
|
|
|
+ pet_info['Возраст питомца'] = int(input("Введите новый возраст питомца: "))
|
|
|
+ pet_info['Имя владельца'] = input("Введите новое имя владельца: ")
|
|
|
+ else:
|
|
|
+ print("Питомец с таким ID не найден.")
|
|
|
+
|
|
|
+
|
|
|
+def delete(ID):
|
|
|
+ """Удаляет запись о питомце по ID."""
|
|
|
+ if ID in pets:
|
|
|
+ del pets[ID]
|
|
|
+ else:
|
|
|
+ print("Питомец с таким ID не найден.")
|
|
|
+
|
|
|
+
|
|
|
+def pets_list():
|
|
|
+ """Выводит список всех питомцев."""
|
|
|
+ for ID, pet in pets.items():
|
|
|
+ pet_name = list(pet.keys())[0]
|
|
|
+ pet_info = pet[pet_name]
|
|
|
+ age_suffix = get_suffix(pet_info['Возраст питомца'])
|
|
|
+ print(f"ID: {ID}, {pet_info['Вид питомца']} по кличке \"{pet_name}\". "
|
|
|
+ f"Возраст питомца: {pet_info['Возраст питомца']} {age_suffix}. "
|
|
|
+ f"Имя владельца: {pet_info['Имя владельца']}")
|
|
|
+
|
|
|
+
|
|
|
+# Основной цикл работы программы
|
|
|
+while True:
|
|
|
+ command = input("Введите команду (create, read, update, delete, list, stop): ")
|
|
|
+ if command == 'stop':
|
|
|
+ break
|
|
|
+ elif command == 'create':
|
|
|
+ create()
|
|
|
+ elif command == 'read':
|
|
|
+ pet_id = int(input("Введите ID питомца: "))
|
|
|
+ print(read(pet_id))
|
|
|
+ elif command == 'update':
|
|
|
+ pet_id = int(input("Введите ID питомца: "))
|
|
|
+ update(pet_id)
|
|
|
+ elif command == 'delete':
|
|
|
+ pet_id = int(input("Введите ID питомца: "))
|
|
|
+ delete(pet_id)
|
|
|
+ elif command == 'list':
|
|
|
+ pets_list()
|
|
|
+ else:
|
|
|
+ print("Неизвестная команда.")
|