강의로 돌아가기
kuka84

또 막히네요.. 도움이 필요합니다..

def solution(L, x):             
    answer = []
    for i in L:
        if L[i] < x:
            i = i+1
            L.insert(i,x)
            answer = L            
        break    
    return answer

일단 답변 글 고맙습니다.. 인서트 메서드를 수정하고 break 문을 써서 위와같이 만들었는데 아래와 같은 에러 메세지가 뜨네요..

왜그런지 한참 찾아보다가 해결이 안되어 올립니다.. 답변 꼭좀 부탁드립니다. 감사합니다.

테스트 실행 중 오류가 발생하였습니다.
Traceback (most recent call last):
File /solution_test.py, line 14, in test
self.assertEqual(expected0, solution(p00,p01))
File /solution.py, line 6, in solution
if L[i] < x:
IndexError: list index out of range

1 개의 답변
이시윤

for i in L:

이라고 하면, 변수 i 는 리스트 L 의 원소 하나하나를 값으로 가지면서 순회합니다. 따라서, 예를 들어 L = [20, 37, 58, 72, 91] 이라면 위 for 순환문이 반복하면서 변수 i 의 값은 차례로 20, 37, 58, 72, 91 이 됩니다. 이 때, 처음 반복에서 i == 20 인데 if L[i] < x 를 실행하려 했으므로 리스트 L 의 21 번째 (인덱스는 0 부터 시작하므로) 원소를 참조하려 하여 IndexError: list index out of range 가 발생합니다. 리스트의 원소는 다섯 개뿐인데 21 번째 원소의 값을 읽으려 했기 때문입니다.

  • kuka84
    덕분에 해결했습니다. 감사합니다 ^^ kuka84 2018.07.18 14:45
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.