Python 3.5 - 每年贷款余额
问题描述:
我是Python的新手,正在尝试计算并输出基于4.5%年利率的贷款年度余额。病程5年和原则= 1000,但我只能做到每年支付的金额,但资产负债不匹配这应该是要求:Python 3.5 - 每年贷款余额
balance total payment
year 1 817 223
year 2 626 447
year 3 427 671
year 4 218 894
year 5 0 1118
我的计划是:
def monthlyPayments(principle,annual_interest_rate,duration):
global r, n
r=(annual_interest_rate/100)/12 #monthly interest rate
n=duration*pm#Total number of monthly payments for duration of loan
f1=pow(1+r,n)
f2=r*f1
f3=pow(1+r,n)
f4=f3-1
f5=f2/f4
monthlyPayment=principle*f5
return monthlyPayment
def balance(principle,annual_interest_rate,duration,pm):
f1=pow(1+r,n)
f2=pow(1+r,pm)
f3=f1-1
f4=f1-f2
f5=f4/f3
remainingLoanBalance=principle*f5
return remainingLoanBalance
principle=1000.0
annual_interest_rate=4.5
duration=5
pm=12#payments made
monthlyPayments=monthlyPayments(principle,annual_interest_rate,duration)
totalPayment=monthlyPayments*pm
balance =balance(principle,annual_interest_rate,duration,pm)
print("LOAN AMOUNT:",principle,"INTEREST RATE (PERCENT):",annual_interest_rate, "\nDURATION (YEARS):", duration, "MONTHLY PAYMENT:", int(monthlyPayments))
for i in range(1,duration+1):
print("YEAR:" ,i, "BALANCE:", int(balance), "TOTAL PAYMENT", int(totalPayment))
totalPayment=totalPayment+monthlyPayments*pm
balance=balance-monthlyPayments*pm
答
尝试numpy,你会爱上它的。 ;)
np.pmt() - 计算每月还款
np.fv() - 计算使用numpy的)未来价值
码(:
from __future__ import print_function
import numpy as np
amount = 1000
int_rate = 4.5/100
term = 5
nper = 12
mtly_pmt = -np.pmt(int_rate/nper, term*nper, amount)
fmt = 'year {0:2d} {1:8.2f} {2:8.2f}'
for y in range(1, term + 1):
print(fmt.format(
y,
np.fv(int_rate/nper, y*nper, mtly_pmt, -amount),
mtly_pmt * y * nper
)
)
输出:
year 1 817.55 223.72
year 2 626.72 447.43
year 3 427.12 671.15
year 4 218.36 894.86
year 5 -0.00 1118.58
代码(不numpy的):
from __future__ import print_function
# compute monthly payment
def pmt(rate, nper, pv):
"""
rate - annual interest rate
nper - # of periodic payments
pv - present value (principal loan amount)
"""
return (rate * pv)/(1 - (1 + rate)**(-nper))
# compute future value (remaining balance)
def fv(rate, nper, pmt, pv):
"""
rate - annual interest rate
nper - # of periodic payments
pmt - monthly payment
pv - present value (principal loan amount)
r1 = (1 + interest_rate) - will be used a few times below
"""
r1 = 1 + rate
return pv * r1**nper - pmt * (r1**nper -1)/rate
amount = 1000
int_rate = 4.5/100
term = 5
nper = 12
mtly_pmt = round(pmt(int_rate/nper, term*nper, amount), 2)
fmt = 'year {0:2d} {1:8.2f} {2:8.2f}'
for y in range(1, term + 1):
print(fmt.format(
y,
fv(int_rate/nper, y*nper, mtly_pmt, amount),
mtly_pmt * y * nper,
)
)
输出:
year 1 817.59 223.68
year 2 626.80 447.36
year 3 427.24 671.04
year 4 218.52 894.72
year 5 0.20 1118.40
TNK U,酷派非常简单。我必须使用2个功能,1.计算每月支付和2.计算剩余余额。 MonthlyPayment = Principal * r(1 + r)n(1 + r)n-1 r是月利率(4.5/100)/ 12利率= 0 tuse:MonthlyPayment = Principal/n n = (5x12) 第二个函数计算并返回剩余的贷款余额。按照确切顺序(本金,实际利率,期限,数量支付)接受4个四段。 本金:贷款总额。 – dprogram
annual_interest_rate:4.5 number_of_payments:已支付的每月付款数量。 计算剩余贷款余额使用: 剩余贷款余额=本金*(1 + r)n-(1 + r)p(1 + r)n-1 r是月利率。 r的计算方法是首先将annual_interest_rate除以100,然后将结果除以12以使其成为每月。如果利率= 0,则使用:RemainingLoanBalance =本金(1-pn) n是整个贷款期间的每月支付总额。 n =贷款年限x 12。p =支付金额。 Func应该返回剩余的bal作为float float – dprogram
@dprogram,我在我的答案中添加了“**代码(没有numpy)**”部分 - 它不使用“numpy”模块。 – MaxU