Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- # ==============================
- # 1. КЛАСС Animals
- # ==============================
- class Animals:
- def __init__(self, name, age):
- """
- Конструктор класса Animals.
- name (str): кличка животного (вводится пользователем)
- age (int): возраст животного (вводится пользователем)
- mood (int): уровень настроения, генерируется случайно от 0 до 6
- """
- self.name = name
- self.age = age
- mood_descriptions = {
- 0: "очень плохо",
- 1: "плохо",
- 2: "так себе",
- 3: "нормально",
- 4: "хорошо",
- 5: "отлично",
- 6: "просто супер"
- }
- self.mood = mood_descriptions[random.randint(0, 6)]
- def get_mood(self):
- """Выводит уровень настроения животного."""
- print(f"Уровень настроения {self.name}: {self.mood}")
- def eat(self):
- """Увеличивает уровень настроения на 2."""
- self.mood += 2
- if self.mood > 6:
- self.mood = 6
- print(f"{self.name} поел(а) и настроение выросло до {self.mood}.")
- def sleep(self):
- """Увеличивает уровень настроения на 1."""
- self.mood += 1
- if self.mood > 6:
- self.mood = 6
- print(f"{self.name} поспал(а) и настроение выросло до {self.mood}.")
- def bore(self):
- """Снижает уровень настроения на 1, но не ниже 0."""
- self.mood -= 1
- if self.mood < 0:
- self.mood = 0
- print(f"{self.name} скучает, настроение снизилось до {self.mood}.")
- def get_sick(self):
- """Снижает уровень настроения на 3, но не ниже 0."""
- self.mood -= 3
- if self.mood < 0:
- self.mood = 0
- print(f"{self.name} заболел(а), настроение снизилось до {self.mood}.")
- # ==============================
- # 2. КЛАСС Dogs (наследует Animals)
- # ==============================
- class Dogs(Animals):
- count = 0 # Класс-атрибут для подсчёта количества собак
- def __init__(self, name, age):
- # Вызываем конструктор родительского класса для инициализации name, age и mood
- super().__init__(name, age)
- Dogs.count += 1 # Увеличиваем счетчик собак
- def __str__(self):
- """Возвращает строковое представление объекта Dogs."""
- return f"Собака: {self.name}, возраст: {self.age}, настроение: {self.mood}"
- def walk(self):
- """Метод 'гулять': повышает уровень настроения на 2."""
- self.mood += 2
- if self.mood > 6:
- self.mood = 6
- print(f"{self.name} гуляет и настроение повышается до {self.mood}.")
- @classmethod
- def statistics(cls):
- """Выводит статистику по количеству собак."""
- print(f"Всего собак: {cls.count}")
- # ==============================
- # 3. КЛАСС Cats (наследует Animals)
- # ==============================
- class Cats(Animals):
- count = 0 # Класс-атрибут для подсчёта количества кошек
- def __init__(self, name, age):
- super().__init__(name, age)
- Cats.count += 1 # Увеличиваем счетчик кошек
- def __str__(self):
- """Возвращает строковое представление объекта Cats."""
- return f"Кошка: {self.name}, возраст: {self.age}, настроение: {self.mood}"
- def play(self):
- """Метод 'играть': повышает уровень настроения на 3."""
- self.mood += 3
- if self.mood > 6:
- self.mood = 6
- print(f"{self.name} играет и настроение повышается до {self.mood}.")
- @classmethod
- def statistics(cls):
- """Выводит статистику по количеству кошек."""
- print(f"Всего кошек: {cls.count}")
- # ==============================
- # Меню для работы с программой
- # ==============================
- def display_animals(animal_list):
- """
- Выводит список животных с нумерацией.
- animal_list: список объектов (Dogs или Cats).
- """
- if not animal_list:
- print("Список пуст.")
- return
- for index, animal in enumerate(animal_list, start=1):
- print(f"{index}. {animal}")
- def find_animal_by_name(animal_list, name):
- """
- Ищет животное по кличке в списке.
- Возвращает объект, если найден, иначе None.
- """
- for animal in animal_list:
- if animal.name.lower() == name.lower():
- return animal
- return None
- def menu():
- # Списки для хранения собак и кошек
- dogs_list = []
- cats_list = []
- while True:
- print("\n=== МЕНЮ ===")
- print("1. Добавить животное (1 — собака, 2 — кошка)")
- print("2. Вывести количество животных (1 — собак, 2 — кошек)")
- print("3. Вывести информацию о животном (1 — собака, 2 — кошка, затем кличка)")
- print("4. Действия с животным (1 — собака, 2 — кошка, затем выберите действие и кличку)")
- print("5. Выход")
- choice = input("Выберите пункт меню: ").strip()
- if choice == "1":
- animal_type = input("Введите тип животного (1 — собака, 2 — кошка): ").strip()
- name = input("Введите кличку: ").strip()
- try:
- age = int(input("Введите возраст: "))
- except ValueError:
- print("Возраст должен быть числом!")
- continue
- if animal_type == "1":
- new_dog = Dogs(name, age)
- dogs_list.append(new_dog)
- print("Собака добавлена.")
- elif animal_type == "2":
- new_cat = Cats(name, age)
- cats_list.append(new_cat)
- print("Кошка добавлена.")
- else:
- print("Неверный тип животного!")
- elif choice == "2":
- animal_type = input("Вывести количество (1 — собак, 2 — кошек): ").strip()
- if animal_type == "1":
- Dogs.statistics()
- elif animal_type == "2":
- Cats.statistics()
- else:
- print("Неверный выбор!")
- elif choice == "3":
- animal_type = input("Вывести информацию о животном (1 — собака, 2 — кошка): ").strip()
- name = input("Введите кличку: ").strip()
- if animal_type == "1":
- animal = find_animal_by_name(dogs_list, name)
- if animal:
- print(animal)
- else:
- print("Собака с такой кличкой не найдена!")
- elif animal_type == "2":
- animal = find_animal_by_name(cats_list, name)
- if animal:
- print(animal)
- else:
- print("Кошка с такой кличкой не найдена!")
- else:
- print("Неверный выбор!")
- elif choice == "4":
- animal_type = input("Действие с животным (1 — собака, 2 — кошка): ").strip()
- name = input("Введите кличку животного: ").strip()
- if animal_type == "1":
- animal = find_animal_by_name(dogs_list, name)
- if not animal:
- print("Собака с такой кличкой не найдена!")
- continue
- print("Выберите действие для собаки:")
- print("1. Есть (eat)")
- print("2. Спать (sleep)")
- print("3. Скучать (bore)")
- print("4. Болеть (get_sick)")
- print("5. Гулять (walk)")
- act = input("Введите номер действия: ").strip()
- if act == "1":
- animal.eat()
- elif act == "2":
- animal.sleep()
- elif act == "3":
- animal.bore()
- elif act == "4":
- animal.get_sick()
- elif act == "5":
- animal.walk()
- else:
- print("Неверный выбор действия!")
- elif animal_type == "2":
- animal = find_animal_by_name(cats_list, name)
- if not animal:
- print("Кошка с такой кличкой не найдена!")
- continue
- print("Выберите действие для кошки:")
- print("1. Есть (eat)")
- print("2. Спать (sleep)")
- print("3. Скучать (bore)")
- print("4. Болеть (get_sick)")
- print("5. Играть (play)")
- act = input("Введите номер действия: ").strip()
- if act == "1":
- animal.eat()
- elif act == "2":
- animal.sleep()
- elif act == "3":
- animal.bore()
- elif act == "4":
- animal.get_sick()
- elif act == "5":
- animal.play()
- else:
- print("Неверный выбор действия!")
- else:
- print("Неверный тип животного!")
- elif choice == "5":
- print("Выход из программы.")
- break
- else:
- print("Некорректный выбор, попробуйте снова.")
- menu()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement