My function returns None
. I have checked to make sure all the operations are correct, and that I have a return statement for each function.
def parameter_function(principal, annual_interest_rate, duration):n = float(duration * 12)if annual_interest_rate == 0:r = float(principal / n)else:r = float(annual_interest_rate / 1200)p = principalreturn (p, r, n)def monthly_payment_function(p, r, n):monthly_payment = p * ((r * ((1 + r) ** n)) / (((1 + r) ** n) - 1))result = monthly_payment_function(p, r, n)return result
monthly_payment_function
does not return anything. Replace monthly_payment=
with return
(that's 'return' followed by a space).
Also you have an unconditional return
before def monthly_payment_function
, meaning it never gets called (strictly speaking, it never even gets defined).
Also you are pretty randomly mixing units, and your variable names could use some help:
from __future__ import division # Python 2.x: int/int gives floatMONTHS_PER_YEAR = 12def monthly_payment(principal, pct_per_year, years):months = years * MONTHS_PER_YEARif pct_per_year == 0:return principal / monthselse:rate_per_year = pct_per_year / 100.rate_per_month = rate_per_year / MONTHS_PER_YEARrate_compounded = (1. + rate_per_month) ** months - 1.return principal * rate_per_month * (1. + rate_compounded) / rate_compounded