Я думаю, вам нужно поместить все в один цикл while
, где вы проверяете, соответствует ли ваш расчет ожидаемому результату, корректируйте предположение, если нет, прерываете цикл, если да.
guess = -1.5
while True:
calculation = ((guess**3)-3*guess+4)
print(calculation)
if abs(calculation - 0) < 0.1:
print("Correct guess: ", guess)
break
elif calculation < 0:
print("Guess is too small")
guess = guess + 0.1
elif calculation > 0:
print("Guess is too large")
guess = guess - 0.1
Обратите внимание, что я не сравниваю calculation == 0
, поскольку при выборе шага 0.1
для guess
маловероятно, что ваш расчет будет точно 0
.Другими словами, calculation == 0
будет всегда false
, и цикл никогда не остановится.Поэтому я проверяю, что calculation
достаточно близко к 0
, используя значение допуска 0.1
(то же, что и используемый шаг).В Python 3.5 или более поздней версии вы можете использовать math.isclose из математического модуля для выполнения этой же проверки.