簡體   English   中英

Python中的信用卡余額練習

[英]Credit card balance exercise in Python

我應該編寫一個簡單的程序來執行以下操作:

接受以下輸入:

  1. 信用卡上的未結余額
  2. 年利率為小數

我應該打印出固定的每月還款額和還清債務的月份數(最多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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM