본문 바로가기

Trial & Error

파이썬 입문 시에 많이 보는 에러(5) - TypeError

이번 글에서는 파이썬을 배우면서 초보자들이 자주 만나는 오류 중 하나인 TypeError에 대해 다뤄보려고 합니다. 이 오류는 “자료형이 맞지 않는다”는 뜻인데요, 한마디로 Python이 "이건 이런 자료형에서 못 써요!"라고 말하는 상황입니다. 자료형(Type)을 정확히 이해하고 사용하는 것이 중요하겠죠? 😊

 

1. 왜 이런 오류가 발생할까?

파이썬은 자료형에 따라 수행할 수 있는 연산이나 함수가 제한됩니다. 서로 맞지 않는 자료형을 잘못 조합하거나, 적절하지 않은 방식으로 사용하면 TypeError가 발생합니다. 대표적인 상황을 살펴볼까요?

문자열과 숫자를 더하려고 할 때:

print("나이는 " + 25 + "살입니다.")

 

여기서 + 연산은 문자열과 문자열을 연결할 수 있지만, 문자열과 숫자를 직접 더하려고 하면 오류가 납니다.

 

len(42)

 

len() 함수는 문자열, 리스트 등 길이를 알 수 있는 객체에서만 동작합니다. 숫자 타입은 길이라는 개념이 없기 때문에 TypeError를 발생시킵니다.

 


2. 발생 예시

(1) TypeError: can only concatenate str (not "int") to str

name = "Alice"
age = 25
print("이름은 " + name + "이고 나이는 " + age + "살입니다.")

 

여기서는 age가 숫자(int) 자료형이기 때문에 문자열과 바로 더할 수 없습니다.

 

(2) TypeError: object of type 'int' has no len()

number = 100
print(len(number))

 

여기서 len() 함수는 숫자(int)에 대해 적용할 수 없습니다.

 


3. 해결 방법

(1) 자료형 변환 활용하기

자료형이 맞지 않는 경우, 적절히 변환하면 문제를 해결할 수 있습니다. 위 예시를 수정해볼까요?

name = "Alice"
age = 25
print("이름은 " + name + "이고 나이는 " + str(age) + "살입니다.")

 

숫자(int)를 문자열(str)로 변환하면 + 연산이 잘 동작합니다.

(2) 자료형 확인하기

코드 작성 중 어떤 자료형을 다루고 있는지 확실하지 않다면 type() 함수를 활용해 확인해보세요.

 

number = 42
print(type(number))  # <class 'int'>

 

(3) 함수 사용법 이해하기

사용하려는 함수가 어떤 자료형에 적용되는지 공식 문서를 참고하거나, 함수의 사용 예제를 확인하는 것도 중요합니다.
예를 들어, len() 함수는 문자열, 리스트, 튜플 등에서만 사용할 수 있습니다.

 


결론

TypeError는 주로 자료형의 불일치에서 발생하는 오류로, 초보자가 자료형의 개념을 익히는 데 큰 도움이 되는 오류입니다. 프로그램 작성 전에 자료형을 확인하고, 변환하는 습관을 들이면 이런 오류를 쉽게 예방할 수 있습니다.

다음 글에서는 또 다른 자주 발생하는 오류를 다루면서, 더욱 안정적이고 깔끔한 파이썬 코드를 작성하는 방법을 공유하겠습니다.