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' 

Python 2.7.5

4

2 回答 2

2

这个表达式没有做你想做的事,因为它总是正确的——如果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 回答