2016-02-13 4 views
-2

Моя функция возвращает None. Я проверил, чтобы убедиться, что все операции верны, и что у меня есть оператор return для каждой функции.Встраиваемая функция возвращает Нет

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 = principal 
    return (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 
+2

Пожалуйста, не редактирует свои вопросы таким образом, что аннулирует существующие ответы. В частности, не применяйте исправления от ответов на код, опубликованный в вашем вопросе. – user2357112

+0

Это вполне допустимо для _add_ последующей информации на ваш вопрос, но если это слишком сильно изменит исходный вопрос, лучше всего поставить отдельный вопрос. – martineau

ответ

2

monthly_payment_function ничего не возвращает. Замените monthly_payment= на return (это «возврат», за которым следует пробел).

Также у вас есть безусловный return до def monthly_payment_function, то есть он никогда не будет вызван (строго говоря, он даже не определяется).

Также вы довольно хаотически перемешивая единицы, и ваши имена переменных могли бы использовать некоторую помощь:

from __future__ import division # Python 2.x: int/int gives float 

MONTHS_PER_YEAR = 12 

def monthly_payment(principal, pct_per_year, years): 
    months = years * MONTHS_PER_YEAR 
    if pct_per_year == 0: 
     return principal/months 
    else: 
     rate_per_year = pct_per_year/100. 
     rate_per_month = rate_per_year/MONTHS_PER_YEAR 
     rate_compounded = (1. + rate_per_month) ** months - 1. 
     return principal * rate_per_month * (1. + rate_compounded)/rate_compounded 
+0

Он всегда должен возвращать (p, r, n), поэтому возвращаемый тип функции month_payment_function здесь не имеет значения – AlokThakur

+0

Спасибо. Я внес эти изменения, но код продолжает работать. Я редактировал код выше. –

Смежные вопросы