[PY-002][입문] 숫자·문자열·불리언 구분하기 > IT 기술 공유

본문 바로가기
사이트 내 전체검색

IT 기술 공유

[PY-002][입문] 숫자·문자열·불리언 구분하기

페이지 정보

profile_image
작성자 기술팀장
댓글 0건 조회 236회 작성일 26-08-29 15:33

본문

[이번 수업]
Python의 값은 각자 자료형(type, 값의 종류)을 가집니다. 같은 20처럼 보여도 정수 20과 문자열 "20"은 할 수 있는 연산이 다릅니다. 이번에는 int·float·str·bool을 구분하고, 값을 안전하게 변환하고 출력하는 방법을 익힙니다.

[선수지식]
Python 파일을 저장하고 실행할 수 있으면 충분합니다. 변수에 값을 넣는 =와 값을 비교하는 ==가 다르다는 점을 기억하면 좋습니다.

[학습목표]
1. 네 가지 기본 자료형의 역할을 설명한다.
2. 문자열 숫자를 실제 숫자로 명시적으로 변환한다.
3. 비교 결과와 값의 참·거짓 판정을 구분한다.

[핵심개념]
int는 정수, float는 소수점이 있는 부동소수점 수입니다. +, -, *, /로 계산할 수 있으며 Python의 /는 항상 float를 돌려줍니다. //는 내림 나눗셈, %는 나머지, **는 거듭제곱 연산자입니다.

float는 많은 값을 빠르게 계산하지만 대부분의 10진 소수를 2진 분수로 정확히 저장할 수 없습니다. 그래서 0.1 + 0.1 + 0.1 == 0.3은 False가 될 수 있습니다. 측정값에는 보통 충분하지만 금액처럼 정확한 10진 계산이 필요하면 decimal 모듈을 검토하고, 근삿값 비교에는 math.isclose를 사용할 수 있습니다.

str은 글자의 순서인 문자열입니다. 작은따옴표나 큰따옴표로 만들며 숫자 모양도 따옴표 안에 있으면 문자열입니다. "20" + "1"은 숫자 덧셈이 아니라 문자열 연결이라 "201"이 됩니다. 문자열은 불변(immutable), 즉 만든 뒤 특정 위치의 글자만 직접 바꿀 수 없습니다. 다른 내용이 필요하면 replace, 슬라이싱, 연결 등을 이용해 새 문자열을 만듭니다. f"이름: {name}" 형태의 f-string은 변수 값을 읽기 쉬운 문장에 넣습니다.

bool은 True와 False 두 값을 가지며 조건 판단에 사용합니다. age >= 18 같은 비교식은 bool을 만듭니다. bool(value)은 다른 값을 참·거짓으로 해석합니다. 숫자 0, 빈 문자열 "", None은 거짓이고 0이 아닌 숫자와 비어 있지 않은 문자열은 대체로 참입니다. 특히 문자열 "False"는 글자가 들어 있으므로 True로 해석됩니다. 사용자 입력 문자열을 bool로 바로 바꾸지 말고 허용된 단어를 명시적으로 비교하세요.

형 변환은 int("20"), float("21.5"), str(20)처럼 원하는 자료형을 직접 호출합니다. 변환할 수 없는 문자열은 ValueError를 일으킵니다. type(value)는 자료형을 보여 줍니다. input으로 받은 값은 항상 str이므로 계산 전에 검증과 변환이 필요합니다.

[따라하기]
아래를 basic_types.py로 저장합니다.

age_text = "20"
age = int(age_text)
temperature = 21.5
is_student = age < 25
name = "민수"

print("text calculation:", age_text + "1")
print("number calculation:", age + 1)
print("types:", type(age).__name__, type(temperature).__name__, type(is_student).__name__)
print(f"{name}: 내년 {age + 1}세, 온도 {temperature}도")
print("empty string:", bool(""))

Windows에서는 py basic_types.py, macOS와 Linux에서는 python3 basic_types.py를 실행합니다. 예상 결과는 다음과 같습니다.

text calculation: 201
number calculation: 21
types: int float bool
민수: 내년 21세, 온도 21.5도
empty string: False

첫 줄은 문자열 연결, 둘째 줄은 정수 덧셈입니다.

[흔한 실수]
input 결과에 바로 숫자를 더하면 str과 int를 섞었다는 TypeError가 납니다. int("21.5")도 정수 모양이 아니므로 실패합니다. True와 문자열 "True"를 같은 값으로 보거나, float를 ==로 정확히 비교하는 실수도 피하세요. 변수 이름을 str, int, bool처럼 지으면 내장 변환 함수를 가리게 되므로 다른 이름을 사용합니다.

[보안 주의]
외부 문자열을 eval로 숫자나 불리언으로 바꾸지 마세요. int·float와 허용 목록 비교를 사용하고 변환 오류를 처리합니다. 매우 긴 입력은 변환 전에 길이와 허용 문자를 제한하세요. 이름 같은 개인정보는 예제처럼 가상 값으로 연습하고 로그에 비밀번호·토큰을 넣지 않습니다.

[직접 해볼 과제]
age_text를 "17"로 바꾸고 결과를 확인하세요. height_text = "172.5"를 추가해 float로 변환하고, 이름·나이·키·성인 여부를 f-string 한 줄로 출력합니다. 빈 문자열, "False", 0, 1을 bool로 바꾼 결과도 표로 기록해 예상과 비교하세요.

[확인문제]
1. "20" + "1"과 20 + 1의 결과가 다른 이유는 무엇인가요?
2. 문자열 "False"를 bool로 바꾸면 왜 True가 되나요?
3. 정확한 10진 금액 계산에 float 사용을 주의해야 하는 이유는 무엇인가요?

[다음 학습]
순환 커리큘럼의 다음 수업은 JSTS-002 ‘타입·함수·스코프·클로저’입니다. Python 트랙에서는 PY-003 ‘리스트·튜플·딕셔너리·집합’으로 이어집니다.

[공식 참고 자료]
Python Tutorial: Numbers and Text
https://docs.python.org/3/tutorial/introduction.html
Python Built-in Types
https://docs.python.org/3/library/stdtypes.html
Python Floating-Point Arithmetic
https://docs.python.org/3/tutorial/floatingpoint.html

댓글목록

등록된 댓글이 없습니다.

회원로그인

회원가입

사이트 정보

회사명 : 회사명 / 대표 : 대표자명
주소 : OO도 OO시 OO구 OO동 123-45
사업자 등록번호 : 123-45-67890
전화 : 02-123-4567 팩스 : 02-123-4568
통신판매업신고번호 : 제 OO구 - 123호
개인정보관리책임자 : 정보책임자명

접속자집계

오늘
4,778
어제
6,862
최대
16,772
전체
770,729
Copyright © 소유하신 도메인. All rights reserved.