스택큐힙리스트

코드의 13번째 줄에 인덱스 오류가 있습니다. 리스트 인덱스가 범위를 벗어났습니다 [닫힘] 본문

카테고리 없음

코드의 13번째 줄에 인덱스 오류가 있습니다. 리스트 인덱스가 범위를 벗어났습니다 [닫힘]

스택큐힙리스트 2024. 1. 16. 23:29
반응형

나는 파이썬 초보자로, ABC 퀴즈에 관한 YouTube 튜토리얼에 대한 코드를 작성하려고 하지만 실행하면 오류가 나타납니다.


line 13, in <module>
Question(question_prompts[1], a),
IndexError: list index out of range

다음은 코드입니다:


question_prompts = [
세바스티안 베텔은 몇 번의 F1 월드 드라이버 챔피언십을 차지했나요?\n(a). 결코 없음\n(b). 2번\n(c). 5번\n(d). 4번,
마이클 슈마허가 마지막으로 F1 WDC를 차지한 시기는 언제였나요?\n(a). 2004년\n(b). 2011년\n(c). 2006년\n(d). 2005년,
가장 많은 서킷에서 F1 그랑프리를 개최한 트랙은 어디인가요?\n(a). 몬자\n(b). 실버스톤\n(c). 모나코\n(d). 스파,
오스트레일리아가 시즌 개막전이 되기 전에 이 시즌의 개막 그랑프리는 어떤 것이었나요?\n(a.)바레인\n(b). 중국\n(c). 아부다비\n(d). 스페인,
지금까지 5번의 WDC를 차지한 유일한 드라이버는 누구인가요?\n(a). 루이스 해밀턴\n(b). 알랭 프로스트\n(c). 후안 매누엘 팡지오\n(d). 아이언 세나
]
questions = [
Question(question_prompts[0], d),
Question(question_prompts[1], a),
Question(question_prompts[2], a),
Question(question_prompts[3], a),
Question(question_prompts[4], c),
]
def run_test(questions):
score = 0
for question in questions:
answer = input(question_prompts)
if answer == question.answer:
score += 1
print(Hey you got + str(score) + / + str(len(questions)) + Correct)

답변 1

가정하에, question_prompts를 5개 요소로 구성된 리스트로 원하신다면, 각 줄 끝에 콤마가 필요합니다. 아래와 같이 입력하세요:


question_prompts = [
세바스찬 베텔은 몇 번의 F1 월드 드라이버 챔피언십을 차지했나요?\n(a). 결코 차지하지 않음\n(b). 2회\n(c). 5회\n(d). 4회,
마이클 슈마허가 마지막으로 F1 월드 드라이버 챔피언십을 차지한 해는 언제인가요?\n(a). 2004년\n(b). 2011년\n(c). 2006년\n(d). 2005년,
어떤 서킷에서 가장 많은 횟수로 F1 그랑프리가 개최되었나요?\n(a). 몬자\n(b). 실버스톤\n(c). 모나코\n(d). 스파,
호주가 시즌 오프너가 되기 전, 시즌 첫 그랑프리는 어떤 레이스였나요?\n(a.) 바레인\n(b). 중국\n(c). 아부다비\n(d). 스페인,
지금까지 단 한 명만 5번의 월드 드라이버 챔피언십을 차지한 드라이버는 누구인가요?\n(a). 루이스 해밀턴\n(b). 알랭 프로스트\n(c). 후안 매누엘 팡지오\n(d). 아이르턴 세나,
]

파이썬은 문자열 리터럴의 암묵적 연결이 가능하므로: ab == ab입니다.

이 암시적 연결 덕분에 현재 가지고 있는 것은 다음과 같이 하나의 요소로 이루어진 목록입니다:


