Advertisement
Hasli4

Untitled

Apr 4th, 2025 (edited)
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.99 KB | None | 0 0
  1. import random
  2.  
  3. # ==============================
  4. # 1. КЛАСС Animals
  5. # ==============================
  6. class Animals:
  7.     def __init__(self, name, age):
  8.         """
  9.        Конструктор класса Animals.
  10.        name (str): кличка животного (вводится пользователем)
  11.        age (int): возраст животного (вводится пользователем)
  12.        mood (int): уровень настроения, генерируется случайно от 0 до 6
  13.        """
  14.         self.name = name
  15.         self.age = age
  16.         mood_descriptions = {
  17.             0: "очень плохо",
  18.             1: "плохо",
  19.             2: "так себе",
  20.             3: "нормально",
  21.             4: "хорошо",
  22.             5: "отлично",
  23.             6: "просто супер"
  24.         }
  25.         self.mood = mood_descriptions[random.randint(0, 6)]
  26.  
  27.     def get_mood(self):
  28.         """Выводит уровень настроения животного."""
  29.         print(f"Уровень настроения {self.name}: {self.mood}")
  30.  
  31.     def eat(self):
  32.         """Увеличивает уровень настроения на 2."""
  33.         self.mood += 2
  34.         if self.mood > 6:
  35.             self.mood = 6
  36.         print(f"{self.name} поел(а) и настроение выросло до {self.mood}.")
  37.  
  38.     def sleep(self):
  39.         """Увеличивает уровень настроения на 1."""
  40.         self.mood += 1
  41.         if self.mood > 6:
  42.             self.mood = 6
  43.         print(f"{self.name} поспал(а) и настроение выросло до {self.mood}.")
  44.  
  45.     def bore(self):
  46.         """Снижает уровень настроения на 1, но не ниже 0."""
  47.         self.mood -= 1
  48.         if self.mood < 0:
  49.             self.mood = 0
  50.         print(f"{self.name} скучает, настроение снизилось до {self.mood}.")
  51.  
  52.     def get_sick(self):
  53.         """Снижает уровень настроения на 3, но не ниже 0."""
  54.         self.mood -= 3
  55.         if self.mood < 0:
  56.             self.mood = 0
  57.         print(f"{self.name} заболел(а), настроение снизилось до {self.mood}.")
  58.  
  59. # ==============================
  60. # 2. КЛАСС Dogs (наследует Animals)
  61. # ==============================
  62. class Dogs(Animals):
  63.     count = 0  # Класс-атрибут для подсчёта количества собак
  64.  
  65.     def __init__(self, name, age):
  66.         # Вызываем конструктор родительского класса для инициализации name, age и mood
  67.         super().__init__(name, age)
  68.         Dogs.count += 1  # Увеличиваем счетчик собак
  69.  
  70.     def __str__(self):
  71.         """Возвращает строковое представление объекта Dogs."""
  72.         return f"Собака: {self.name}, возраст: {self.age}, настроение: {self.mood}"
  73.  
  74.     def walk(self):
  75.         """Метод 'гулять': повышает уровень настроения на 2."""
  76.         self.mood += 2
  77.         if self.mood > 6:
  78.             self.mood = 6
  79.         print(f"{self.name} гуляет и настроение повышается до {self.mood}.")
  80.  
  81.     @classmethod
  82.     def statistics(cls):
  83.         """Выводит статистику по количеству собак."""
  84.         print(f"Всего собак: {cls.count}")
  85.  
  86. # ==============================
  87. # 3. КЛАСС Cats (наследует Animals)
  88. # ==============================
  89. class Cats(Animals):
  90.     count = 0  # Класс-атрибут для подсчёта количества кошек
  91.  
  92.     def __init__(self, name, age):
  93.         super().__init__(name, age)
  94.         Cats.count += 1  # Увеличиваем счетчик кошек
  95.  
  96.     def __str__(self):
  97.         """Возвращает строковое представление объекта Cats."""
  98.         return f"Кошка: {self.name}, возраст: {self.age}, настроение: {self.mood}"
  99.  
  100.     def play(self):
  101.         """Метод 'играть': повышает уровень настроения на 3."""
  102.         self.mood += 3
  103.         if self.mood > 6:
  104.             self.mood = 6
  105.         print(f"{self.name} играет и настроение повышается до {self.mood}.")
  106.  
  107.     @classmethod
  108.     def statistics(cls):
  109.         """Выводит статистику по количеству кошек."""
  110.         print(f"Всего кошек: {cls.count}")
  111.  
  112. # ==============================
  113. # Меню для работы с программой
  114. # ==============================
  115. def display_animals(animal_list):
  116.     """
  117.    Выводит список животных с нумерацией.
  118.    animal_list: список объектов (Dogs или Cats).
  119.    """
  120.     if not animal_list:
  121.         print("Список пуст.")
  122.         return
  123.     for index, animal in enumerate(animal_list, start=1):
  124.         print(f"{index}. {animal}")
  125.  
  126. def find_animal_by_name(animal_list, name):
  127.     """
  128.    Ищет животное по кличке в списке.
  129.    Возвращает объект, если найден, иначе None.
  130.    """
  131.     for animal in animal_list:
  132.         if animal.name.lower() == name.lower():
  133.             return animal
  134.     return None
  135.  
  136. def menu():
  137.     # Списки для хранения собак и кошек
  138.     dogs_list = []
  139.     cats_list = []
  140.  
  141.     while True:
  142.         print("\n=== МЕНЮ ===")
  143.         print("1. Добавить животное (1 — собака, 2 — кошка)")
  144.         print("2. Вывести количество животных (1 — собак, 2 — кошек)")
  145.         print("3. Вывести информацию о животном (1 — собака, 2 — кошка, затем кличка)")
  146.         print("4. Действия с животным (1 — собака, 2 — кошка, затем выберите действие и кличку)")
  147.         print("5. Выход")
  148.  
  149.         choice = input("Выберите пункт меню: ").strip()
  150.  
  151.         if choice == "1":
  152.             animal_type = input("Введите тип животного (1 — собака, 2 — кошка): ").strip()
  153.             name = input("Введите кличку: ").strip()
  154.             try:
  155.                 age = int(input("Введите возраст: "))
  156.             except ValueError:
  157.                 print("Возраст должен быть числом!")
  158.                 continue
  159.  
  160.             if animal_type == "1":
  161.                 new_dog = Dogs(name, age)
  162.                 dogs_list.append(new_dog)
  163.                 print("Собака добавлена.")
  164.             elif animal_type == "2":
  165.                 new_cat = Cats(name, age)
  166.                 cats_list.append(new_cat)
  167.                 print("Кошка добавлена.")
  168.             else:
  169.                 print("Неверный тип животного!")
  170.  
  171.         elif choice == "2":
  172.             animal_type = input("Вывести количество (1 — собак, 2 — кошек): ").strip()
  173.             if animal_type == "1":
  174.                 Dogs.statistics()
  175.             elif animal_type == "2":
  176.                 Cats.statistics()
  177.             else:
  178.                 print("Неверный выбор!")
  179.  
  180.         elif choice == "3":
  181.             animal_type = input("Вывести информацию о животном (1 — собака, 2 — кошка): ").strip()
  182.             name = input("Введите кличку: ").strip()
  183.             if animal_type == "1":
  184.                 animal = find_animal_by_name(dogs_list, name)
  185.                 if animal:
  186.                     print(animal)
  187.                 else:
  188.                     print("Собака с такой кличкой не найдена!")
  189.             elif animal_type == "2":
  190.                 animal = find_animal_by_name(cats_list, name)
  191.                 if animal:
  192.                     print(animal)
  193.                 else:
  194.                     print("Кошка с такой кличкой не найдена!")
  195.             else:
  196.                 print("Неверный выбор!")
  197.  
  198.         elif choice == "4":
  199.             animal_type = input("Действие с животным (1 — собака, 2 — кошка): ").strip()
  200.             name = input("Введите кличку животного: ").strip()
  201.             if animal_type == "1":
  202.                 animal = find_animal_by_name(dogs_list, name)
  203.                 if not animal:
  204.                     print("Собака с такой кличкой не найдена!")
  205.                     continue
  206.                 print("Выберите действие для собаки:")
  207.                 print("1. Есть (eat)")
  208.                 print("2. Спать (sleep)")
  209.                 print("3. Скучать (bore)")
  210.                 print("4. Болеть (get_sick)")
  211.                 print("5. Гулять (walk)")
  212.                 act = input("Введите номер действия: ").strip()
  213.                 if act == "1":
  214.                     animal.eat()
  215.                 elif act == "2":
  216.                     animal.sleep()
  217.                 elif act == "3":
  218.                     animal.bore()
  219.                 elif act == "4":
  220.                     animal.get_sick()
  221.                 elif act == "5":
  222.                     animal.walk()
  223.                 else:
  224.                     print("Неверный выбор действия!")
  225.             elif animal_type == "2":
  226.                 animal = find_animal_by_name(cats_list, name)
  227.                 if not animal:
  228.                     print("Кошка с такой кличкой не найдена!")
  229.                     continue
  230.                 print("Выберите действие для кошки:")
  231.                 print("1. Есть (eat)")
  232.                 print("2. Спать (sleep)")
  233.                 print("3. Скучать (bore)")
  234.                 print("4. Болеть (get_sick)")
  235.                 print("5. Играть (play)")
  236.                 act = input("Введите номер действия: ").strip()
  237.                 if act == "1":
  238.                     animal.eat()
  239.                 elif act == "2":
  240.                     animal.sleep()
  241.                 elif act == "3":
  242.                     animal.bore()
  243.                 elif act == "4":
  244.                     animal.get_sick()
  245.                 elif act == "5":
  246.                     animal.play()
  247.                 else:
  248.                     print("Неверный выбор действия!")
  249.             else:
  250.                 print("Неверный тип животного!")
  251.  
  252.         elif choice == "5":
  253.             print("Выход из программы.")
  254.             break
  255.  
  256.         else:
  257.             print("Некорректный выбор, попробуйте снова.")
  258.  
  259. menu()
  260.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement