2013-10-01 3 views
0

문자열을 통과하여 주어진 문자를 찾아 다른 문자로 바꾼 작은 스크립트를 작성하고 있습니다.조건이 충족되지 않습니다.

def scrambler(string): 
    sen = '' 
    for c in string: 
     if c.lower == 'k': 
      sen += 'm' 
     elif c.lower == 'o': 
      sen += 'q' 
     elif c.lower == 'e': 
      sen += 'g' 
     else: 
      sen += c 
    return sen 

print scrambler('koe') 

문자가 'k'인지 알 수 있듯이 'm'이 sen에 추가되어야합니다. 웬일인지 조건은 충족되지 않고 있지만 나는 이유를 모르겠습니다.

답변

2

당신은 문자 상수 함수 객체 c.lower을 비교하는 : 당신은 함수를 호출 할 필요가 대신 :

def scrambler(string): 
    sen = '' 
    for c in string: 
     if c.lower() == 'k': 
      sen += 'm' 
     elif c.lower() == 'o': 
      sen += 'q' 
     elif c.lower() == 'e': 
      sen += 'g' 
     else: 
      sen += c 
    return sen 

print scrambler('koe') 
+0

감사합니다. 파이썬이()을 포함하지 않았는데도 어떻게 나에게 오류를 던지지 않았습니까? –

+2

'c.lower'는 유효한 문법이기 때문에 함수 객체에 대한 참조입니다. C 함수 포인터와 같이 매우 느립니다. 함수를 전달하고 변수에 저장하고 호출 할 수 있습니다. 이 http://codepad.org/UaGkt1OU를 고려하십시오. –