jungri823   4년 전

# 10809
# 97 ~ 122
word = list(map(ord, str(input())))
b = []
for i in range(97, 123):
    if i in word[0:]:
        b.append(word.index(i))
    else:
        b.append(-1)
for i in b[0:26]:
    print(b[i], end=' ')

이렇게 했을 경우 런타임 에러가 나는데 이유가 뭐죠 ??

8행의 "for i in b[0:26]"는 b에 있는 26개의 항목을 순회한다는 뜻입니다.

9행의 "b[i]"는 리스트b에서 인덱스가 i인 항목을 의미합니다.

그래서 단어가 많이 길다면 b[i]가 25를 초과하는 경우가 생기기 때문에 런타임 에러가 발생하며, 발생하지않아도 틀린 결과를 획득하게 됩니다.

이 문제를 해결하려면 9행처럼 "b[i]"를 출력하는 것이 아니라 그냥 i를 출력하면 됩니다.

그러나 9행을 변경하지 않고 8행의 "for i b[0:26]"을 for i in range(0,26)으로 변경하는 방법도 있습니다. 이렇게 하면 0번부터 25번까지를 순회하며 b의 모든 항목이 순서대로 출력됩니다.

아래에 제공된 코드를 참고하세요. 두 방법 중 하나를 선택하시면 됩니다.

(외국인이라 한국어가 다소 어색할수도 있습니다. 만약 문법이 틀렸거나 심하게 어색한부분 있으면 지적해주세요)


댓글을 작성하려면 로그인해야 합니다.