코딩 / / 2023. 3. 21.

TypeError: 'int' object is not subscriptable 오류, 이렇게 하면 된다.

반응형

TypeError 오류, 대체왜 뜰까?

파이썬에서 연산이나 함수가 부적절한 형식의 객체에 적용될 때 오류가 발생합니다. 이 문제는 해당 작업이나 메서드를 지원하지 않는 개체에 대해 작업을 수행하거나 메서드를 호출하려고 할 때 또는 한 유형의 개체를 다른 유형인 것처럼 사용하려고 할 때 발생할 수 있습니다.

예를 들어, 두 개의 숫자를 더하는 함수가 있다고 하고, 이 함수를 두 정수 값으로 호출하면 예상대로 작동합니다.

 

그러나, 만약 문자열과 정수로 함수를 부른다면, 다음과 같이 오류가 뜹니다.

이 경우 문자열과 정수를 함께 추가하려고 하는데, 이는 허용되지 않습니다. Python은 문제를 설명하는 메시지를 제기합니다. "TypeError: can only concatenate str (not "int") to str"

한 유형의 개체를 다른 유형의 개체인 것처럼 사용하려고 하면 의 다른 예가 발생할 수 있습니다.

TypeError: 'int' object is not subscriptable 오류

대괄호를 사용하여 정수의 요소에 액세스 하려고 하면 "TypeError: 'int' object cannot subscribe" 오류 메시지가 발생합니다. 이는 정수가 주목할 만하고 개별 요소에 이러한 방식으로 액세스 할 수 있는 내부 구조를 가지고 있지 않기 때문에 허용되지 않습니다.

다음은 "TypeError: 'int' 개체를 구독할 수 없음" 오류를 생성하는 예입니다

 

쉽게 말해서 42인 정수를 my_num에 저장하였지만, 정수형이 아닌, 문자열이나 리스트를 읽어오려 했기 때문에 생기는 문제입니다.

 

이 코드에서, 우리는 그 값으로 정수 변수를 만들고, 그런 다음 대괄호와 색인을 사용하여 이 정수의 첫 번째 자리에 액세스하려고 합니다. 그러나 정수가 인덱싱을 지원하지 않기 때문에 "TypeError: 'int' object cannot subscribe" 오류가 발생합니다

정수를 제대로 사용하려면 정수 값 자체에 대해 직접 계산 또는 비교를 수행해야 합니다.

 

이 코드에서, 우리는 그 값으로 정수 변수를 만들었습니다. 그런 다음 연산자를 사용하여 0과 비교합니다. 이것은 정수에 대한 유효한 작업입니다. 왜냐하면 my _number = 42 > 0 처럼 개별 요소에 액세스 하려는 것이 아니라 정수 값 자체에 대한 비교를 수행하고 있기 때문입니다.

위 코드를 실행한다면  print("This number is positive.") 라는 결과가 나오겠죠.

요약

"TypeError: 'int' object cannot subscribe" 오류는 대괄호를 사용하여 정수의 요소에 액세스 하려고 할 때 발생합니다. 정수를 올바르게 사용하려면 대괄호를 사용하지 않고 정수 값 자체에 대해 직접 계산 또는 비교를 수행한다면 정상적으로 실행 될 겁니다.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유