1

我对python真的很陌生,我刚刚做了一个小程序。如果您输入“Hello”或“hello”,它会说“working”,如果您输入其他任何内容,它会说“not working”。这是我到目前为止的代码:

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

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

非常感谢!!

4

5 回答 5

13

您正在检查是否typed等于"Hello"OR,如果"hello"作为独立表达式的计算结果为 true(它确实如此)。您不必链接多个值来检查原始变量。如果你想检查一个表达式是否等于不同的东西,你必须重复它:

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.
于 2012-08-22T16:35:52.393 回答
2

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

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

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

于 2012-08-22T16:34:30.627 回答
2

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

typed = raw_input("> ")
if typed.lower() == "hello":
    print "Working"
else:
    print "not working"
于 2012-08-22T16:35:58.913 回答
2

or( 和)两边的表达式and彼此独立计算。因此,右侧的表达式不共享左侧的“==”。

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

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

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

typed in ('Hello', 'hello')
于 2012-08-22T16:36:35.820 回答
0

你可以通过两种方式做到这一点(至少)

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"
于 2012-08-22T16:36:47.317 回答