2016-02-13 80 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

完全允許爲你的問題添加後續信息,但如果這太多地改變了原始問題,最好的辦法就是發佈一個單獨的問題。 – 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),所以返回類型monthly_payment_function在這裏並不重要 – AlokThakur

+0

謝謝我做了這些更改,但代碼仍然不起作用。我編輯了上面的代碼。 –