我正在学习Python并且陷入困境。我正在努力寻找贷款支付金额。我目前有:
def myMonthlyPayment(Principal, annual_r, n):
years = n
r = ( annual_r / 100 ) / 12
MonthlyPayment = (Principal * (r * ( 1 + r ) ** years / (( 1 + r ) ** (years - 1))))
return MonthlyPayment
n=(input('Please enter number of years of loan'))
annual_r=(input('Please enter the interest rate'))
Principal=(input('Please enter the amount of loan'))
但是,当我跑步时,我会少量离开。如果有人能指出我的错误,那就太好了。我使用的是Python 3.4。
答案 0 :(得分:3)
付款计算明智,您似乎没有正确翻译formula。除此之外,由于内置的input()
函数返回字符串,因此在将值传递给期望它们为数值的函数之前,您需要将它返回的任何内容转换为正确的类型。
def myMonthlyPayment(Principal, annual_r, years):
n = years * 12 # number of monthly payments
r = (annual_r / 100) / 12 # decimal monthly interest rate from APR
MonthlyPayment = (r * Principal * ((1+r) ** n)) / (((1+r) ** n) - 1)
return MonthlyPayment
years = int(input('Please enter number of years of loan: '))
annual_r = float(input('Please enter the annual interest rate: '))
Principal = int(input('Please enter the amount of loan: '))
print('Monthly payment: {}'.format(myMonthlyPayment(Principal, annual_r, years)))
答案 1 :(得分:0)
我认为在计算的最后一点,
/ (( 1 + r ) ** (years - 1))
你的包围错了;它应该是
/ ((( 1 + r ) ** years) - 1)
答案 2 :(得分:0)
我认为正确的公式就是这个,
MonthlyPayment = (Principal * r) / (1 - (1 + r) ** (12 * years))
我清理了一些变量,
def get_monthly_payment(principal, annual_rate, years):
monthly_rate = annual_rate / 100 / 12
monthly_payment = principal * (monthly_rate + monthly_rate / ((1 + monthly_rate) ** (12 * years) - 1))
return monthly_payment
years = float((input('Please enter number of years of loan')))
annual_rate = float((input('Please enter the interest rate')))
principal = float((input('Please enter the amount of loan')))
print ("Monthly Payment: " + str(get_monthly_payment(principal, annual_rate, years)))
在输入周围添加try-except块也是明智的。