Python 2 - 如何使用'或'?

时间:2012-08-22 16:33:03

标签: python

我是python的新手,我刚做了一个小程序。如果你键入“Hello”或“hello”,它会说“工作”,如果你输入任何其他内容,它会说“不工作”。这是我到目前为止的代码:

print "Type in 'Hello'"
typed = raw_input("> ")
if (typed) == "Hello" or "hello":
   print "Working"
else:
    print "not working"

代码无效,无论我提交什么,它总是会说“工作”,即使我输入“jsdfhsdkfsdhjk”。如果我拿出“或”和“你好”,它确实有效,但我想检查两者。如何使脚本有效?

非常感谢!!

5 个答案:

答案 0 :(得分:13)

您正在检查typed是否等于"Hello"或者"hello" 独立表达式的评估结果是否为真(它是这样)。您无法链接多个值以检查原始变量。如果你想检查一个表达式是否等于不同的东西,你必须重复它:

if typed == 'Hello' or typed == 'hello':

或者,例如:

if typed in ['Hello', 'hello']: # check if typed exists in array

或者,像这样:

if typed.lower() == 'hello': # now this is case insensitive.

答案 1 :(得分:2)

if (typed) == "Hello" or "hello":应为if typed == "Hello" or typed == "hello":

目前的问题是or应该分开两个问题。它不能用于为同一个问题分开两个答案(这是我认为你期望它做的)。

因此python试图将“hello”解释为一个问题,并将其转换为true / false值。碰巧“hello”强制转换为true(你可以查找原因)。所以你的代码真的说“if something or TRUE”,总是true,所以总是输出“working”。

答案 2 :(得分:2)

您可能想尝试将typed转换为小写,因此您只需检查一件事。如果他们输入“HELLO”怎么办?

typed = raw_input("> ")
if typed.lower() == "hello":
    print "Working"
else:
    print "not working"

答案 3 :(得分:2)

or(和and)两侧的表达式彼此独立地进行评估。因此,右侧的表达式不会与左侧共享'=='。

如果您想针对多种可能性进行测试,可以执行

typed == 'Hello' or typed == 'hello'

(正如Hbcdev建议的那样),或者使用in运算符:

typed in ('Hello', 'hello')

答案 4 :(得分:0)

你可以通过两种方式(Atleast)

来实现
print "Type in 'Hello'"
typed = raw_input("> ")
if typed == "Hello" or typed == "hello":
   print "Working"
else:
    print "not working"

或使用in

print "Type in 'Hello'"
typed = raw_input("> ")
if typed in ("Hello","hello",):
   print "Working"
else:
    print "not working"