2012-08-22 97 views
1

我真的很陌生,我剛做了一個小程序。如果你輸入「你好」或「你好」,它會說「工作」,如果你輸入其他的東西,它會說「不工作」。下面的代碼我到目前爲止:Python 2 - 如何使用'或'?

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

的代碼無法正常工作,無論我提交總是會說「工作」,即使我鍵入「jsdfhsdkfsdhjk」。如果我拿出「或」和「你好」,它確實有效,但我想檢查兩者。我怎樣才能使腳本工作?

非常感謝!

回答

2

if (typed) == "Hello" or "hello":應該if typed == "Hello" or typed == "hello":

問題目前是or應該分開兩個問題。它不能用於爲同一個問題分開兩個答案(這是我認爲你期待它做的)。

因此python嘗試將「hello」解釋爲一個問題,並將其轉換爲true/false值。它發生的「你好」投到true(你可以查找原因)。所以你的代碼真的說「如果某事或真」,總是true,所以總是輸出「工作」。

13

您檢查是否typed等於"Hello"或者如果"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. 
+0

+1對'in'。最好的使用。 – quantum

2

您可能想嘗試將typed轉換爲小寫,因此您只需檢查一件事。如果他們輸入「HELLO」會怎麼樣?

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

上的or(和and)兩邊的表達式進行求值彼此獨立。所以,右側的表達式不會從左側共享'=='。

如果你想測試針對多種可能性,你可以做

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

(如Hbcdev建議),或使用in操作:

typed in ('Hello', 'hello') 
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"