Задача по Python начальный уровень
Условие:
Есть словарь кодов товаров
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 помощью циклов
Формат вывода:
<товар_1> - <кол-во_товара_1> шт, стоимость <общая_стоимость_товара_1> руб
<товар_2> - <кол-во_товара_2> шт, стоимость <общая_стоимость_товара_2> руб
<товар_4> - <кол-во_товара_3> шт, стоимость <общая_стоимость_товара_3> руб
Например:
Стул - 1111 шт, стоимость 8888 руб
Диван - 2222 шт, стоимость 9999 руб
и так далее
Алгоритм должен получиться приблизительно такой:
цикл for по товарам с получением кода и названия товара
инициализация переменных для подсчета количества и стоимости товара
получение списка на складе по коду товара
цикл for по списку на складе
подсчет количества товара
подсчет стоимости товара
вывод на консоль количества и стоимости товара на складе
Часть решения:
for title, code in goods.items():
total_quantity = 0
total_cost = 0
for goods in store[code]:
Не могу понять как дальше.
Ответы (4 шт):
Автор решения: Vladimir Afanasyev
→ Ссылка
for title, code in goods.items():
total_quantity = 0
total_cost = 0
for goods in store[code]:
total_quantity += goods['quantity']
total_cost += goods['price']
print(title, " - ",total_quantity," шт, ",total_cost," руб")
Вывод:
Лампа - 27 шт, 42 руб
Стол - 54 шт, 1030 руб
Диван - 3 шт, 2350 руб
Стул - 105 шт, 292 руб
Автор решения: Hellseher
→ Ссылка
#!/usr/bin/env python3
# File : 1093133.py
# Modified : <2020-3-11 Wed 00:57:26 gmt>
# URL : https://ru.stackoverflow.com/questions/1093133/
from tabulate import tabulate
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,
},
],
}
def get_total(list):
'''Выводит общее количество и суммарную стоимость продукта данной
категории.'''
t_qty = 0
t_prc = 0
for item in list:
t_prc+=item['quantity'] * item['price']
t_qty+=item['quantity']
return t_qty, t_prc
def main():
table = []
for product, code in goods.items():
quantity, price = get_total(store[code])
table.append([product, quantity, price])
print(tabulate(table, headers=['Товар', 'Количество (шт)', 'Oбщая стоимость'], tablefmt='psql'))
if __name__ == '__main__':
main()
# End of 1093133.py
$ ./1093133.py
+---------+-------------------+-------------------+
| Товар | Количество (шт) | Oбщая стоимость |
|---------+-------------------+-------------------|
| Лампа | 27 | 1134 |
| Стол | 54 | 27860 |
| Диван | 3 | 3550 |
| Стул | 105 | 10311 |
+---------+-------------------+-------------------+
Автор решения: Amfitrion
→ Ссылка
Решение со знаниями новичка
for product_name, product_code in goods.items():
item_quantity = 0
item_cost = 0
item_total_quantity = 0
item_total_cost = 0
for product in store[product_code]:
item_quantity = 0
item_cost = 0
item_quantity += product['quantity']
item_cost += product['price']
item_total_cost += item_quantity * item_cost
item_total_quantity += item_quantity
print('{0} - {1} шт, общая стоимость {2} рублей'.format(product_name, item_total_quantity, item_total_cost))
Автор решения: user478801
→ Ссылка
for name_prod, code in goods.items(): # Пробегаемся по словарю "товары" для получением названия товара и его кода
quantity = 0 # инициализация переменной для подсчета количества товара
price = 0 # инициализация переменной для подсчета стоимости товара
cost = 0 # инициализация переменной для подсчета ОБЩЕЙ стоимости товара
for goods in store[code]: # получение списка на складе по коду товара
quantity += goods['quantity'] # подсчет количества товара
price = goods['price'] # подсчет стоимости товара
cost += quantity * price # подсчет ОБЩЕЙ стоимости товара
print(name_prod, " - ", quantity, " шт, ", cost, " руб") # вывод на консоль количества и стоимости товара на складе
закомментированы все строки кода поясняющие где что и когда происходит