반응형

💬 TypeError: 'int' object is not subscriptable
흔하지만 당황스러운 이 에러,
대체 왜 뜨는 걸까요?

 

 

❗ 에러 메시지 예시

TypeError: 'int' object is not subscriptable

이 에러는 정수(int) 를 마치 리스트나 문자열처럼 인덱싱(슬라이싱) 하려 할 때 발생합니다.

 

 

🔍 원인: 정수는 인덱싱이 불가능한 타입

subscriptable이라는 말은 쉽게 말해 **[]로 접근이 가능한가?**를 뜻합니다.
예를 들어 리스트나 문자열은 인덱스로 접근이 가능하죠:

 

my_list = [10, 20, 30]
print(my_list[0])   # ✅ 가능

 

그런데 정수는?

 

num = 123
print(num[0])       # ❌ TypeError 발생

 

정수는 인덱싱할 수 없기 때문에 에러가 납니다.

 

 

🧪 자주 발생하는 실수

① 함수 결과를 잘못 다룰 때

def get_number():
    return 123

result = get_number()
print(result[0])   # ❌ 리스트라고 착각하고 인덱싱 → 에러 발생

 

return 값이 리스트인지, 숫자인지 확인 필요!

 

 

② 타입이 바뀐 것을 인식 못할 때

data = {'score': 100}
score = data['score']
print(score[0])    # ❌ 숫자인데 인덱싱함

 

→ score는 숫자입니다. score[0]은 불가능하죠.

 

🛠️ 해결 방법

1. 값의 타입 확인하기

print(type(score))   # <class 'int'>

 

2. 필요한 타입으로 변환하거나 인덱싱하지 않기

  • 리스트나 문자열처럼 다루고 싶다면 문자열로 변환
num = 123
num_str = str(num)
print(num_str[0])   # ✅ '1'

 

3. 함수나 변수 이름이 의도한 타입과 일치하는지 확인하기

 

✅ 마무리 정리

  • TypeError: 'int' object is not subscriptable는
    숫자를 리스트처럼 다뤄서 생기는 에러입니다.
  • []를 쓸 수 있는 자료형은 리스트, 문자열, 튜플 등이고
    int, float, bool 등은 subscriptable하지 않아요.
  • 값을 확인하고, 슬라이싱하려면 적절한 타입으로 변환하세요.

 

📘 함께 보면 좋은 글

반응형

+ Recent posts