Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python循环中计算余额和每月付款_Python_Loops_While Loop - Fatal编程技术网

在Python循环中计算余额和每月付款

在Python循环中计算余额和每月付款,python,loops,while-loop,Python,Loops,While Loop,由于某种原因,我一直得到下面的结果,而不是上面的。。。有人能指出我做错了什么吗?多谢各位 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 Mo

由于某种原因,我一直得到下面的结果,而不是上面的。。。有人能指出我做错了什么吗?多谢各位

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

考虑while循环中报表的顺序。

算法中的问题是每月付款是根据新的余额计算的

关于Python代码的几点:

1-在python中编码时使用下划线而不是camelCase

2-打印时使用字符串格式而不是str()

3-因为这是一个比在这里更好的选择

4-不需要括号时,无需过度使用括号

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

您每月的付款期限为一个月


在您的计算中,每月付款(
monthlyPayment
)是基于新余额(
newBalance
)或在您付款后计算的。

检查您手工进行的计算,如果你正试图计算你将要支付的贷款利息金额或一段时间后的余额,则存在一个不需要在几个月内迭代的封闭式方程式。每月(抵押)付款公式隐约可见。另见。显然,如果这只是一个学习python的练习,那么这个评论是无关紧要的,但我希望在我偿还贷款的过程中知道这个等式。。。我只是看到浮点舍入失败正在等待发生。我不记得python是否有货币库或固定小数点,但我会在处理货币时使用它。请解释您的答案。尽管它适用于给定的数字,但每月利率计算可能会导致舍入错误。处理货币时使用小数数据类型。
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)))
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)))
balance = int(raw_input("Amount of money: "))

annualRate = float(raw_input("Annual interest rate: "))

monthlyPayment = float(raw_input("Minimum monthly payment rate: "))

total = 0
for month in range(1,13):

    minMonthlyPayment = monthlyPayment * balance

    unpaid = balance - (balance*monthlyPayment)

    balance = unpaid + ((annualRate/12)*unpaid)

    total = total + minMonthlyPayment
    print "Month: " + str(month)
    print "Minimum monthly payment: " + str(round(minMonthlyPayment, 2))
    print "Remaining balance: " + str(round(balance, 2))
print "Total paid: " + str(round(total, 2))
print "Remaining balance: " + str(round(balance, 2))