Написать функцию покупка товара и добавление его в корзину магазина
Написать функцию покупка товара и добавление его в корзину магазина. Есть магазин:
shop = {
"мучное": {
"хлеб": 200
},
"молочное":{
"молоко":50
},
"мясное": {
"говядина":500
}
}
# Создаем словарь
shopping_cart = {}
Теперь создаем функцию которая исходя из запроса пользователя брала бы товал из shop, перезаписывала в новый словарь нашу корзину shopping_cart удаляла купленный товар из shop и выводила вы приобрели товар и какие товары лежат в корзине, и опять выводила предложение о покупке и список оставшихся товаров в shop. При условии, что в корзину можно добавить только те товары которые есть в магазине. Но как это сделать я не знаю подскажите.
Ответы (2 шт):
Вот готовый вариант, который будет работать при заданном словаре. Программа не будет работать, если там будет куча вложенных словарей потому, что я не вижу в этом потребностей. Если надо это сделать, то я могу попробовать.
shop = {
"мучное": {
"хлеб": 200
},
"молочное":{
"молоко":50
},
"мясное": {
"говядина":500
}
shopping_cart = {}
def buy(name):
global shop, shopping_cart
for keys in shop.keys():
for keys2 in shop[keys].keys():
if keys2 == name:
shopping_cart[name] = shop[keys][name]
del shop[keys][name]
if len(shop[keys]) == 0: del shop[keys]
print('Вы купили товары:', shopping_cart)
return
print('Такого товара нет')
while len(shop) > 0:
name = input('Товар, который вы хотите купить:').lower()
buy(name)
print('Все.Товары закончились')
Вот полностью рабочий и универсальный вариант. Код довольно простой, разобраться можно просто прочитав пошагово, имена переменных будут объяснять происходящее. Категории и товары так же можно добавлять в любых количествах.
class Store:
def __init__(self):
self.shop = {
'мучное': {
'хлеб': 200,
},
'молочное': {
'молоко': 50
},
"мясное": {
"говядина": 500
}
}
self.shopping_cart = {}
def search_category(self, product):
for item in self.shop:
for category in self.shop[item]:
if product == category:
product_price = self.shop[item].get(product)
return item, product_price
else:
return None, None
def buying(self, product):
category, product_price = self.search_category(product)
if category:
self.shop[category].pop(product)
try:
self.shopping_cart[category] = self.shopping_cart[category], {product: product_price}
except:
self.shopping_cart[category] = {product: product_price}
return True
else:
return
store = Store()
while True:
purchase = store.buying(str(input('Введите желаемый товар: ').lower()))
if purchase:
products = ', '.join([item for item in store.shop for item in store.shop[item]])
purchases = ', '.join([item for item in store.shopping_cart for item in store.shopping_cart[item]])
print(f'Покупка совершена. \nДоступные товары: {products}. \nСодержимое корзины: {purchases}')
else:
print('Данного товара нет в магазине.')