2016-07-10 1 views
0

if-else 문이 예상대로 실행되지 않는 이유를 알 수 없습니다. 회문 문자열을 테스트 할 코드를 만들려고했습니다. 내 인쇄 기능은 역 방법이 작동한다는 것을 보여 주지만 비교 단계에 도달하면 True를 반환 할 수 없습니다.Python 비교 연산자

def is_palindrome(a): 
    myList = [] 

    for i in a: 
     myList.append(i) 

    print myList 
    new = myList.reverse() 
    print myList 
    print new 

    if myList == new: 
     return True 
    else: 
     return False 


print is_palindrome("radar") 

이 False를 반환 : 여기

는 코드입니다. 나는 또한 if 문을 if myList is new:으로 변경하려고 시도했지만 불행히도 여전히 False를 반환합니다.

감사합니다.

답변

5

list.reverse()이 위치하며, 이는 호출 된 목록을 반대로 표시하지만 아무 것도 반환하지 않음을 의미합니다.

print newNone을 인쇄해야하므로 myList == newFalse이됩니다.

대신,하지의 장소 및 새로운 반전 목록을 반환 [::-1]를 사용하거나 예를 들어, 회문을 감지하는 쉬운 방법을 사용

def is_palindrome(iterable): 
    return iterable == iterable[::-1] 
+0

감사합니다. 현재의 개념을 이해하지만 왜 그 목록을 변수 new에 저장하지 않습니까? 편집 : 그냥 followup 보았다, 감사합니다! – arumiat

+0

@arumiat 정의에 따르면 메서드가 "현재 위치"일 때 아무 것도 반환하지 않습니다. – DeepSpace

+0

@arumiat'new = myList.reverse()'라인은 아무 것도 반환하지 않으므로 myList가 변경되었습니다. 나는 당신이 컨셉을 이해하지 못한다고 확신합니다 ... – Tim