Монитор цен · Шаг 2 из 4
Что изменилось за день
В прайсе пятьсот строк, и глазами два прайса не сравнить. Олегу нужен список того, что поменялось между вчера и сегодня: новые товары, пропавшие, другая цена, появился или кончился на складе. Решать, о чём из этого сообщать, будет следующий шаг.
Что сделать
Сравните вчерашний и сегодняшний прайс и перечислите все изменения по артикулам.
Что приходит
staryyиnovyy— вчерашний и сегодняшний прайс, словари, как их вернул шаг 1
Что вернуть
Список событий-словарей {"artikul": …, "chto": …, "bylo": …, "stalo": …} по порядку артикулов; изменений нет — [].
Допишите функцию izmeneniya в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
В проекте
Программа передаёт события шагу 3 — он решит, о чём сообщать. С ключом --vse она печатает их все, таблицей.
Вчера дрель A-101 стоила 5 490 ₽ и шуруповёрта A-102 не было на складе, сегодня дрель — 4 790 ₽, шуруповёрт есть и появился новый набор бит A-104. Событий три: цена A-101 (549000 → 479000), наличие A-102 (False → True) и новинка A-104 с её ценой.
staryy = {"A-101": {"nazvanie": "Дрель", "cena": 549000, "est": True},
"A-102": {"nazvanie": "Шуруповёрт", "cena": 399000, "est": False}}
novyy = {"A-101": {"nazvanie": "Дрель", "cena": 479000, "est": True},
"A-102": {"nazvanie": "Шуруповёрт", "cena": 399000, "est": True},
"A-104": {"nazvanie": "Набор бит", "cena": 129990, "est": True}}
izmeneniya(staryy, novyy)
[{'artikul': 'A-101', 'chto': 'cena', 'bylo': 549000, 'stalo': 479000}, {'artikul': 'A-102', 'chto': 'nalichie', 'bylo': False, 'stalo': True}, {'artikul': 'A-104', 'chto': 'novyy', 'bylo': None, 'stalo': 129990}]
Артикулы из обоих прайсов — по порядку, как строки (sorted): A-10 раньше A-2. Для каждого:
- есть только в новом — событие
"chto": "novyy",bylo—None,stalo— его цена (может бытьNone); - есть только в старом —
"propal",bylo— цена в старом,stalo—None; - есть в обоих — до двух событий, в таком порядке:
"cena", если цены различаются (в том числе цена появилась или пропала —None), и"nalichie", если различаетсяest; вbyloиstalo— сами цены или самиTrue/False.
Название товара не сравнивается: его правят опечатками, это не событие. Словари шага 1 не меняются.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.