Python

Помогите пожалуйста с задачей на python!

Задача 6. Совместное проживание 2

Артём увлёкся предыдущим экспериментом и решил расширить его, создав целую семью из Мужа, Жены и Кота. Условия эксперимента следующие.

Каждый день участники жизни могут делать только одно действие. Все вместе они должны прожить год и не умереть.



Муж может:

есть,
играть,
ходить на работу.
Жена может:

есть,
покупать продукты,
покупать шубу,
убираться в доме.
Кот может:

есть,
спать,
драть обои.
Все они живут в одном доме, дом характеризуется:

кол-во денег в тумбочке (вначале 100),
кол-во еды в холодильнике (вначале 50),
еда для кота (вначале 30),
кол-во грязи (вначале 0).
У людей есть имя, степень сытости (вначале 30) и степень счастья (вначале 100). Все люди могут гладить кота (+5 к счастью).

У кота есть имя и степень сытости (вначале 30).



Любое действие (в том числе и кота), кроме «есть», приводит к уменьшению степени сытости на 10 пунктов.

Взрослые едят максимум по 30 единиц еды, степень сытости растёт на один пункт за один пункт еды.

Кот ест максимум по 10 единиц еды, степень сытости растёт на два пункта за один пункт еды.

Степень сытости не должна падать ниже нуля, иначе человек или кот умрёт от голода.



Деньги в тумбочку добавляет муж, после работы — сразу 150 единиц.

Еда стоит 10 денег за 10 единиц еды. Шуба стоит 350 единиц.

Еда для кота тоже покупается: за 10 денег 10 еды.



Грязь добавляется каждый день по пять пунктов, за одну уборку жена может убирать до 100 единиц грязи.

Если кот дерёт обои, то грязи тоже становится больше на пять пунктов.

Если в доме грязи больше 90, у людей падает степень счастья каждый день на 10 пунктов.

Степень счастья растёт: у мужа от игры в компьютер (на 20), у жены от покупки шубы (на 60, но шуба дорогая).

Степень счастья не должна падать ниже 10, иначе человек умирает от депрессии.



Реализуйте такую программу. Подведите итоги жизни за год: сколько было заработано денег, сколько съедено еды, сколько куплено шуб.
Грядет конец света, все они умрут!
Наталия Манохина
Наталия Манохина
34 935
Лучший ответ
Не проверяли. Так что на свой страх и риск чуваки.
Документацию сами допишите.
Фролов Андрей Код проверили. Было небольшое уточнение, что можно чутка по-другому в одном месте сделать. Но приняли. Пользуйтесь.
Александр Эленшлегер Первый скрин экрана не читабельный, маленькое разрешение ((((
Фролов Андрей Перезалил
Сделайте у каждого жителя метод .life(), чтобы внутри цикла не проверять его тип:
person.life ()
 import random 

class House:
food = 50
money = 100
cat_food = 30
dirt = 0

class Resident:
def __init__(self, name, satiety, happiness):
self.name = name
self.satiety = satiety
self.happiness = happiness

def eat(self):
self.satiety += 30
House.food -= 30
print(f'{self.name} ест')


class Husband(Resident):
def __init__(self, name, satiety=30, happiness=100):
super().__init__(name, satiety, happiness)
self.work = 150

def work_day(self):
House.money += self.work
self.satiety -= 10
print(f'Муж идет на работу, деньги {House.money}')

def game(self):
self.happiness += 20
self.satiety -= 10
print('Муж играет')

def pretting_cat(self):
self.happiness += 5
self.satiety -= 10
print('Муж гладит кота')

def __str__(self):
return f'{self.name}'

class Wife(Resident):
def __init__(self, name, satiety=30, happiness=100):
super().__init__(name, satiety, happiness)

def buy_food(self):
self.satiety -= 10
House.food += 100
House.money -= 100
print(f'Жена идет в магазин, еда {House.food} деньги {House.money}')

def buy_cat_food(self):
self.satiety -= 10
House.cat_food += 50
House.money -= 50
print(f'Жена покупает еду коту, еда кота {House.cat_food} деньги {House.money}')

def pretting_cat(self):
self.happiness += 5
self.satiety -= 10
print('Жена Гладит кота')

def purchase(self):
House.money -= 350
self.happiness += 60
self.satiety -= 10
print(f'Жена покупает шубу, деньги {House.money}')

def cleaning(self):
House.dirt -= 10
self.satiety -= 10

def __str__(self):
return f'{self.name}'


class Cat(Resident):
def __init__(self, name, satiety=30):
super().__init__(name, satiety, happiness=100)

def eat(self):
self.satiety += 20
House.cat_food -= 10
print('Кот ест ')

def slip(self):
self.satiety -= 10
return f'Кот спит'

def shitting(self):
self.satiety -= 10
House.dirt += 5
print(f'Кот подрал обои')

def __str__(self):
return f'{self.name}'


day = 0
husband = Husband(name='Федя')
wife = Wife(name='Наташа')
cat = Cat(name='Мурзик')

for i in range(365):
day += 1
print(f'---День {day}')
House.dirt += 5

person = random.choice([husband, wife, cat])

if person.satiety = 90:
wife.happiness -= 10
husband.happiness -= 10

if isinstance(husband, Husband):
if House.money
Не Знаменит, Не Богат!
         elif House.dirt >= 50 and random.randint(1, 2) == 1: 
wife.cleaning()
print(f'Жена убирает дом, грязь {House.dirt}')
elif wife.happiness = 450:
wife.purchase()
wife.happiness += 60
else:
wife.eat()
wife.happiness += 30
Не Знаменит, Не Богат!
 print(f'Состояние мужа: cчастье:{husband.happiness}, сытость:{husband.satiety}') 
print(f'Состояние жены: cчастье:{wife.happiness}, сытость:{wife.satiety}')
print(f'Состояние кота: cчастье:{cat.happiness}, сытость:{cat.satiety}')
print(f'Еды в доме:{House.food} , денег:{House.money}, еды для кота:{House.cat_food}, грязи:{House.dirt}')
Не Знаменит, Не Богат! поправил кота
     if isinstance(cat, Cat): 
if random.randint(1, 3) == 1:
cat.shitting()
elif random.randint(1, 3) == 2:
print('Кот спит')
else:
cat.eat()
Николай Кузнецов Как ты используешь class House в class Resident? Ты не можешь этого сделать. Ты его даже не создал нигде.
Да и по условию никто не должен умиреть. А они почему-то умирают.
Привет. Поделись плиз решением данной задачи, если ты ее решил.
Стас Бут
Стас Бут
282
Подскажите решение задачи, пожалуйста)
уже решили или помощь ещё нужна?
Евгений Капустин помогите с решением пожалуйста
Сергей Гордяскин Подскажите решение задачи, пожалуйста)