2013-01-19 115 views
0

可能重複:
OR behaviour in python:我在Python代碼是不工作

我是一個初學者到編程,並選擇Python作爲我的第一語言..

print "start the conversation" 
conversation = raw_input() 

if conversation == "Hi" or "hi" or "Hello" or "hello": 
    print "Hey there!" 

elif conversation == "How are you?" or "how are you?": 
    print "I'm good and you?" 
else: 
    print "No one starts a conversation like this." 

但是,當我運行程序它工作得很好,我輸入「嗨」它回覆「嘿!」但每當我輸入以下內容作爲輸入「你好嗎?」它仍然會打印出「Hey there!」我希望它能打印出「我很好,你呢?」而不是「嘿!」!再次。請讓我容易,因爲我是初學者。

回答

1

if conversation == "Hi" or "hi" or "Hello" or "hello": 

應該讀

if conversation in ("Hi", "hi", "Hello", "hello"): 

同樣爲elif

您現在擁有的代碼在語法上是有效的,但不會做您認爲的代碼(它基本上總是評估爲True)。

+0

那麼如何我糾正\ – user1977722

+1

@ user1977722:我在回答解釋它的方式。 – NPE

+0

感謝您的幫助:) – user1977722

1

你的第一個條件總是爲真。 你應該使用:

if conversation == "Hi" or conversation == "hi" or conversation == "Hello" or conversation == "hello": 

if conversation in ("Hi", "hi", "Hello", "hello"): 
+0

元組是一個糟糕的選擇在這裏('O(N)'查找),使用裝置來代替。('O(1)'查找) –

+3

@AshwiniChaudhary別傻了。有四個選項。使用'set'只會混淆。 「不成熟的優化是萬惡之源。」 –

+2

特別爲創建從元組中的一組會爲O(n),所以你沒有爲單個查找獲得任何。 –