Александр Анатольевич
Мудрец
(16491)
1 год назад
class Shop:
# Статические поля
__watermelon_count = 100
__melon_count = 50
__watermelon_price = 100
__melon_price = 50
# Статический метод: продать X арбузов
@staticmethod
def sell_watermelons(quantity):
if quantity <= Shop.__watermelon_count:
Shop.__watermelon_count -= quantity
print(f"Продано {quantity} арбузов")
else:
print("Недостаточно арбузов в наличии")
# Статический метод: продать Y дынь
@staticmethod
def sell_melons(quantity):
if quantity <= Shop.__melon_count:
Shop.__melon_count -= quantity
print(f"Продано {quantity} дынь")
else:
print("Недостаточно дынь в наличии")
# Статический метод: продать X арбузов и Y дынь
@staticmethod
def sell_watermelons_and_melons(watermelon_quantity, melon_quantity):
if watermelon_quantity <= Shop.__watermelon_count and melon_quantity <= Shop.__melon_count:
Shop.__watermelon_count -= watermelon_quantity
Shop.__melon_count -= melon_quantity
print(f"Продано {watermelon_quantity} арбузов и {melon_quantity} дынь")
else:
print("Недостаточно продукции в наличии")
# Статический метод: изменить цену на арбуз
@staticmethod
def change_watermelon_price(price):
Shop.__watermelon_price = price
print(f"Цена на арбуз изменена на {price} рублей")
# Статический метод: изменить цену на дыню
@staticmethod
def change_melon_price(price):
Shop.__melon_price = price
print(f"Цена на дыню изменена на {price} рублей")
# Статический метод: узнать общее количество арбузов и дынь в наличии
@staticmethod
def get_total_count():
total_count = Shop.__watermelon_count + Shop.__melon_count
return total_count
# Статический метод: узнать стоимость заказа арбузов и дынь
@staticmethod
def get_order_cost(watermelon_quantity, melon_quantity):
order_cost = watermelon_quantity * Shop.__watermelon_price + melon_quantity * Shop.__melon_price
return order_cost
# Пример использования
Shop.sell_watermelons(10) # Продано 10 арбузов
Shop.sell_melons(5) # Продано 5 дынь
Shop.sell_watermelons_and_melons(7, 3) # Продано 7 арбузов и 3 дынь
Shop.change_watermelon_price(120) # Цена на арбуз изменена на 120 рублей
Shop.change_melon_price(60) # Цена на дыню изменена на 60 рублей
total_count = Shop.get_total_count()
print(f"Всего арбузов и дынь в наличии: {total_count}")
order_cost = Shop.get_order_cost(5, 3)
print(f"Стоимость заказа: {order_cost} рублей")
Для этого создайте статические поля, отвечающие за количество арбузов и дынь в наличии и за их цены, задав любые стартовые значения.
Также реализуйте статические методы:
- продать X арбузов – покупатель приобрел Х арбузов, гарантируется, что хотя бы X арбузов было перед продажей в наличии,
- продать Y дынь – покупатель приобрел Y дынь, гарантируется, что хотя бы Y дынь было перед продажей в наличии,
- продать X арбузов и Y дынь – объединение двух предыдущих методов,
- изменить цену на арбуз на A – новая цена арбуза теперь А рублей,
- изменить цену на дыню на В – новая цена дыни теперь В рублей,
- узнать сколько всего в сумме арбузов и дынь сейчас в наличии – клиенту нужно очень много арбузов и дынь, и он оценивает, хватит ли ему,
- узнать, сколько в сумме будут стоить X арбузов и Y дынь – клиент хочет узнать стоимость своего заказа в рублях.
Названия статических методов должны отражать суть их назначения. Каждый статический метод должен изменять количество арбузов и дынь в наличии, либо изменять их цену, либо что-то считать, ничего не изменяя, в соответствии с назначением этого метода. Все статические методы должны иметь верное количество параметров подходящего типа и правильное возвращаемое значение либо его отсутствие.
Расставьте статическим методам модификаторы доступа – внутренние данные магазина должны быть недоступны вне класса, в то время как информация для клиентов должна быть открыта всем.