[파이썬 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)은 조건문에서 자주 쓰임
연습문제
"150","2.5"를 각각 숫자로 바꿔 더한 결과를 출력해보세요.bool(0),bool(-1),bool(" "),bool("")결과를 예상하고 확인해보세요.- 문자열
"99.9"를 최종적으로 정수99로 바꾸는 코드를 작성해보세요.
실습 환경/재현 정보
- 실행 환경:
condaenvpython100(Python 3.11.14)
이전 강의 정답 (01강 연습문제)
name,age,job변수를 만들고 자기소개 출력
>>> name = "민지"
>>> age = 29
>>> job = "개발자"
>>> print(f"안녕하세요! 저는 {name}이고, {age}살 {job}입니다.")
안녕하세요! 저는 민지고, 29살 개발자입니다.
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
'2500'에 500 더하고'원'붙이기
>>> price = "2500"
>>> result = int(price) + 500
>>> print(str(result) + "원")
3000원