2017-04-11 129 views
0

在我的自制代碼中遇到了一些麻煩。IDLE中NameError的問題 - Python

def even(a, b): 
    f = [] 
    while a <= b: 
     if a % 2 == 0: 
      f.append(a) 
     a = a + 1 
    return f; 

當我試着從上面說的殼叫它:

Traceback (most recent call last): 
File "<pyshell#43>", line 1, in <module> 
even(0,200) 
NameError: name 'even' is not defined. 

我認爲這不是一個很棘手的問題,但你能幫助我呢? 謝謝你在前面。 乾杯

+0

你是怎麼調用這個函數的? –

+0

這可能是其他地方的問題,這裏沒有什麼是立即錯誤的。 – SneakyTurtle

+2

您是否從您的IDE中單擊「運行」?因爲看起來你只是在IDE中編寫代碼,然後嘗試從shell中調用函數而不運行它。 – Wright

回答

0

兩件事。你是否正確縮進了你的函數,你是如何調用你的函數的?以下代碼有效:

def even(a, b): 
    f = [] 
    while a <= b: 
     if a % 2 == 0: 
      f.append(a) 
     a = a + 1 
    return f; 

print(even(2,3)) 
#output: [2] 

請注意縮進以及甚至在定義後調用的事實。

編輯:我注意到你已經得到它的工作,現在將是一個很好的時間來反映你的函數的某些部分,即給變量f一個更具描述性的名字。

0

如果你想從你的shell中運行它,你會想:

  1. 進入python到外殼,開始你的Python解釋
  2. 進入from <your-code's-filename.py> import even

那麼你可以使用你試過的功能如下:even(0,200)

但是你也可以直接從IDLE中運行,就像Wright建議的那樣。

+0

是的,謝謝。剛剛在IDLE中運行它,它工作 – user3714215