class Critter(object): """Питомец""" def __init__(self, name, hanger = 0, boredom = 0): self.name = name self.hanger = hanger self.boredom = boredom def __pass_time(self): self.hanger += 3 self.boredom += 3 @property def mood(self): unhappiness = self.hanger + self.boredom if unhappiness < 5: m = "Зашибись" elif 5 <= unhappiness <= 10: m = "Норм" elif 11 <= unhappiness <= 15: m = "Не очень" elif 16 <= unhappiness <= 20: m = "Хреново" return m def talk(self): print("Привет, я",self.name, ",сейчас я чувствую себя ", self.mood, "\n") self.__pass_time() def eat(self, food = 4): food = acquaintance("Сколько корма вы хотите дать питомцу?") print("Мрр...Спасибо!:)") self.hanger -= food if self.hanger < 0: self.hanger = 0 self.__pass_time() def play(self, fun = 4): fun = acquaintance("Сколько времени вы потратите на игру с питомцем?") print("Wowww!!!") self.boredom -= fun if self.boredom < 0: self.boredom = 0 self.__pass_time() def main(): crit_name = input("Дайте имя вашему питомцу:") crit = Critter(crit_name) choice = None while choice != "0": print(""" Тамагочи 0 - Выйти 1 - Поговорить с питомцами 2 - Покормить питомцев 3 - Поиграть с питомцами """) choice = input("Ваш выбор:") print() if choice == "0": print("До свидания") elif choice == "1": crit.talk() elif choice == "2": crit.eat() elif choice == "3": crit.play() else: print("Такого пункта в меню нет") main() input("Push Enter for Exit")
От себя добавил возможность узнать количество, продать, и произвести действия с каждым питомцем по отдельности. У автора правильность выполнения задания узнать не могу по известным причинам, спрашиваю вас.
Вот, собственно, код:
import random class Critter(object): """Питомец""" pets = [] total = 0 pets_names = [] @staticmethod def status(): print("Всего питомцев сейчас", Critter.total) @staticmethod def all_eat(): for i in Critter.pets: i.eat() @staticmethod def all_play(): for i in Critter.pets: i.play() @staticmethod def all_talk(): for i in Critter.pets: i.talk() def __init__(self, name, hanger = random.randrange(1, 15), boredom = random.randrange(1, 15)): self.name = name self.hanger = hanger self.boredom = boredom Critter.pets.append(self) Critter.total += 1 Critter.pets_names.append(name) self.talk() def __str__(self): rep = "Объект класса Critter\n" rep += "имя:" + self.name +"\n" rep += "голод:" + str(self.hanger) +"\n" rep += "печаль:" + str(self.boredom) +"\n" return rep def sale(self): print("Ваш питомец", self.name, "продан") Critter.pets.remove(self) Critter.pets_names.remove(self.name) Critter.total -= 1 def __pass_time(self): self.hanger += 3 self.boredom += 3 @property def mood(self): unhappiness = self.hanger + self.boredom if unhappiness < 5: m = "Зашибись" elif 5 <= unhappiness <= 10: m = "Норм" elif 11 <= unhappiness <= 15: m = "Не очень" elif 16 <= unhappiness <= 20: m = "Хреново" return m def talk(self): print("Привет, я",self.name, ",сейчас я чувствую себя ", self.mood, "\n") self.__pass_time() def eat(self, food = 4): food = acquaintance("Сколько корма вы хотите дать питомцу?") print("Мрр...Спасибо!:)") self.hanger -= food if self.hanger < 0: self.hanger = 0 self.__pass_time() def play(self, fun = 4): fun = acquaintance("Сколько времени вы потратите на игру с питомцем?") print("Wowww!!!") self.boredom -= fun if self.boredom < 0: self.boredom = 0 self.__pass_time() def pet_instanse(): crit_name = None while not crit_name: crit_name = input("Дайте имя вашему питомцу"). title(). strip() crit = Critter(crit_name) return crit def acquaintance(question): response = None while response not in range(10): print("Введите значение от 0 до 9") try: response = int(input(question)) except (TypeError, ValueError): print("Недопустимый ввод") return response def main(): choice = None while choice != "0": print(""" Тамагочи 999 - Завести питомца 0 - Выйти 000 - Количество питомцев 111 - Поговорить с питомцами 222 - Покормить питомцев 333 - Поиграть с питомцами 555 - Выбрать питомца """) choice = input("Ваш выбор:") print() if choice == "0": print("До свидания") elif choice == "999": new_pets = pet_instanse() elif choice == "123": for i in Critter.pets: print(i) elif choice == "000": Critter.status() elif choice == "111": Critter.all_talk() elif choice == "222": Critter.all_eat() elif choice == "333": Critter.all_play() elif choice == "555": new_pets = input("Введите имя питомца").title() .strip() if new_pets not in Critter.pets_names: print("Такого питомца у вас нет!") else: for i in Critter.pets: if new_pets == i.name: print(""" 1 - Узнать самочувствие 2 - Покормить питомца 3 - Поиграть с питомцем 4 - Продать питомца """) choice = input("Ваш выбор:") if choice == "1": i.talk() elif choice == "2": i.eat() elif choice == "3": i.play() elif choice == "4": i.sale() Critter.status() else: print("Такого пункта в меню нет") else: print("Такого пункта в меню нет") main() input("Push Enter for Exit")