2013-12-18 167 views
0

我正在做一個快速zork遊戲,但我遇到了這個問題,使用「或」運算符。我認爲這很簡單,但我不明白爲什麼這不起作用。現在,如果你輸入「n」,你應該得到「這個工程」,因爲它等於字符串「n」。相反,它打印出「它的作品」和「這個作品」,所以很明顯我用「或」錯誤。或運算符混淆python

x=0 
    while x<20: 
     response = input("HI") 
     if response!= 'n': 
      print("it works") 

     if response == 'n': 
      print("this works") 
     x+=1 

使用前或它的工作原理

x=0 
while x<20: 
    response = input("HI") 
    if (response!= 'n') or (response != 's'): 
     print("it works") 


    if (response == 'n') or (response == 's'): 
     print("this works") 
    x+=1 

使用後或打印出來兩者。這可能是一些明顯-.-

+0

作爲一個側面說明,對於魔域風格的文字冒險遊戲,每個房間的功能(我只是假設在這裏,但是這就是大多數新手做...),其中每一個都是一串長長的'if' /'elif'這樣的語句,很快就會變得笨拙。您可能需要考慮從其餘代碼中分析解析器,並使用真正的解析庫,並將房間轉換爲數據而不是代碼等等。首先以[Inform](http://inform7.com)的形式構建一個冒險,看看它是多麼容易,然後試圖找出如何使它在Python中變得簡單,也許會有所幫助。 – abarnert

回答

4

表達:

(response != 'n') or (response != 's') 

永遠是任何字符串響應真。如果response'n',那麼它不是's'。如果它是's',那麼它不是'n'。如果是別的,那麼它不是's',也不是'n'

也許你打算在那裏使用and

+0

我是一個白癡,我沒有正確思考 – Jotin2

+2

@ Jotin2 - 現在,我們不要求助於名稱。我很確定,我們大多數人的生活幾個小時都被同樣簡單的錯誤困擾着。 – mgilson

+0

@mgilson我完全同意:) – thefourtheye

2

如果responsens,則兩個條件都將被滿足。要做到這一點,最好的辦法是

if response in ('n', 's'): 
    print ("it works") 
else: 
    print ("this works")