# -*- coding: utf-8 -*-
# Есть словарь кодов товаров
goods = {
'Лампа': '12345',
'Стол': '23456',
'Диван': '34567',
'Стул': '45678',
}
# Есть словарь списков количества товаров на складе.
store = {
'12345': [
{'quantity': 27, 'price': 42},
],
'23456': [
{'quantity': 22, 'price': 510},
{'quantity': 32, 'price': 520},
],
'34567': [
{'quantity': 2, 'price': 1200},
{'quantity': 1, 'price': 1150},
],
'45678': [
{'quantity': 50, 'price': 100},
{'quantity': 12, 'price': 95},
{'quantity': 43, 'price': 97},
],
}
# Рассчитать на какую сумму лежит каждого товара на складе.
#
# Вывести суммарную стоимость каждого товара на складе c помощью циклов
# То есть: всего по лампам, стульям, етс.
# Формат строки вывода: "<товар> - <кол-во> шт, стоимость <общая стоимость> руб"
#
# Алгоритм должен получиться приблизительно такой:
#
# цикл for по товарам с получением кода и названия товара
# инициализация переменных для подсчета количества и стоимости товара
# получение списка на складе по коду товара
# цикл for по списку на складе
# подсчет количества товара
# подсчет стоимости товара
# вывод на консоль количества и стоимости товара на складе
summ = dict()
for name in goods:
code = goods[name]
print('Название товара:', name, ' Его код:', code)
for code in store:
price_1 = code['price']
quantity_1 = code['quantity']
summ = price_1 * quantity_1
print('полная стоимость товара:', summ)
for code in store:
price_1 = code['price']
for name in goods:
code = goods[name]
print('Название товара:', name, ' Его код:', code)
for code in store:
price_1 = store[code][0]['price']
quantity_1 = store[code][0]['quantity']
summ = price_1 * quantity_1
print('полная стоимость товара:', summ)
for name in goods:
code = goods[name]
print('Название товара:', name, ' Его код:', code)
for code, value in store.items():
price_1 = value[0]['price']
quantity_1 = value[0]['quantity']
summ = price_1 * quantity_1
print('полная стоимость товара:', summ)
price_1 = code['price']
TypeError: string indices must be integers"
price_1 = code['price']находится строковое значение '12345'. СТРОКОВОЕ!!!! А в строке индексом может быть исключительно int-значение. А вы пытаетесь вместо индекса указать опять-таки строку
'price'
code, копируя в него элемент словаря
goods[name], а потом этот же объект внутри цикла используете как объект - итератор цикла -
for code in store:, т.е. перебирая объекты уже совершенно другого словаря
storeлично я не в силах. Чего вы хотели-то от такой дивной конструкции?
for val in dict.values()
for key in dict.keys():
for key in dict:
def extractor(store):
for product in store:
price = 0
quantity = 0
for info in store[product]:
quantity += info["quantity"]
price += info["price"]
yield product, quantity, price
stock = {product: {"code": product, "quantity": quantity, "price": price}
for product, quantity, price in extractor(store)}
for product in goods:
print("Название - {}, Код - {code}, Кол-во - {quantity}, Стоимость - {price}"
.format(product, **stock[goods[product]]))
Название - Лампа, Код - 12345, Кол-во - 27, Стоимость - 42
Название - Стол, Код - 23456, Кол-во - 54, Стоимость - 1030
Название - Диван, Код - 34567, Кол-во - 3, Стоимость - 2350
Название - Стул, Код - 45678, Кол-во - 105, Стоимость - 292