Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python IndexError:튜플 인덱스가 범위를 벗어났습니다.

목록과 마찬가지로 Python 튜플은 인덱싱됩니다. 즉, 튜플의 각 값에는 해당 값에 액세스하는 데 사용할 수 있는 숫자가 있습니다. 존재하지 않는 튜플의 항목에 액세스하려고 하면 Python은 "튜플 인덱스가 범위를 벗어남"이라는 오류를 반환합니다.

이 가이드에서는 이 일반적인 Python 오류가 의미하는 것과 발생하는 이유를 설명합니다. 이 문제가 있는 예제 시나리오를 통해 문제를 해결하는 방법을 알아낼 수 있습니다.

문제 분석:IndexError:튜플 인덱스가 범위를 벗어났습니다.

튜플은 0부터 인덱싱됩니다. 튜플의 모든 후속 값에는 마지막 값보다 하나 큰 숫자가 할당됩니다. 튜플을 살펴보십시오.

birds = ("Robin", "Collared Dove", "Great Tit", "Goldfinch", "Chaffinch")

이 튜플에는 5개의 값이 있습니다. 각 값에는 고유한 색인 번호가 있습니다.

로빈 깃든 비둘기 멋진 가슴 금새치 채핀치
1 2 3 4

튜플의 "Robin" 값에 액세스하려면 다음 코드를 사용합니다.

print(birds[0])

코드는 다음을 반환합니다:Robin. 인덱스 위치 1에 있는 값에 액세스하여 콘솔에 인쇄합니다. 목록에 있는 모든 값으로 이 작업을 수행할 수 있습니다.

튜플 외부에 있는 항목에 액세스하려고 하면 오류가 발생합니다.

참가자의 81%는 부트캠프에 참석한 후 기술 직업 전망에 대해 더 자신감을 느꼈다고 말했습니다. 지금 부트캠프에 참여하십시오.

부트캠프 졸업생은 부트캠프 시작부터 첫 직장을 찾는 데까지 6개월도 채 걸리지 않았습니다.

예시 시나리오

튜플의 마지막 세 값을 출력하는 프로그램을 작성해 봅시다. 우리 튜플에는 영국 도시 목록이 포함되어 있습니다. 튜플을 선언하는 것으로 시작하겠습니다.

cities = ("Edinburgh", "London", "Southend", "Bristol", "Cambridge")

다음으로 마지막 세 값을 인쇄합니다. for 루프와 range()를 사용하여 이 작업을 수행합니다. 성명. range() 문은 인덱스 번호가 해당 범위에 있는 목록의 항목을 반복할 수 있도록 특정 범위 사이에 숫자 목록을 만듭니다.

다음은 for 루프의 코드입니다.

for i in range(3, 6):
	print(birds[i])

코드를 실행해 보겠습니다.

Goldfinch
Chaffinch
Traceback (most recent call last):
  File "main.py", line 4, in <module>
	print(birds[i])
IndexError: tuple index out of range

우리 코드는 Goldfinch와 Chafinch 값을 출력합니다. 이것들은 우리 목록의 마지막 두 값입니다. 세 번째 값은 출력하지 않습니다.

해결책

range() 문은 3과 6 사이의 숫자 목록을 생성합니다. 이 목록은 3을 포함하고 6을 제외합니다. 목록은 4까지만 색인화됩니다. 즉, 루프는 색인 위치 5에 있는 새에 액세스하려고 시도합니다. 5가 우리 범위에 있기 때문에 우리 튜플에 있습니다.

새[5]를 개별적으로 인쇄하려고 하면 어떻게 되는지 봅시다.

print(birds[5])

코드는 다음을 반환합니다.

Traceback (most recent call last):
  File "main.py", line 3, in <module>
	print(birds[5])
IndexError: tuple index out of range

동일한 오류가 있습니다. 이는 목록의 항목이 1부터 인덱싱되는 것처럼 액세스하려고 하기 때문입니다. 튜플은 0부터 인덱싱됩니다.

이 오류를 해결하려면 range()를 수정해야 합니다. 문을 사용하여 튜플의 마지막 세 항목만 인쇄합니다. 범위는 2에서 5로 이동해야 합니다.

for i in range(2, 5):
	print(birds[i])

수정된 코드를 실행하고 어떤 일이 일어나는지 살펴보겠습니다.

Great Tit
Goldfinch
Chaffinch

코드는 목록의 마지막 세 항목을 성공적으로 인쇄합니다. 이제 인덱스 위치 2, 3, 4에 있는 항목에 액세스하고 있습니다. 이 모든 위치가 유효하므로 이제 코드가 작동합니다.

결론

IndexError:존재하지 않는 튜플의 항목에 액세스하려고 할 때 범위를 벗어난 튜플 인덱스 오류가 발생합니다. 이 문제를 해결하려면 튜플에서 항목에 액세스할 때마다 찾고 있는 항목이 있는지 확인하십시오.

이 오류의 가장 일반적인 원인은 튜플이 0부터 인덱싱된다는 사실을 잊어버린 것입니다. 튜플에서 값에 액세스하려고 할 때 0부터 계산을 시작합니다. 초보자에게는 이것이 이상하게 느껴질 수 있습니다. 파이썬에서 코딩하는 데 더 많은 시간을 할애할수록 0부터 세는 것은 제2의 천성이 될 것입니다.

이제 전문가처럼 이 Python 오류를 해결할 준비가 되었습니다!