現在、edx の MITx コースを受講していますが、1 つの演習で問題があります。このコードで無限ループに陥る理由を教えてください。二分探索ループが正常に動作していないと思いますが、その理由はよくわかりません。コードは次のとおりです。
balance = 5000
annualInterestRate = 0.18
low = balance/12
high = (balance * (1 + annualInterestRate / 12) ** 12) / 12
guess = (low + high)/2
def getBal(guess, balance, annualInterestRate):
mon = 0
while mon < 12:
mon += 1
ub = balance - guess
balance = ub + (annualInterestRate/12) * ub
return balance
z = getBal(guess, balance, annualInterestRate)
while abs(round(z, 2)) > 0:
if round(z, 2) > 0:
low = guess
else:
high= guess
guess = (high+low)/2
print "Lowest Payment: " + str(round(guess,2))