计算credi余额的程序

2024-03-28 12:36:36 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我想写一个程序,打印出一年后的最后余额

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

Tags: 程序newpayment信用卡余额printbalanceminimum
3条回答

看起来你的价值观没有更新,因为你忘了每月更新余额!尝试在每个循环中更新一次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)

不需要变量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

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

这里没有任何variabel,它将在每次while循环后更新。 您应该更新balance,以便每次都得到一个较低的数字。

相关问题 更多 >