0
import re

def cleanseCommand(x):
    return ''.join(re.split(r'[.;!/?,]', x))



while(True):

    temp = raw_input("Give command-").split()

    for i in range(0,len(temp)):
        temp[i]= cleanseCommand(temp[i]) 

    if(''.join(temp)=='exit'):
        sys.exit()
    if(temp[0]=="generate" or 'test' or 'randomize' or 'randomise' or 'go'):
        print 'bunnies' 

パイソン 2.7.5

4

2 に答える 2

2

この式は常に true であるため、必要な処理を行っていません。temp[0]評価された場合、そのFalse値は string'test'でありTrue、ブール値のコンテキストにあります。

if(temp[0]=="generate" or 'test' or 'randomize' or 'randomise' or 'go'):

あなたが明らかに意味したのは次のようなものです:

if(temp[0]=="generate" or temp[0]=='test' or temp[0]=='randomize' or temp[0]=='randomise' or temp[0]=='go'):

上記をもう少し良いものに置き換えることもできます:

if(temp[0] in ("generate",'test', 'randomize', 'randomise', 'go')):
于 2013-10-27T13:02:18.913 に答える
0

これに変更してみてください...

if (temp[0]=='generate') or (temp[0] == 'test') or (temp[0] == 'randomize') or (temp[0] == 'randomise') or (temp[0] == 'go'):
    print 'bunnies' 
于 2013-10-27T13:04:31.383 に答える