2012-10-08 77 views
-3

如果一个人每个月只支付信用卡公司要求的最低每月支付,请编写一个程序计算一年后的信用卡余额。计算信用余额的计划

我试图写一个程序,将打印期末余额左手交一年后

balance = 4213 

annualInterestRate = 0.2 

monthlyPaymentRate = 0.04 

month = 1 

new_balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12)) 


while month < 13: 
    print "Month: " + str(month) 
    print "Minimum monthly payment: " + str(round(minimum_monthly_payment, 2)) 
    print "Remaining balance: " + str(round(new_balance, 2)) 
    month += 1 

我的输出显示这一点:

Month: 1 
Minimum monthly payment: 168.52 
Remaining balance: 4111.89 

Month: 2 
Minimum monthly payment: 168.52 
Remaining balance: 4111.89 

Month: 3 
Minimum monthly payment: 168.52 
Remaining balance: 4111.89 

但我应该得到的东西是这样的:

Month: 1 
Minimum monthly payment: 168.52 
Remaining balance: 4111.89 

Month: 2 
Minimum monthly payment: 164.48 
Remaining balance: 4013.2 

Month: 3 
Minimum monthly payment: 160.53 
Remaining balance: 3916.8 

回答

0

你不需要变量new_balance,你应该只修改变量balance

while month < 13: 
    print "Month: " + str(month) 
    print "Minimum monthly payment: " + str(round(minimum_monthly_payment, 2)) 
    balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12)) 
    print "Remaining balance: " + str(round(balance, 2)) 
    month += 1 

输出:

Month: 1 
Minimum monthly payment: 168.52 
Remaining balance: 4111.89 
Month: 2 
Minimum monthly payment: 168.52 
Remaining balance: 4013.2 
Month: 3 
Minimum monthly payment: 168.52 
Remaining balance: 3916.89 
Month: 4 
Minimum monthly payment: 168.52 
Remaining balance: 3822.88 
Month: 5 
Minimum monthly payment: 168.52 
Remaining balance: 3731.13 
Month: 6 
Minimum monthly payment: 168.52 
Remaining balance: 3641.58 
Month: 7 
Minimum monthly payment: 168.52 
Remaining balance: 3554.19 
Month: 8 
Minimum monthly payment: 168.52 
Remaining balance: 3468.89 
Month: 9 
Minimum monthly payment: 168.52 
Remaining balance: 3385.63 
Month: 10 
Minimum monthly payment: 168.52 
Remaining balance: 3304.38 
Month: 11 
Minimum monthly payment: 168.52 
Remaining balance: 3225.07 
Month: 12 
Minimum monthly payment: 168.52 
Remaining balance: 3147.67 
+0

非常感谢。我刚刚在while循环中观看了一段视频,只是看到了我的错误。我没有把余额作为变量放入循环中,并且在循环之后没有修改......谢谢。 :) – Contempt

+0

@ user1692479很高兴帮助。 :)如果回答帮助你,那么你可以通过检查答案左边的勾号来接受它。 –

0

你在做3次同一行:new_balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12))

这里没有任何变量,它会在每个while循环后更新。 您应该更新balance以获得每次较低的号码。

+0

重复的输出是从while循环 - 绝对不是由该线,其中仅发生一次打印出来。 –

+0

好的,但你必须更新“余额”,以保持较低的价值。否则你正在做这样的数学:A = 1,B = 1, < - 这个失踪 – Rob

0

它看起来像你的价值没有更新,因为你忘记每月更新余额!试着每次循环更新balance变一次,像这样:

while month < 13: 
    print "Month: " + str(month) 
    print "Minimum monthly payment: " + str(round(minimum_monthly_payment, 2)) 
    print "Remaining balance: " + str(round(balance, 2)) 
    balance = (balance - (balance*monthlyPaymentRate))*(1+(annualInterestRate/12)) 
    month += 1 

此外,为使您的代码更易于阅读(以及更多Python的),你可以使用Python内置列表结构,而不是使用您的自己的while循环:

for month in range(1, 13): 
    print "Month: %d" % month 
    print "Minimum monthly payment: %d" % round(minimum_monthly_payment, 2) 
    print "Remaining balance: %d" % round(balance, 2) 
    balance = (balance - (balance * monthlyPaymentRate)) * (1 + (annualInterestRate/12)