Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 8, 2021 14:54:55

Roman_Y
Зарегистрирован: 2021-09-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача с циклами.

Уважаемые Эксперты 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 берется из количества элементов списков прайслистов.

Как решить эту задачу используя циклы?

Прикреплённый файлы:
attachment Список для задачи.txt (491 байт)

Офлайн

#2 Сен. 8, 2021 15:08:18

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2177
Репутация: +  293  -
Профиль   Отправить e-mail  

Задача с циклами.

Roman_Y порядок продуктов всегда одинаков? продукты всегда одни и теже? их колличество одно и тоже?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#3 Сен. 8, 2021 15:12:05

Roman_Y
Зарегистрирован: 2021-09-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача с циклами.

Спасибо за отклик PEHDOM!
1) порядок всегда одинаковый.
2) продукты разные всегда
3) количество всегда разное

Офлайн

#4 Сен. 8, 2021 15:41:32

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2177
Репутация: +  293  -
Профиль   Отправить e-mail  

Задача с циклами.

Roman_Y
продукты разные всегда
У вас в примере они одинаковые, и их количество в каждом месяце одно и тоже.Спрошу еще раз, может ли быть такое что в январе у вас нет огурцов, а в марте они появятся, или в апреле исчезнут апельсины?
или в каждом месяце товары всегда одни и теже, записаные в одном и томже порядке?



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#5 Сен. 8, 2021 16:40:11

Roman_Y
Зарегистрирован: 2021-09-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача с циклами.

Прошу прощения - в каждом месяце товары всегда одни и теже, записаные в одном и томже порядке. И количество всегда одинаковое.

 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)

Офлайн

#6 Сен. 8, 2021 17:47:09

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2177
Репутация: +  293  -
Профиль   Отправить e-mail  

Задача с циклами.

ну тогда все просто, берете счетчик по количеству элементов в месяце и перебираете их, занося в delta_history разницу.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Офлайн

#7 Сен. 8, 2021 19:31:57

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8017
Репутация: +  728  -
Профиль   Отправить e-mail  

Задача с циклами.

Roman_Y
Имеется 4 списка - см.приложенный файл.
Приложи ещё один файл. В нём должен быть точный результат, который должен получиться после работы скрипта над первым файлом. Вручную прямо его сделай.

Вот у тебя есть входной файл и вот у тебя есть выходной файл. А дальше уже для них пишется скрипт, который сделает из входного файла в точности такой выходной файл. И после этого уже этому скрипту подаётся другой входной файл и скрипт уже сам делает выходной файл для другого входного файла.



Офлайн

#8 Сен. 9, 2021 16:36:36

Roman_Y
Зарегистрирован: 2021-09-08
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача с циклами.

Спасибо Друзья!
Я нашел решение! Урррааа!

 for i, b in zip(march_price_list, february_price_list):
    d = int(i['price'])-int(b['price'])
    print(d)
Вся сложность была в том что я думал делать цикл не с той таблицей с которой это надо было делать. И второе - я не знал что в одном цикле можно делать перебор сразу по двум спискам(для этого есть чертовски замечательная вещь под названием zip!!!!!!)

Офлайн

#9 Сен. 9, 2021 16:52:16

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2177
Репутация: +  293  -
Профиль   Отправить e-mail  

Задача с циклами.

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)

Офлайн

#10 Сен. 9, 2021 17:39:18

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8017
Репутация: +  728  -
Профиль   Отправить e-mail  

Задача с циклами.

Roman_Y
Я нашел решение!
Откуда ты знаешь? Барашек тоже бегал в девятиэтажке и искал выход, натыкался на стены и не мог выйти никуда; но тут он догадался подняться вверх по лестнице, так он постепенно выбежал на крышу и закричал “ура! я нашёл выход! надо было всего-то подняться наверх! я не знал, что можно шагать по нескольким ступенькам! а вот для этого в доме как раз есть функция zip()!”.

Поэтому тебе и говорят: сначала определись с конечным файлом и только после этого начинай писать код, который приведёт начальный файл к конечному файлу.



Отредактировано py.user.next (Сен. 9, 2021 17:46:05)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version