2014-03-28 379 views
0

我正在嘗試編寫一個函數來計算貸款的成本,但我不斷得到貸款的成本爲用戶輸入的負值貸款。函數的多個參數定義Python

#define monthly payment 
def MonthlyPayment (ammountOfLoan, numberOfPeriods,yearlyInterestRate): 
    ammountOfLoan = 0 
    numberOfPeriods = 0 
    yearlyInterestRate = 0 
    payment = [(yearlyInterestRate/12)/(1-(1+yearlyInterestRate/12))**(-numberOfPeriods)] * ammountOfLoan  
    return (payment) 


#define cost of loan  
def LoanCost(principal, month, payment): 
    period = 0 
    month = 0 
    payment = 0 
    cost = period * payment - principal 
    return (cost) 

#calculate cost of loan 
def main(): 
    loan = float(raw_input("What is the ammount of your loan? ")) 
    period = float(raw_input("How many months will you make payments? ")) 
    rate = float(raw_input("What is the interest rate? ")) 
    rate = rate/100 
    MonthlyPayment(loan, period, rate) 
    costOfLoan = LoanCost(loan, period, rate) 
    print "The cost of the loan is $" + str(costOfLoan) 

#run main 
main() 
+0

'pdb'是你的朋友 – shx2

+0

爲什麼你會傳遞參數,如果你只是立即放棄他們的價值觀? (例如通過執行'numberOfPeriods = 0')。你應該真的瞭解python的基礎知識。只需閱讀教程,文檔,以艱難的方式學習python,編碼學院,任何東西。 – acushner

回答

3

LoanCost被設定期限和付款爲0(你正在做的MonthlyPayment同樣的錯誤,也一樣),然後乘以他們。所以你以(0 * 0) - principal爲結束。當你真正的意思是「期間」時,你也會調用第二個參數「月」。

只是爲了澄清,當你有一個函數定義,就像

def func(a, b, c): 

你不應該在函數體中初始化,b和c爲零。當你這樣做時,你正在覆蓋他們的價值。只需直接使用它們。