Создать программу, которая будет определять, может ли человек купить выбранный им дом или нет. Пояснения по программе: создать класс Human, объекты которого имеют публичные атрибуты (name, age) и приватные (money, house). Этот класс должен содержать методы earn_money по зарабатыванию денег. Т.е. каждый раз, вызывая метод earn_money, конкретному человеку должна прибавиться некоторая сумма денег в приватную переменную money. Создать метод buy_house, который будет сравнивать текущее количество денег у человека со стоимостью дома и выводить соответствующее сообщение о возможности или невозможности покупки. Если дом купить можно, то вывести информацию о том, сколько денег осталось на счету у покупателя. итоговая информация по работе программы может выглядеть следующим образом: - создать родительский класс House, хранящий информацию о цене (price) и площади дома (area). Создать дочерний класс SmallHouse, в конструктор которого передается только один параметр price. Условимся, что все дома класса SmallHouse имеют постоянную площадь 50 м². В родительском класса House создать магический метод_str____0, который будет выводить информацию об объекте.
Ответы
Ответ:
Python
class House:
def __init__(self, price, area):
self.price = price
self.area = area
def __str__(self):
return f"Дом площадью {self.area} м² стоимостью {self.price} денег"
class SmallHouse(House):
def __init__(self, price):
super().__init__(price, 50)
class Human:
def __init__(self, name, age, money):
self.name = name
self.age = age
self.money = money
self.house = None
def earn_money(self, amount):
self.money += amount
def buy_house(self, house):
if self.money >= house.price:
self.money -= house.price
self.house = house
print(f"{self.name} купил {self.house}. Остаток на счету: {self.money}")
else:
print(f"{self.name} не может купить {house}. Недостаточно денег")
# Пример использования программы
if __name__ == '__main__':
small_house = SmallHouse(100000)
john = Human("John", 30, 80000)
mary = Human("Mary", 25, 110000)
john.buy_house(small_house) # John не может купить Дом площадью 50 м² стоимостью 100000 денег. Недостаточно денег
mary.buy_house(small_house) # Mary купил Дом площадью 50 м² стоимостью 100000 денег. Остаток на счету: 10000
Объяснение:
Программа создает два класса: House и SmallHouse. Класс House является родительским классом и содержит атрибуты price и area (стоимость и площадь дома соответственно), а также магический метод __str__, который позволяет вывести информацию об объекте. Класс SmallHouse является дочерним классом и имеет только один аргумент в конструкторе - цену дома. При создании объекта класса SmallHouse автоматически устанавливается площадь дома в 50 м².
Класс Human содержит атрибуты name, age, money и house (имя, возраст, количество денег и дом соответственно) и два метода: earn_money, который добавляет заданную сумму денег к приватному атрибуту money, и buy_house, который проверяет, хватает ли денег на покупку дома и выводит соответствующее сообщение о возможности или невозможности покупки.
Пример использования программы создает объекты классов SmallHouse и Human и демонстрирует, как работает метод buy_house.