在Python循环中计算余额和每月付款
balance = 4213
annualInterestRate = 0.2
monthlyPaymentRate =0.04
monthInterestRate = annualInterestRate / 12
monthlyPayment = (monthlyPaymentRate*balance)
newBalance= (balance-monthlyPayment) * (1 + monthInterestRate)
month = 0
while month < 12:
month += 1
newBalance=(balance-monthlyPayment)*(1 + monthInterestRate)
balance = newBalance
monthlyPayment = (monthlyPaymentRate*newBalance)
print ("Month: " + str(month))
print ("Minimum monthly payment: " + str(round(monthlyPayment,2)))
print ("Remaining balance: " + str(round(newBalance, 2)))
我有上面的代码,我想让它显示下面的输出:
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.89
Month: 4
Minimum monthly payment: 156.68
Remaining balance: 3822.88
Month: 5
Minimum monthly payment: 152.92
Remaining balance: 3731.13
Month: 6
Minimum monthly payment: 149.25
Remaining balance: 3641.58
Month: 7
Minimum monthly payment: 145.66
Remaining balance: 3554.19
Month: 8
Minimum monthly payment: 142.17
Remaining balance: 3468.89
Month: 9
Minimum monthly payment: 138.76
Remaining balance: 3385.63
Month: 10
Minimum monthly payment: 135.43
Remaining balance: 3304.38
Month: 11
Minimum monthly payment: 132.18
Remaining balance: 3225.07
Month: 12
Minimum monthly payment: 129.0
Remaining balance: 3147.67
Total paid: 1775.55
Remaining balance: 3147.67
但是不知为什么,我总是得到下面的结果,而不是上面的... 有人能告诉我我哪里出错了吗?非常感谢!
Month: 1
Minimum monthly payment: 164.48
Remaining balance: 4111.89
Month: 2
Minimum monthly payment: 160.53
Remaining balance: 4013.2
Month: 3
Minimum monthly payment: 156.68
Remaining balance: 3916.89
Month: 4
Minimum monthly payment: 152.92
Remaining balance: 3822.88
Month: 5
Minimum monthly payment: 149.25
Remaining balance: 3731.13
Month: 6
Minimum monthly payment: 145.66
Remaining balance: 3641.58
Month: 7
Minimum monthly payment: 142.17
Remaining balance: 3554.19
Month: 8
Minimum monthly payment: 138.76
Remaining balance: 3468.89
Month: 9
Minimum monthly payment: 135.43
Remaining balance: 3385.63
Month: 10
Minimum monthly payment: 132.18
Remaining balance: 3304.38
Month: 11
Minimum monthly payment: 129.0
Remaining balance: 3225.07
Month: 12
Minimum monthly payment: 125.91
Remaining balance: 3147.67
4 个回答
1
考虑一下在while循环中语句的顺序。
1
你的每月付款少算了一个月。
在你的计算中,每月付款(monthlyPayment
)是根据新的余额(newBalance
)来算的,也就是在你付款之后的余额。
2
你算法中的问题是每月的付款是根据新的余额来计算的。
关于你的Python代码,有几点建议:
1- 在Python中编程时,使用下划线而不是驼峰命名法。
2- 打印时使用字符串格式化,而不是用str()。
3- 在这里使用for循环比while循环更合适。
4- 当不需要时,不用过多使用括号。
balance = 4213
annual_interest_rate = 0.2
monthly_payment_rate =0.04
monthly_interest_rate = annual_interest_rate / 12
monthly_payment = monthly_payment_rate * balance
new_balance= (balance - monthly_payment) * (1 + monthly_interest_rate)
for month in range(1, 13):
monthly_payment = monthly_payment_rate * balance
balance = (balance - monthly_payment) * (1 + monthly_interest_rate)
print('Month: %d \n Minimum monthly payment: %g \n Remaining balance: %g'\
% (month, round(monthly_payment, 2), round(balance,2)))