По сути, у меня есть набор значений 'e' (например, e0, e3, ...).
Когда я пытаюсь увеличить цены в своей функции, я проверяю, является ли длина словаря. Если она равна 1, я умножаю ее на 1,15, однако, если есть 2 значения, я пытаюсь преобразовать их в предыдущее значение (e-3). Если это не удается, он умножает себя.
Код работает нормально с e0, однако, когда его e3 и выше, он просто добавляет 150 e0 (если e3 равно 1), ...
Код: Выделить всё
def bigprice(price):
adv = copy(price)
adv = {key:adv[key] for key in sorted(adv)}
print(adv, "sorted")
infff = ''
infff2 = ''
summofzeros = 0
for esq in adv:
if adv[esq] >= 1:
infff = esq
break
for esq2 in adv:
infff2 = esq2
break
for thinges in adv:
if adv[thinges] == 0:
summofzeros += 1
howmany = 0
if len(adv) == 1:
if infff == 'e0':
adv[infff] = round(1.15 * adv[infff])
return adv
else:
howmany = adv[infff[0]+str(int(infff[1:]))]
adv[infff[0] + str(int(infff[1:]))] -= howmany
adv[infff[0] + str(int(infff[1:]) - 3)] += howmany
if len(adv) == 2:
if infff == infff2:
howmany = adv[infff2[0] + str(int(infff[1:]) + 3)]
adv[infff2[0] + str(int(infff2[1:]) + 3)] -= howmany
adv[infff2] += (howmany * 1000 * 1.30)
print(infff, infff2, adv, 'good', adv[infff], adv[infff2])
return adv
else:
for i in range(len(price)-1):
howmany = adv[infff]
adv[infff] -= howmany
adv[infff2] += (howmany * 1000 * 1.30)
return adv
Я ожидаю, что он преобразует все значения к наименьшему, а затем умножит его на 1,15 (и округлить/преобразовать в int), а затем преобразовать обратно.
PS: я уже написал функцию преобразования.
Подробнее здесь: https://stackoverflow.com/questions/785 ... s-intended