Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 'int'와 'str' 객체를 연결할 수 없습니다 오류의 원인과 해결 방법

오류가 발생하는 이유

Python에서 'int' 및 'str' 객체를 연결할 수 없습니다(cannot concatenate 'int' and 'str' objects)라는 오류는 문자열(str)과 정수(int)를 + 연산자로 직접 연결하려고 할 때 발생합니다. Python은 서로 다른 자료형끼리의 암시적 형 변환을 허용하지 않기 때문에, 이러한 연결 시도는 곧바로 TypeError로 이어집니다.

특히 %d 같은 포맷 지정자를 사용할 때 이 문제가 자주 나타납니다. 인터프리터는 %d 자리에 변수 값을 대입한 뒤, 그 결과가 문자열인 상태에서 여기에 정수 1을 더하려고 시도하기 때문입니다. 즉, 문자열과 정수를 더하는 셈이 되어 오류가 발생하는 것입니다.

해결 방법

가장 간단한 해결책은 산술 연산식인 i+1을 괄호로 감싸는 것입니다. 괄호로 묶으면 덧셈이 먼저 계산된 후 그 결과가 %d에 대입되므로 오류가 사라집니다.

print("\nNum %d" % (i+1))

괄호 없이 % (i+1)처럼 작성하면 연산 순서가 어긋나 의도하지 않은 결과나 오류가 생길 수 있으므로 주의해야 합니다.

다른 대안들

포맷팅 외에도 다음과 같은 방법으로 같은 문제를 해결할 수 있습니다.

  • str() 함수 사용: 정수를 명시적으로 문자열로 변환한 뒤 연결합니다.
    print("\nNum " + str(i+1))
  • f-string 사용 (Python 3.6 이상): 가독성이 좋아 가장 널리 권장되는 방식입니다.
    print(f"\nNum {i+1}")

정리하면, 이 오류는 자료형 불일치에서 비롯된 것이므로 포맷 지정자를 올바르게 사용하거나, str()로 형 변환을 하거나, f-string을 활용하면 손쉽게 해결할 수 있습니다.