2017-03-16 82 views
-1

我是新來的蟒蛇。在MIT OCW 6.001計算機科學入門和Python編程中工作。需要創建一個腳本,用於計算撥出的部分以支付抵押貸款。我需要使用二分法來找到要放置的部分。當我運行我的腳本時,我得到了一堆關於我的函數「儲蓄」如何取0位置參數但生成1的生氣文本。我不知道這意味着什麼。請幫助!試圖計算抵押貸款的百分比儲蓄

下面的代碼:

""" 
Created on Thu Mar 16 12:51:41 2017 

@author: [redacted] 
""" 

num_guesses = int(0) 
current_savings = int(0) 
annual_salary = input('enter your annual salary:') 
r = float(.04) 
raise_pct = float (.07) 
high = pct_saved = float(1.0) 
low = 0 
def savings(): 
    total_savings = 0 
    num_months = 0 
    monthly_salary = int(annual_salary)/12 
    portion_saved = pct_saved*monthly_salary 
    for num_months in range(0,35): 
     num_months += 1 
     total_savings += (current_savings*r)/12 + portion_saved 
     if (num_months%6) == 0 : 
      monthly_salary += monthly_salary*raise_pct 
      portion_saved = monthly_salary*pct_saved 
     return total_savings 
cost = 250000 
epsilon = float(.001) 
guess = (low + high)/2.0 
if savings(high) < cost: 
    num_guesses += 1 
    print ('You cannot afford this house.') 
while abs(savings(guess))-cost >= epsilon: 
    if savings(guess) < cost: 
     low = guess 
    else: 
     high = guess 
    guess = (high + low)/2.0 
    num_guesses += 1 
print ('Number of guesses:', num_guesses) 
print ('Savings percent is near:', pct_saved) 
+1

我建議你在解釋器中使用函數來掌握它們。 – Denziloe

回答

1

的錯誤信息是完全正確的:你定義savings採取任何參數,但有一個參數(無論是highguess)調用它。

1

您收到錯誤,因爲儲蓄功能沒有任何參數。這裏的功能是如何工作的:

# no arguments 
def function(): 
    return 1 

print function() # prints 1 

# one argument 
def function2(arg): 
    return arg 

a = 2 
print function2(a) # prints 2 
0
if savings(high) < cost: 
num_guesses += 1 
print ('You cannot afford this house.') 

這是您的錯誤的來源。根據這個特定的代碼片段,你可以調用function節省並給它一個變量。

但是,您明確定義儲蓄不採取任何參數。

def savings(): 
# your other code down here. 

要解決這個問題,你需要沿着

def savings(amountOfSavings): 
# your other code down here 

我也想指出的是,有函數名和含有參數的括號之間沒有空格的線做一些事情。

我還建議玩解釋器,以便了解函數是如何工作和被調用的。爲此,請通過命令行運行python。 python並做簡單的事情,如add(2, 2)。如果命令行吐出一個錯誤,您可能需要將Python放入命令行(關於如何執行此操作,有很多YouTube視頻)。

之後,您可以在交互模式下運行您的腳本來玩弄你的功能。要做到這一點,你做python -i yourScriptName.py