2013-11-03 28 views
0

我參加了課程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) 
+0

選擇一個:http://stackoverflow.com/search?q = [python]bisect+credit+card – roippi

+0

@roippi - 謝謝。我看過其他帖子,但我仍然沒有得到29157.09的答案。 – user2949713

+1

這是一個提示。無論何時'unpaidBalance <0',外部'while'循環結束,無論'還款'金額是否正確。 – martineau

回答

0

你不得不改變條件 如果unpaidBalance> 0.01: lowerRepayment =還款 ELIF unpaidBalance < -0.01: upperRepayment =還款 2.make你的循環結束的時候unpaidBalance爲-0.01至0.01之間