0

我不明白为什么这个函数不打印我想要它打印的文本,我能改变什么?

def shut_down(answer):
    if answer == "Yes" or "YES" or "yes":
        print "Shutting down..."
        return "Shutting down..."
    if answer == "No"or "NO" or "no":
        print "Shutdown aborted!"
        return "Shutdown aborted!"
    else: 
        print "Sorry, I didn't understand you."
        return "Sorry, I didn't understand you."



shut_down(yes)
4

5 回答 5

1

我猜语言是Python。运算符在or条件之间操作,所以你需要做

answer == "yes" OR answer == "YES"

ETC ....

您的答案 == "Yes" 或 "YES" 始终为真,因为"YES"它被视为一个真实条件。

于 2013-11-14T21:05:26.263 回答
1
if answer.lower() == 'yes':

这就是你应该这样做的方式。实际上,这样做:if answer.lower() in ('yes', 'y'):让像我这样的懒人更方便。

无论如何,检查字符串列表的正确方法是:

if answer in ('foo', 'bar', 'foobar'):
于 2013-11-14T21:07:39.477 回答
0

以下不正确(if始终执行的主体):

if answer == "Yes" or "YES" or "yes":

相反,写

if answer in {"Yes", "YES", "yes"}:

或者

if answer.lower() == "yes":
于 2013-11-14T21:08:49.453 回答
0

您想将其更改为:

if answer == "Yes" or answer == "YES" or answer == "yes":
    print "Shutting down..."
    return "Shutting down..."

甚至更整洁:

if answer in ["Yes", "YES", "yes"]:

甚至更整齐:

 if answer.lower() == "yes":
于 2013-11-14T21:18:20.203 回答
-1

您的代码可能有错误,因为您没有在yes任何地方定义变量。

定义它,然后你应该是好的。


我说的是你传递给你的shut_down函数的变量

于 2013-11-14T21:03:24.820 回答