[파이썬 100강] 02강. 자료형과 형변환 제대로 이해하기

[파이썬 100강] 02강. 자료형과 형변환 제대로 이해하기

이번엔 자료형(type)과 형변환(type conversion)을 볼 차례입니다.
처음엔 저도 문자열이랑 숫자가 비슷해 보여서 그냥 더했다가 에러를 자주 만났어요. ^^;
자료형은 한마디로 값의 성격을 구분하는 규칙이고, 형변환은 그 성격을 상황에 맞게 바꾸는 작업입니다.
말보다 예제가 빠르니 바로 가볼게요.


자료형은 파이썬이 값을 해석하는 기준입니다

파이썬에서 같은 100처럼 보이는 값도 실제 타입이 다를 수 있어요.
예를 들어 "100"은 문자열이고, 100은 정수입니다.
이 차이를 모르면 연산에서 헷갈리기 쉽습니다.

  • 왜 쓰는지: 에러를 줄이고 의도한 계산을 하기 위해
  • 언제 유용한지: 입력값 처리, 데이터 정리, 계산 로직 작성 시
  • 주의할 점: 문자열 숫자와 실제 숫자를 구분하기
>>> name = "Alice"
>>> age = 25
>>> height = 167.2
>>> is_developer = True
>>> print(type(name))
<class 'str'>
>>> print(type(age))
<class 'int'>
>>> print(type(height))
<class 'float'>
>>> print(type(is_developer))
<class 'bool'>

직접 변수 이름과 값을 바꿔서 type() 찍어보세요.
(한 번 손으로 해보면 타입 감각이 빨리 붙습니다.)


형변환 기본 사용법

이번엔 문자열 숫자를 실제 숫자로 바꿔보겠습니다.

>>> text_int = "42"
>>> text_float = "3.14"
>>> print(int(text_int) + 8)
50
>>> print(float(text_float) + 0.86)
4.0
>>> print(str(2026) + "년")
2026년

출력이 이렇게 나온 이유는요:

  • int("42")는 정수 42가 되어 산술 연산이 가능합니다.
  • str(2026)은 문자열이 되어 "년"과 자연스럽게 이어붙습니다.

여기서 “그럼 아무 문자열이나 int()로 바꿀 수 있나요?”
아니요. 숫자 형식이 아닌 문자열은 에러가 납니다.


한 단계 더: bool 변환 규칙

실무/코딩테스트에서 bool() 변환은 꽤 자주 등장합니다.
비어 있으면 False, 값이 있으면 대부분 True로 해석돼요.

>>> print(bool(0), bool(1))
False True
>>> print(bool(""), bool("hello"))
False True
>>> print(bool([]), bool([1, 2, 3]))
False True

이 부분은 실행 전에 먼저 결과를 예상해보세요.
(틀리더라도 그게 오히려 더 오래 기억됩니다 ㅎㅎ)


자주 하는 실수

실수 1) 소수 문자열을 바로 int로 변환

>>> int("3.14")
Traceback (most recent call last):
... ValueError: invalid literal for int() with base 10: '3.14'

왜 그럴까요?

  • 원인: int()는 정수 형태 문자열만 직접 처리 가능
  • 해결: float()로 먼저 바꾼 뒤 int() 적용
>>> int(float("3.14"))
3

실수 2) 타입 확인 없이 계산 시작

  • 증상: TypeError/ValueError가 중간중간 반복 발생
  • 해결: 입력 직후 type() 또는 검증 로직으로 타입 확인

오늘의 결론

오늘 한 줄 요약: 자료형을 구분하면 에러가 줄고, 형변환을 알면 데이터 처리가 쉬워진다.

그리고 이건 외워두면 이득:

  • 숫자 계산 전엔 문자열 여부부터 확인
  • bool() 규칙(비어 있으면 False)은 조건문에서 자주 쓰임

연습문제

  1. "150", "2.5"를 각각 숫자로 바꿔 더한 결과를 출력해보세요.
  2. bool(0), bool(-1), bool(" "), bool("") 결과를 예상하고 확인해보세요.
  3. 문자열 "99.9"를 최종적으로 정수 99로 바꾸는 코드를 작성해보세요.

실습 환경/재현 정보

  • 실행 환경: conda env python100 (Python 3.11.14)

이전 강의 정답 (01강 연습문제)

  1. name, age, job 변수를 만들고 자기소개 출력
>>> name = "민지"
>>> age = 29
>>> job = "개발자"
>>> print(f"안녕하세요! 저는 {name}이고, {age}살 {job}입니다.")
안녕하세요! 저는 민지고, 29살 개발자입니다.
  1. a=17, b=5 연산 결과
>>> a, b = 17, 5
>>> print(a + b, a - b, a * b, a / b, a // b, a % b)
22 12 85 3.4 3 2
  1. '2500'에 500 더하고 '원' 붙이기
>>> price = "2500"
>>> result = int(price) + 500
>>> print(str(result) + "원")
3000원