본문 바로가기
카테고리 없음

파이썬 "TypeError" 오류 해결을 위한 실전 예제

by smartmove 2025. 3. 11.

파이썬에서 'TypeError'란?

TypeError는 파이썬에서 매우 흔하게 발생하는 오류 중 하나로, 데이터 타입이 잘못된 연산이나 함수 호출에서 발생합니다. 예를 들어, 숫자와 문자열을 더하려고 시도하거나, 리스트와 숫자를 결합하려고 하면 TypeError가 발생합니다. 이 오류는 타입 불일치로 인해 발생하므로, 발생한 상황을 정확히 이해하고 수정해야 합니다. 이 글에서는 파이썬에서 TypeError가 발생하는 대표적인 예제들과 이를 해결하는 방법을 실전 예제와 함께 알아보겠습니다.

TypeError 발생 원인

TypeError는 다양한 원인으로 발생할 수 있습니다. 주로 다음과 같은 상황에서 발생합니다:

1. 숫자와 문자열의 연산

가장 흔한 실수는 숫자와 문자열을 더하거나 결합하려는 경우입니다. 파이썬은 기본적으로 숫자와 문자열을 더할 수 없으며, 이런 시도에서 TypeError가 발생합니다.

# 잘못된 코드 예시
x = 10
y = "5"
result = x + y  # TypeError 발생: 숫자와 문자열을 더할 수 없음

위 코드에서는 `x`가 숫자이고, `y`가 문자열입니다. 파이썬은 숫자와 문자열을 더할 수 없기 때문에 TypeError가 발생합니다.

2. 함수에 잘못된 인자 전달

함수에 예상하지 않은 데이터 타입의 인자를 전달하는 경우에도 TypeError가 발생할 수 있습니다. 예를 들어, 문자열을 입력받는 함수에 숫자를 전달하면 오류가 발생합니다.

def greet(name):
    return "Hello, " + name

greet(123)  # TypeError 발생: 문자열을 기대하는 함수에 숫자를 전달

위 코드에서 `greet` 함수는 문자열을 기대하고 있지만, 숫자 `123`을 전달하였기 때문에 TypeError가 발생합니다.

3. 리스트와 숫자 결합

리스트와 숫자 또는 다른 자료형을 결합하려고 할 때도 TypeError가 발생할 수 있습니다.

my_list = [1, 2, 3]
number = 4
my_list + number  # TypeError 발생: 리스트와 숫자를 더할 수 없음

리스트와 숫자를 더하려고 하면 파이썬은 이를 처리할 수 없기 때문에 TypeError가 발생합니다.

TypeError 해결 방법

TypeError를 해결하기 위한 방법은 매우 간단합니다. 이 오류는 주로 타입 불일치로 발생하므로, 타입을 일치시키는 방식으로 해결할 수 있습니다. 몇 가지 해결 방법을 알아보겠습니다.

1. 숫자와 문자열 결합 시 형 변환 사용하기

숫자와 문자열을 결합하려면 숫자를 문자열로 변환하거나, 문자열을 숫자로 변환해야 합니다. 이를 위해 `str()` 또는 `int()` 함수를 사용할 수 있습니다.

# 숫자를 문자열로 변환
x = 10
y = "5"
result = str(x) + y  # 올바른 코드, 숫자를 문자열로 변환하여 더함
print(result)  # 출력: 105

위 코드에서는 `x`를 `str()` 함수로 문자열로 변환하여, `y`와 결합할 수 있게 됩니다. 이렇게 형 변환을 통해 TypeError를 해결할 수 있습니다.

2. 함수에 올바른 인자 전달하기

함수에 전달하는 인자의 데이터 타입을 맞추어야 합니다. 예를 들어, 문자열을 기대하는 함수에는 문자열을 전달하고, 숫자를 기대하는 함수에는 숫자를 전달해야 합니다.

def greet(name):
    if not isinstance(name, str):  # 입력값이 문자열이 아니면 오류 메시지 출력
        return "Error: 이름은 문자열이어야 합니다."
    return "Hello, " + name

print(greet("Alice"))  # 출력: Hello, Alice
print(greet(123))  # 출력: Error: 이름은 문자열이어야 합니다.

위 코드에서는 `isinstance()` 함수를 사용하여 입력값이 문자열인지 확인한 후, 올바른 타입이 아닐 경우 오류 메시지를 반환하도록 처리했습니다. 이렇게 함수에서 타입 검사를 추가하면 TypeError를 예방할 수 있습니다.

3. 리스트와 숫자 결합 시 숫자 변환하기

리스트와 숫자를 결합하려면, 숫자를 리스트로 변환하거나, 두 개의 리스트를 결합해야 합니다.

my_list = [1, 2, 3]
number = 4

# 숫자를 리스트로 변환하여 결합
my_list + [number]  # 올바른 코드, 숫자를 리스트로 변환하여 결합
print(my_list + [number])  # 출력: [1, 2, 3, 4]

위 코드에서는 `number`를 리스트로 감싸서 `my_list`와 결합할 수 있습니다. 리스트와 숫자를 결합하려면 반드시 숫자를 리스트로 변환해야 합니다.

4. 숫자와 문자열 결합 시 형 변환 방법 (반대로 문자열을 숫자로 변환)

반대로 문자열을 숫자로 변환하여 계산을 하려면 `int()` 또는 `float()` 함수를 사용할 수 있습니다. 이를 통해 문자열을 숫자로 변환하여 연산을 수행할 수 있습니다.

# 문자열을 숫자로 변환하여 연산
x = "10"
y = 5
result = int(x) + y  # 문자열 '10'을 숫자 10으로 변환하여 더함
print(result)  # 출력: 15

위 코드에서는 문자열 `'10'`을 `int()` 함수로 숫자 10으로 변환하여 `y`와 더할 수 있습니다. 이렇게 형 변환을 통해 TypeError를 해결할 수 있습니다.

5. 리스트에 여러 데이터 타입 결합하기

리스트에 다양한 데이터 타입을 결합할 때는, 각 데이터를 적절히 형 변환하여 결합하는 것이 중요합니다.

my_list = [1, 2, 3]
my_string = "Hello"

# 리스트에 문자열을 추가할 때
my_list.append(my_string)  # 올바른 방법, append()를 사용하여 문자열 추가
print(my_list)  # 출력: [1, 2, 3, 'Hello']

위 코드에서는 `append()` 메서드를 사용하여 문자열을 리스트에 추가합니다. 데이터를 결합할 때는 적절한 메서드를 사용하여 타입을 맞춰줘야 합니다.

결론

TypeError는 파이썬에서 자주 발생하는 오류로, 타입 불일치로 인해 발생합니다. 숫자와 문자열을 결합하려 하거나, 함수에 잘못된 인자를 전달하는 경우가 대표적인 원인입니다. 이 오류를 해결하려면, 타입을 맞추기 위한 형 변환을 적절히 사용해야 합니다. 형 변환 함수인 `str()`, `int()`, `float()` 등을 사용하여 타입을 맞추고, 함수에서 인자 타입을 확인하는 방법을 활용하면 TypeError를 예방할 수 있습니다. 이를 통해 파이썬 코드를 더 안정적으로 작성할 수 있습니다.