question_prompts = [
세바스찬 베틀이 몇 번의 F1 월드 드라이버 챔피언십을 따냈습니까?\n(a). 없음\n(b). 2회\n(c). 5회\n(d). 4회\n마이클 슈마허가 마지막으로 F1 WDC를 딴 해당 년도는 언제입니까?\n(a). 2004년\n(b). 2011년\n(c). 2006년\n(d). 2005년\n가장 많은 트랙에서 F1 그랑프리를 개최한 장소는 어디인가요?\n(a). 몬차\n(b). 실버스톤\n(c). 모나코\n(d). 스파\n호주가 시즌 오프너가 되기 전까지의 시즌 최초 그랑프리는 무엇입니까?\n(a.) 바레인\n(b). 중국\n(c). 아부다비\n(d). 스페인\n현재까지 5번의 WDC를 보유한 유일한 드라이버는 누구입니까?\n(a). 루이스 해밀턴\n(b). 알랭 프로스트\n(c). 후안 마누엘 팡지오\n(d). 아이르턴 세나
]

당연히 의도한 바가 아니에요 :)

답변 2

제목: 인덱스 에러 라인 13 - 코드의 list index가 범위를 벗어남 [해결방법 포함]
서문:
프로그래밍을 배우는 사람들에게는 자주 마주하는 문제이기도 한 '인덱스 에러'에 대해 알아보도록 하겠습니다. 특히, 코드의 13번째 줄에서 발생한 인덱스 에러에 대해 자세히 알아보고 해결 방법도 제시하겠습니다. 이를 통해 인덱스 에러가 발생했을 때의 대처 방법을 학습할 수 있을 것입니다.
본문:
인덱스 에러는 프로그래밍에서 자주 마주하는 오류로, 주로 리스트와 같은 데이터 구조에서 발생합니다. '리스트 인덱스가 범위를 벗어났다'는 오류 메시지가 표시되면, 해당 리스트에 접근하려는 인덱스가 유효하지 않거나 리스트의 길이를 초과한 상황임을 의미합니다.
인덱스 에러 문제를 해결하기 위해 첫 번째로 확인해야 할 사항은 코드의 13번째 줄에서 사용하는 리스트와 해당 리스트의 길이입니다. 리스트의 인덱스는 0부터 시작하므로, 13번째 줄의 인덱스가 리스트의 범위를 벗어났는지 검사해야 합니다.
인덱스가 범위를 벗어난 경우 주로 두 가지 이유가 있습니다. 첫째로, 13번째 줄에서 사용하는 리스트의 길이를 잘못 계산한 경우입니다. 리스트의 전체 길이를 확인하고, 사용하려는 인덱스가 유효한 범위에 속하는지 다시 한 번 검토해야 합니다. 두 번째로, 13번째 줄에서 사용하는 인덱스 자체가 잘못된 경우입니다. 인덱스는 항상 0부터 시작하기 때문에, 해당 인덱스가 리스트의 길이보다 크거나 같다면 범위를 벗어났다고 판단할 수 있습니다.
인덱스 에러를 방지하기 위해 코드를 고치는 방법에는 몇 가지가 있습니다. 첫째로, 13번째 줄에서 사용하는 리스트의 범위를 벗어나지 않도록 리스트의 길이를 정확히 계산해야 합니다. 리스트의 길이는 내장 함수인 len()을 사용하면 쉽게 구할 수 있습니다. 둘째로, 인덱스 값을 확인해야 합니다. 만약 13번째 줄에서 사용하는 인덱스가 범위를 벗어났다면, 다른 유효한 인덱스로 교체하여 해결할 수 있습니다.
결론:
인덱스 에러는 프로그래밍에서 흔히 발생할 수 있는 문제 중 하나입니다. 코드의 13번째 줄에서 발생한 인덱스 에러를 해결하기 위해서는 리스트의 길이와 인덱스 값을 다시 확인해야 합니다. 유효한 리스트의 인덱스를 사용하고 있으며, 이에 따라 코드를 수정하면 해당 인덱스 에러를 해결할 수 있을 것입니다. 인덱스 에러를 미리 예방하고 적절한 대처 방법을 숙지함으로써, 효율적인 프로그래밍을 할 수 있도록 노력해야 합니다.

반응형
Comments