2013-08-25 63 views
0

我從Codecademy學習Python。自定義python函數不工作

有一個問題:

寫一個函數,shut_down,即採用一個參數(你可以使用任何你喜歡的,在這種情況下,我們會使用S代表字符串)。該shut_down函數返回'Shutting down...'當它得到'Yes''yes',或'YES'作爲參數,並'Shutdown aborted!'當它得到'No''no',或'NO'

針對這一點,我寫了這個:

def shut_down(n): 
    p=n.lower() 
    if p=="yes": 
     return "Shutting down..." 
    elif p=="no": 
     return "Shutdown aborted!" 

但是,當我嘗試運行它,會出現以下錯誤:

Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'yes' is not defined* 

請幫助我.. 。我的代碼中存在某種錯誤?

+3

我猜你在你的文件的第一行放了'yes'而不是''yes'',但你沒有顯示它很難肯定地說......建議:閱讀編譯器說:) – BartoszKP

回答

3

由於您未包含第1行(錯誤的行),因此很難確切知道發生了什麼, 。但是,我個人的經驗來看,我覺得你的問題是兩件事情之一:

1)你是Python的2.x和使用input時,你應該使用raw_input

>>> input() 
yes 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "<string>", line 1, in <module> 
NameError: name 'yes' is not defined 
>>> raw_input() 
yes 
'yes' 
>>> 

2)在第一行,你有yes的時候,你應該有'yes'

>>> yes 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'yes' is not defined 
>>> 'yes' 
'yes' 
>>> 

在這兩種情況下(以及任何我錯過了),你是治療「是」爲定義的變量,而不是一個字符串。

+0

http://www.codecademy.com/courses/python-beginner-c7VZg/4/1?curriculum_id=4f89dab3d788890003000096檢查了這一點...我嘗試了一切,但它不工作... – Chaitanya

1

上面的代碼工作正常。可能問題在於,在您調用該函數時,您已經使用了shut_down(yes)而不是shut_down('yes')

+0

實際上有一個應用程序,自動測試代碼...所以當我提交它顯示一個錯誤。 – Chaitanya