Pset2 Python Problem3-UsingBisectionSearch.py
I am completely new to Python, and I have lots of problems working out indentation, anyway I need someone to help me understand why my code not working...( The if condition is not
Solution 1:
You should be deducting ans not monthlyPayment, setting monthlyPayment = ans outside the loop does not mean monthlyPayment will be updated when you set ans = (Low + High) / 2.0 inside the while loop each time, you are creating a new object each time:
while abs(newbalance) > 0.001: # check if we are withing +- .001 of clearing balance
newbalance = balance
month = 0
for month in range(12): # loop over 12 month range
print('low = ' + str(Low) + ' high = ' + str(High) + ' ans = ' + str(ans))
newbalance -= ans # deduct ans not the the original value set outside the while
interest = monthlyInterestRate * newbalance
newbalance += interest
print month
if newbalance > 0:
Low = ans
else:
High = ans
ans = (Low + High) / 2.0
print "Lowest Payment: {:.2f}".format(ans) # format to two decimal places
Also it is better to use for month in range(12), we know we only want to have 12 iterations so much simpler to use range.
Even if you were doing a ans += 2 your monthlyPayment would not be updated as ints are immutable so monthlyPayment would still only point to the original value of ans.
In [1]: ans = 10
In [2]: monthlyPayment = ans
In [3]: id(ans)
Out[3]: 9912448
In [4]: id(monthlyPayment) # still the same objects
Out[4]: 9912448
In [5]: ans += 10 # creates new object
In [6]: ans
Out[6]: 20
In [7]: monthlyPayment # still has original value
Out[7]: 10
In [8]: id(monthlyPayment) # same id as original ans
Out[8]: 9912448
In [9]: id(ans) # new id because it is a new object
Out[9]: 9912208
Post a Comment for "Pset2 Python Problem3-UsingBisectionSearch.py"