繁体   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