L11Task2.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import collections
  2. # Изначальный словарь с питомцами
  3. pets = {
  4. 1: {
  5. "Мухтар": {
  6. "Вид питомца": "Собака",
  7. "Возраст питомца": 9,
  8. "Имя владельца": "Павел"
  9. },
  10. },
  11. 2: {
  12. "Каа": {
  13. "Вид питомца": "желторотый питон",
  14. "Возраст питомца": 19,
  15. "Имя владельца": "Саша"
  16. },
  17. }
  18. }
  19. def get_suffix(age):
  20. """Возвращает правильное склонение слова 'год' в зависимости от возраста."""
  21. if age % 10 == 1 and age % 100 != 11:
  22. return "год"
  23. elif age % 10 in [2, 3, 4] and not (age % 100 in [12, 13, 14]):
  24. return "года"
  25. else:
  26. return "лет"
  27. def get_pet(ID):
  28. """Возвращает информацию о питомце по ID или False, если питомец не найден."""
  29. return pets.get(ID, False)
  30. def create():
  31. """Создает новую запись о питомце и добавляет ее в словарь pets."""
  32. import collections
  33. last_id = collections.deque(pets, maxlen=1)[0]
  34. new_id = last_id + 1
  35. pet_name = input("Введите имя питомца: ")
  36. pet_type = input("Введите вид питомца: ")
  37. pet_age = int(input("Введите возраст питомца: "))
  38. owner_name = input("Введите имя владельца: ")
  39. pets[new_id] = {
  40. pet_name: {
  41. "Вид питомца": pet_type,
  42. "Возраст питомца": pet_age,
  43. "Имя владельца": owner_name
  44. }
  45. }
  46. def read(ID):
  47. """Отображает информацию о питомце по ID в формате строки."""
  48. pet = get_pet(ID)
  49. if pet:
  50. pet_name = list(pet.keys())[0]
  51. pet_info = pet[pet_name]
  52. age_suffix = get_suffix(pet_info['Возраст питомца'])
  53. return (f"Это {pet_info['Вид питомца']} по кличке \"{pet_name}\". "
  54. f"Возраст питомца: {pet_info['Возраст питомца']} {age_suffix}. "
  55. f"Имя владельца: {pet_info['Имя владельца']}")
  56. else:
  57. return "Питомец с таким ID не найден."
  58. def update(ID):
  59. """Обновляет информацию о питомце по ID."""
  60. pet = get_pet(ID)
  61. if pet:
  62. pet_name = list(pet.keys())[0]
  63. pet_info = pet[pet_name]
  64. pet_info['Вид питомца'] = input("Введите новый вид питомца: ")
  65. pet_info['Возраст питомца'] = int(input("Введите новый возраст питомца: "))
  66. pet_info['Имя владельца'] = input("Введите новое имя владельца: ")
  67. else:
  68. print("Питомец с таким ID не найден.")
  69. def delete(ID):
  70. """Удаляет запись о питомце по ID."""
  71. if ID in pets:
  72. del pets[ID]
  73. else:
  74. print("Питомец с таким ID не найден.")
  75. def pets_list():
  76. """Выводит список всех питомцев."""
  77. for ID, pet in pets.items():
  78. pet_name = list(pet.keys())[0]
  79. pet_info = pet[pet_name]
  80. age_suffix = get_suffix(pet_info['Возраст питомца'])
  81. print(f"ID: {ID}, {pet_info['Вид питомца']} по кличке \"{pet_name}\". "
  82. f"Возраст питомца: {pet_info['Возраст питомца']} {age_suffix}. "
  83. f"Имя владельца: {pet_info['Имя владельца']}")
  84. # Основной цикл работы программы
  85. while True:
  86. command = input("Введите команду (create, read, update, delete, list, stop): ")
  87. if command == 'stop':
  88. break
  89. elif command == 'create':
  90. create()
  91. elif command == 'read':
  92. pet_id = int(input("Введите ID питомца: "))
  93. print(read(pet_id))
  94. elif command == 'update':
  95. pet_id = int(input("Введите ID питомца: "))
  96. update(pet_id)
  97. elif command == 'delete':
  98. pet_id = int(input("Введите ID питомца: "))
  99. delete(pet_id)
  100. elif command == 'list':
  101. pets_list()
  102. else:
  103. print("Неизвестная команда.")