Python 计算信用卡还款的二分法

Python 计算信用卡还款的二分法,python,bisection,Python,Bisection,我正在学习6.00.1x计算机科学与编程入门课程。我被要求提出一个计划,计算一年内还清信用卡余额所需的最低还款额。为此,我需要使用二分法 我已经想出了这段代码(请看下面)。当我运行代码时,我得到了29591.55作为答案;然而,我应该得到29157.09 有人能帮我解决哪里出了问题吗 balance = 320000 annualInterestRate = 0.2 monthlyInterestRate = annualInterestRate/12.0 lowerRepayment = ba

我正在学习6.00.1x计算机科学与编程入门课程。我被要求提出一个计划,计算一年内还清信用卡余额所需的最低还款额。为此,我需要使用二分法

我已经想出了这段代码(请看下面)。当我运行代码时,我得到了29591.55作为答案;然而,我应该得到29157.09

有人能帮我解决哪里出了问题吗

balance = 320000
annualInterestRate = 0.2
monthlyInterestRate = annualInterestRate/12.0
lowerRepayment = balance/12
upperRepayment = (balance * (1 + monthlyInterestRate)**12)/12
repayment = (lowerRepayment + upperRepayment)/2
unpaidBalance = balance
while unpaidBalance >= 0:
    repayment = round(((lowerRepayment + upperRepayment)/2), 2)
    unpaidBalance = balance
    numberOfRepayments = 0
    while numberOfRepayments < 12 and unpaidBalance >= 0:
        numberOfRepayments += 1
        monthlyUnpaidBalance = unpaidBalance - repayment
        increment = monthlyUnpaidBalance * monthlyInterestRate
        unpaidBalance = monthlyUnpaidBalance + increment
    if unpaidBalance < -0.01:
        lowerRepayment = repayment
    elif unpaidBalance > 0.01:
        upperRepayment = repayment
print 'Lowest Payment: ' + str(repayment)
余额=320000
年利率=0.2
月利率=年利率/12.0
lowerRepayment=余额/12
还款上限=(余额*(1+月利息)**12)/12
还款=(低还款+高还款)/2
未付款余额=余额
取消支付余额>=0时:
还款=四舍五入((低还款+高还款)/2),2)
未付款余额=余额
还款次数=0
当还款数量<12且未援助余额>=0时:
还款次数+=1
monthlyUnpaidBalance=未支付余额-还款
增量=月收益率平衡*月收益率
取消支付余额=每月支付余额+增量
如果未支付余额<-0.01:
低还款=还款
elif unpaidBalance>0.01:
还款上限=还款
打印“最低付款额:”+str(还款)

您必须根据需要更改条件 如果取消支付余额>0.01: 低还款=还款 elif unpaidBalance<-0.01: 还款上限=还款
2.当unpaidBalance介于-0.01和0.01之间时结束循环

选择一个:@roippi-谢谢。我看了其他帖子,仍然没有得到29157.09的答案。这里有一个提示。只要
取消支付余额<0
外部
while
循环结束,无论
还款金额是否正确。谢谢@martineau。我该怎么做?我尝试将另一个条件添加到外部while循环中,但它没有响应。简单地说,它需要保持循环,直到
unpaidBalance
接近零——超过或低于。您还必须注意,它不会进入这样一种情况,即每次迭代还款值不再以一种方式或另一种方式改变,因为这样它将进入一个无限循环。