Img profile default
goback
  • 2016.4.1 01:29
  • 조회수 70
  • 답변수 2
Img profile default
goback
  • 2016.4.1 01:29
  • 조회수 70
  • 답변수 2

확인 요청

첨부한 코드를 제출할 경우,
아래와 같은 에러가 발생합니다.

실행 중 오류가 발생했습니다.
Traceback:
, in
, in no_continuous
IndexError: string index out of range

result.append(s[length-1])
이 부분이 문제인 것 같은데
Index out of range가 발생할 원인을 찾지 못하겠습니다.

no_continuous.py
def no_continuous(s):
    # 함수를 완성하세요
    length = len(s)
    result = [s[i] for i in range(length-1) if s[i]!=s[i+1] ]
    result.append(s[length-1])

    return result
  • #파이썬 입문
  • #같은 숫자는 싫어

2 답변

  • Gscxhpxkg5i74t30rimh
    정두식
    • 2016.4.1 07:36

    문제가 발생하는 부분은 s[i]!=s[i+1]입니다.
    제일 마지막 글자를 확인할때 그 다음 글자와 같은지 비교하게 되서 indexError가 발생하네요. 리스트 comprehension을 이용해서 문제를 잘 풀어주셨는데요. if문에서 마지막 글자인 경우에는 비교를 안하도록 해 주셔야 합니다.

    tryhelloworld.co.kr/courses/파이썬-입문/lessons/논리연산-더-알아보기
    에서 배운 내용을 이용해서 if의 조건을 구성해 보세요.

  • Img profile default
    goback
    • 2016.4.1 14:06

    length = len(s) 로 문자열 길이를 length에 대입한 후
    result = [s[i] for i in range(length-1) if s[i]!=s[i+1] ] 에서
    range(length-1) 로 마지막 문자 길이보다 +1 하지 않도록 했습니다.

    no_continuous("123445566") 처럼
    직접 데이터를 넣어서 실행하면 에러가 발생하지 않고
    제출로 실행했을 때에만 에러가 발생하는게 이상하네요.

    심지어 result = [s[i] for i in range(length-1) if s[i]!=s[i+1] ] 에서
    if s[i]!=s[i+1] ] 를 삭제하고
    result = [s[i] for i in range(length-1) 로 제출해도
    인덱스 에러가 발생합니다만, 아직도 이해가 되지 않네요.

    • 위의 코드에서 문제가 발생하는것이 아니라 ` result.append(s[length-1])`이 부분에서 인덱스 에러가 발생하네요. length가 0인경우도 있기 때문입니다.-정두식
      2016.4.2 10:41

답변 쓰기

이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.