Я создал хвостовую рекурсивную функцию для решения задачи оптимизации:
def optimize(current_price = 0.1, last_profit = 0.0):
current_profit = profit(current_price)
if (last_profit > current_profit) and (current_profit > 0.0):
return {'best_price': current_price - 0.1, 'best_profit': last_profit}
# print({'best_price': current_price - 0.1, 'best_profit': last_profit})
else:
optimize(current_price + 0.1, current_profit)
def best_price():
optimized = optimize() # optimize() should return a dict,
# allowing optimized['best_price']
# and optimized['best_profit'] to be called
print("Pricing the tickets at ${0} will produce the greatest profit, ${1}.".format(optimized['best_price'], optimized['best_profit']))
Функция работает правильно, за исключением того, что она ничего не возвращает.Я не хочу сказать, что первый оператор if
никогда не вызывается (фактически, когда я раскомментирую строку печати, он напечатает правильный результат), но оператор return не может вернуть словарь.
Это приводит к TypeError
, когда я пытаюсь вызвать optimized['best_price']
, как 'NoneType' object is not subscriptable
.
Я уже некоторое время работаю над этой ошибкой и, похоже, не могуон работает сам или найди что-нибудь об этом в Интернете.На данный момент я просто хочу узнать решение.Есть идеи?Спасибо!