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에 오류가 발생하면 먼저 “값 형 변환, 값 형 변환"라고 머릿속에서 반복하자.