더북(TheBook)

문제를 발견하지 못하고 루프를 끝까지 돈다면 해당 단어는 테스트를 통과한 것이다. 루프가 올바르게 끝났다는 것을 확인하고 싶다면 flossy 같은 예를 사용해보자. 이 단어의 길이는 6이고, 마지막 루프가 실행되었을 때 i4, 즉 끝에서 두 번째 문자를 가리키는 인덱스가 된다. 마지막 반복에서는 끝에서 두 번째 문자와 마지막 문자를 비교하게 되고, 이것이 우리가 원하는 결과다.

다음은 두 인덱스를 사용하는 버전의 is_palindrome이다(연습문제 6-3 참조). 인덱스 하나는 처음부터 시작해서 하나씩 증가하고, 다른 하나는 끝에서 시작해서 하나씩 감소한다.

def is_palindrome(word):

i = 0

j = len(word)-1

while i<j:

if word[i] != word[j]:

return False

i = i+1

j = j-1

return True

또는 이전에 해결된 문제로 개선해서 작성할 수도 있다.

def is_palindrome(word):

return is_reverse(word, word)

is_reverse는 그림 8-2의 것을 사용했다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.