Python 입문 | 값과 계산의 기본 | 데이터 형변환

데이터 형변환과 텍스트

값에는 유형이 있다. 다른 유형의 값끼리는 계산할 수 없다. 그렇게 되면, 예를 들어 “텍스트와 숫자를 사용하여 계산한다"라고 하는 것은 불가능하다는 걸 의미한다.

그러나, 물론 그런 일은 없다. 제대로 된 방법으로 Python에는 값을 다른 유형으로 변환하는 기능이 포함되어 있다. 우선 다음의 것만 제대로 배워보도록 하자.

  • int(값) - ()의 값을 정수로 변환한다.
  • float(값) - ()의 값을 실수로 변환한다.
  • str(값) - ()의 값을 텍스트로 변환한다.
  • bool(값) - ()의 값을 부울 값으로 변환한다.

이 처럼 어떤 유형의 값을 다른 유형으로 변환하는 것을 “형 변환"이라고 하고, 영어로는 “캐스팅(casting)“이라고 한다.

그럼, 아래 형 변환하는 간단한 예제들을 보도록 하겠다. 아래와 같은 방법로 텍스트와 정수를 변환하여 사용하면 될 것이다.

텍스트에 값 정리

값의 형 변환은 계산할 값의 유형을 맞추는 경우에도 사용하지만, print에 값을 출력할 때도 자주 사용한다. print는 어떤 값도 출력할 수 있지만, 텍스트와 다른 유형의 값을 연결하려는 순간 오류가 발생한다.

a = 123
b = 456
c = a + b
print(c)

Output:

579

아래 예제는 매우 간단한 샘플이다. 그런데 이것을 처리하려는 순간 에러가 발생한다.

a = 123
b = 456
c = a + b
print('answer : ' + c)

Output:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str

그런데, 왜 에러가 발생하는가? print()에 넣은 'answer :' + c가 원인이다. 텍스트와 숫자를 연결하려고 했기 때문에 “변수 c는 텍스트 아니다"라고 에러가 발생하는 것이다. “텍스트를 + 기호"로 연결하기 위해서는 연결 값이 텍스트가 아니면 안된다.

a = 123
b = 456
c = a + b
print('answer : ' + str(c))

Output:

answer : 579

이제 에러없이 동작하는 걸 확인할 수 있다. print()를 보면 'answer : '+ str(c)와 같이 되어 있다. 변수 c를 str로 텍스트로 변환한 것으로 정상적으로 동작하게 되는 것이다.

이와 같이 텍스트와 값을 연결하려다가 오류가 발생하는 것은 초보자가 자주 하는 실수이다. print에서 오류가 발생하면 먼저 형 변환이 필요한지 확인하자.