Форум сайта python.su
Уважаемые Эксперты Python, помогите пожалуйста решить задачу.
Имеется 4 списка - см.приложенный файл.
# delta_history содержит ‘product names’, ‘prices delta’(например: цена за Февраль минус цена за Январь = february_price_delta)
# january_price_list содержит цены за Январь в формате JSON
# february_price_list содержит цены за Февраль в формате JSON
# march_price_list содержит цены за Март в формате JSON
Необходимо подсчитать все дельты между ценами и поместить их в delta_history используя Python без импортирования дополнительных модулей.
В случае ошибки(цены за Декабрь нет) программа должна выдать «No data».
Важное условие: код должен работать для любого количества элементов списков.
Важная заметка: количество элементов списка delta_history берется из количества элементов списков прайслистов.
Как решить эту задачу используя циклы?
Прикреплённый файлы:
Список для задачи.txt (491 байт)
Офлайн
Roman_Y порядок продуктов всегда одинаков? продукты всегда одни и теже? их колличество одно и тоже?
[code python][/code]
Офлайн
Спасибо за отклик PEHDOM!
1) порядок всегда одинаковый.
2) продукты разные всегда
3) количество всегда разное
Офлайн
Roman_YУ вас в примере они одинаковые, и их количество в каждом месяце одно и тоже.Спрошу еще раз, может ли быть такое что в январе у вас нет огурцов, а в марте они появятся, или в апреле исчезнут апельсины?
продукты разные всегда
[code python][/code]
Офлайн
Прошу прощения - в каждом месяце товары всегда одни и теже, записаные в одном и томже порядке. И количество всегда одинаковое.
delta_history = [ ['apple', ['january_price_delta', 'february_price_delta', 'march_price_delta']], ['orange', ['january_price_delta', 'february_price_delta', 'march_price_delta']] ] january_price_list = [{'product': 'apple', 'price': '100'}, {'product': 'orange', 'price': '200'}] february_price_list = [{'product': 'apple', 'price': '105'}, {'product': 'orange', 'price': '210'}] march_price_list = [{'product': 'apple', 'price': '110'}, {'product': 'orange', 'price': '215'}]
Отредактировано Roman_Y (Сен. 8, 2021 17:09:38)
Офлайн
ну тогда все просто, берете счетчик по количеству элементов в месяце и перебираете их, занося в delta_history разницу.
[code python][/code]
Офлайн
Roman_YПриложи ещё один файл. В нём должен быть точный результат, который должен получиться после работы скрипта над первым файлом. Вручную прямо его сделай.
Имеется 4 списка - см.приложенный файл.
Офлайн
Спасибо Друзья!
Я нашел решение! Урррааа!
for i, b in zip(march_price_list, february_price_list): d = int(i['price'])-int(b['price']) print(d)
Офлайн
Roman_Y ну вобщем да, хотя не обязательно использвать элементы, можно использовать индексы:
for i in range(len(march_price_list)): d= march_price_list[i]['price']-february_price_list[i]['price'] #к int не приводил, но это и так понятно
[code python][/code]
Отредактировано PEHDOM (Сен. 9, 2021 16:53:22)
Офлайн
Roman_YОткуда ты знаешь? Барашек тоже бегал в девятиэтажке и искал выход, натыкался на стены и не мог выйти никуда; но тут он догадался подняться вверх по лестнице, так он постепенно выбежал на крышу и закричал “ура! я нашёл выход! надо было всего-то подняться наверх! я не знал, что можно шагать по нескольким ступенькам! а вот для этого в доме как раз есть функция zip()!”.
Я нашел решение!
Отредактировано py.user.next (Сен. 9, 2021 17:46:05)
Офлайн