#下面的代码是二分法求信用卡每月最低还款的题,这是正确代码
def pay(balance,annualInterestRate):
if balance<=0:
return None
low=balance/12.0
high=(balance*(1+annualInterestRate/12.0)**12)/12.0
while True:
b=balance
pay2=(low+high)/2
for i in range(12):
b=(b-pay2)*(1+annualInterestRate/12.0)
if abs(b)<=0.01:
return pay2
elif b>0.01:
low=pay2
else:
high=pay2
print pay(320000,0.2)
#这是错误代码!请问这下面应该怎么改,应该是错在while的代码块!求问用while写的话怎么改??
def pay(balance,annualInterestRate):
if balance<=0:
return None
b=balance
low=b/12.0
high=(b*(1+annualInterestRate/12.0)**12)/12.0
pay2=(low+high)/2
while b>0.01:
if pay2>b*(1+annualInterestRate/12):
high=pay2
else:
low=pay2
pay2=(low+high)/2.0
b=(b-pay2)*(1+annualInterestRate/12.0)
return pay2
print pay(320000,0.2)还想弱弱的问一下?这个能不能通过牛顿拉夫逊算法计算?
添加回答
举报
0/150
提交
取消