0

我在 Codecademy 学习 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*

请帮助我...我的代码中是否存在某种错误?

4

2 回答 2

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'
>>>

在这两种情况下(以及我错过的任何情况),您都将“是”视为定义的变量而不是字符串。

于 2013-08-25T14:27:11.113 回答
1

上面的代码工作正常。可能的问题是,当您调用该函数时,您使用shut_down(yes)而不是shut_down('yes')

于 2013-08-25T14:01:10.043 回答