[英]Credit card balance exercise in Python
我應該編寫一個簡單的程序來執行以下操作:
接受以下輸入:
我應該打印出固定的每月還款額和還清債務的月份數(最多12個,甚至更少)。 我還應該在最后打印余額(可能為負數)。
我們假設假定利息是根據月初(在該月還款之前)的余額按月計息。 每月付款必須是$ 10的倍數,並且所有月份都必須相同。 由於該方案,余額可能變為負數。
因此,每月利率=年利率/ 12.0
每月更新的余額=舊余額*(1 +每月利率)-最低每月還款額
現在,分配此問題的人為正確的程序提供了一個測試案例:
>>>
Enter the outstanding balance: 1200
Enter annual interest rate: 0.18
RESULT
Monthly payment to pay off debt in 1 year: 120
Number of months needed: 11
Balance: -10.05
>>>
這是我編寫的程序(我將輸入固定為與上面相同的值,以查看程序是否可以正常工作:
## ob = float (raw_input ("Enter the outstanding balance:"))
##accir = float(raw_input("Enter annual interest rate:"))
ob = float (1200)
mp = float (0)
n = float (0)
while rb >= 0:
rb = ob
mp += 10
n += 1
rb = ( rb*(1 + (accir/12.0)**n) - n*mp)
print "Result:"
print "Monthly payment to pay off debt in one year:" , mp
print "Number of months needed:" , n
print "Balance:" , rb
似乎還可以,但是當我運行它時,我得到了:
>>>
Result:
Monthly payment to pay off debt in one year: 110.0
Number of months needed: 11.0
Balance: - 10.0
>>>
與我上面較早編寫的正確輸出相比,哪一個略有不同。
很抱歉寫得很亂,我不知道如何在該論壇中編寫代碼。 另外,請注意,我編寫的問題和程序並非完全與我一樣,但大致相同。
可能是什么問題? 謝謝。
首先要解決的一件事-如何從年利率中得出月利率。 一般復利公式為:
At = A0(1 + r)^t
其中At是時間t的總量,A0是時間0的總量,r是比率。 重新排列r:
r = (At/A0)^1/t - 1
注意,At / A0實際上是年利率加1,在這種情況下,我們希望t為12。因此,獲取月利率的方法是將APR聲明為十進制,加一,用上述比率替代,將其提高到十二分之一,然后減去一。
https://math.stackexchange.com/questions/902687/bactracking-to-find-compound-interest/902693#902693
無論如何,這是答案:
def main(rb):
count = 0
while rb > 0:
rb = round(rb*(0.18/12 + 1) - 120, 2)
count += 1
#print(count, rb)
return count, rb
print(main(input('Balance: '))) #Balance: 1200
我使用了給出的月度費率的定義,因為即使它應顯示為rb *(1.18 **(1.0 / 12)),也必須使用它。 1.0在python2中強制執行真正的除法。 如果任何一個版本都在python3中運行,則必須將int函數應用於輸入; python2假定了這一點。
注意:如果原始余額大於7999,利息將超過最低還款額,程序將進入無限循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.