2013-12-18 135 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")