2013-10-27 2 views
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이 표현은 항상 사실 때문에 당신이 원하는 일을하지 않는if는 문자열을 항상 비교합니다. 왜?

답변

2

-temp[0]False로 평가되면 다음이 값의 부울 맥락에서 True이다 문자열 'test'입니다 :

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')): 
0

이로 변경합니다 ...

if (temp[0]=='generate') or (temp[0] == 'test') or (temp[0] == 'randomize') or (temp[0] == 'randomise') or (temp[0] == 'go'): 
    print 'bunnies' 
관련 문제