我是python的新手,我刚做了一个小程序。如果你键入“Hello”或“hello”,它会说“工作”,如果你输入任何其他内容,它会说“不工作”。这是我到目前为止的代码:
print "Type in 'Hello'"
typed = raw_input("> ")
if (typed) == "Hello" or "hello":
print "Working"
else:
print "not working"
代码无效,无论我提交什么,它总是会说“工作”,即使我输入“jsdfhsdkfsdhjk”。如果我拿出“或”和“你好”,它确实有效,但我想检查两者。如何使脚本有效?
非常感谢!!
答案 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"