14

我正在学习 Python,但遇到了一些问题。在我正在学习的课程中看到类似的东西后想出了这个简短的脚本。我之前成功地使用了“或”和“如果”(这里没有显示太多)。出于某种原因,我似乎无法使其正常工作:

test = raw_input("It's the flying circus! Cool animals but which is the best?")
x = test.lower()

if x == "monkey" or "monkeys":
    print "You're right, they are awesome!!"
elif x != "monkey" or "monkeys":
    print "I'm sorry, you're incorrect.", x[0].upper() + x[1:], "is not the right animal."

但这很好用:

test = raw_input("It's the flying circus! Cool animals but which is the best?")
x = test.lower()

if x == "monkey":
    print "You're right, they are awesome!!"
elif x != "monkey":
    print "I'm sorry, you're incorrect.", x[0].upper() + x[1:], "is not the right animal."

可能 or 条件不适合这里。但是我已经尝试过,等等。我希望有一种方法可以让这个接受猴子或猴子,其他一切都会触发 elif。

4

3 回答 3

27

大多数编程语言中的布尔表达式不遵循与英语相同的语法规则。您必须对每个字符串进行单独比较,并将它们与or

if x == "monkey" or x == "monkeys":
    print "You're right, they are awesome!!"
else:
    print "I'm sorry, you're incorrect.", x[0].upper() + x[1:], "is not the right animal."

您不需要对不正确的情况进行测试,只需使用else. 但如果你这样做了,那将是:

elif x != "monkey" and x != "monkeys"

你还记得在逻辑课上学过德摩根定律吗?他们解释了如何反转合取或析取。

于 2013-06-29T01:35:51.230 回答
5

gkayling 是正确的。您的第一个 if 语句在以下情况下返回 true:

x == "猴子"

或者

"monkeys" 计算结果为 true(它确实是因为它不是空字符串)。

当您想测试 x 是否是几个值之一时,使用“in”运算符很方便:

test = raw_input("It's the flying circus! Cool animals but which is the best?")
x = test.lower()

if x in ["monkey","monkeys"]:
    print "You're right, they are awesome!!"
else:
    print "I'm sorry, you're incorrect.", x[0].upper() + x[1:], "is not the right
于 2013-06-29T01:42:02.013 回答
3

应该 if x == "monkey" or x == "monkeys":

于 2013-06-29T01:30:40.183 回答