프로그래밍에서는 다양한 종류의 데이터를 사용할 수 있고, 이 데이터의 종류들을 자료형(Datatype)이라고 함
자료형의 종류로는 숫자형(int/float), 문자열, 불린형(boolean), None, 컨테이너(리스트, 튜플, 집합, 딕셔너리) 등이 있다.
파이썬에서는 변수를 선언할 때 자동적으로 데이터 타입이 구분된다.
1. 숫자형 (Numeric Type)
정수 자료형(int), 실수 자료형(float), 복소수 자료형(complex)으로 나누어진다.
자료형 | 설명 | 예시 |
정수자료형 (int) | 양의정수/음의정수/0과 같은 정수, 사칙연산, 진수표현가능 | 10, -200, 0, 0o65(8진수), 0x1FF(16진수) |
실수자료형 (float) | 유리수와 무리수를 포함하는 실수 (소수점 포함된 숫자) | 0.1, 100.0, -0.001, 0.012e-1, 1.53E+4 |
복소수 (complex) | 실수와 허수부의 합의 꼴로 나타나는 수 | 3 + 4j, 2 - 1J 등 |
정수자료형 (int)
- 진수표현 시 2진수 : 0b / 8진수 : 0o / 16진수 : 0x 로 시작한다.
실수자료형 (float)
- 다른 프로그래밍 언어에는 float와 double 타입이 따로 존재하지만 파이썬에서는 float 타입만 사용한다.
- float 타입은 e / E를 사용해 지수표기법으로도 나타낼 수 있다.
- 부동소수점
- 컴퓨터가 2진수를 사용하기 때문에 발생하는 문제
- 10진수 0.1은 2진수로 표현하면 0.0001100110011001100110.... 무한반복
- 때문에 10진법의 근사값만 표시하게 되고, 0.1에 가깝지만 정확히 동일한 값은 아님
- 연산 시 예상치 못한 결과가 나올 수 있음
# 계산결과가 둘다 0.1이 아님
a = 3.2 - 3.1 # 0.10000000000000009
b = 1.2 - 1.1 # 0.09999999999999987
복소수 (complex)
- 복소수는 complex 메소드를 통해서도 선언할 수 있다. ex) a = complex(2, 3) → 2 + 3j
2. 문자열 (String Type)
자료형 | 설명 | 예시 |
문자열 (str) | 모든 문자, 작은따옴표(')나 큰따옴표(")를 활용해 표기함 | 'hello world', "사과", '#@)_ie", '2022' 등 |
문자열을 묶을 때는 앞뒤에 동일한 문장부호를 사용해야한다.
중첩따옴표
문자열 안에서 따옴표를 사용하고 싶을 때 사용
- 작은 따옴표가 들어있는 경우 큰따옴표로 문자열 생성
- 큰따옴표가 들어있는 경우 작은따옴표로 문자열 생성
print("문자열 안에 '작은 따옴표'를 사용하려면 큰따옴표로 묶는다.")
# 문자열 안에 '작은 따옴표'를 사용하려면 큰따옴표로 묶는다.
print('문자열 안에 "큰따옴표"를 사용하려면 작은 따옴표로 묶는다.')
# 문자열 안에 "큰따옴표"를 사용하려면 작은 따옴표로 묶는다.
삼중따옴표
따옴표 안에 따욤표를 넣거나, 여러줄을 나눠 입력할 때 작은따옴표나 큰따옴표를 삼중으로 사용한다.
print('''문자열 안에 '작은따옴표'와
"큰따옴표를 동시에 사용할 수 있고
여러 줄을 입력할 때도 편리하다.''')
# 문자열 안에 '작은따옴표'와
# "큰따옴표를 동시에 사용할 수 있고
# 여러 줄을 입력할 때도 편리하다.
이스케이프 시퀀스 (Escape sequence)
역슬래시(\) 뒤에 특정문자를 더해 특수한 기능을 하는 문자 조합
이스케이프 시퀀스 | 설명 |
\\ | 역슬래시(\) |
\' | 작은따옴표 |
\" | 큰따옴표 |
\n | 줄바꿈 |
\r | 캐리지리턴 (현재 활성 위치를 현재 라인의 시작 위치로 옮김 |
\t | 탭 (현재 활성 위치를 수평 탭의 다음 위치로 옮김) |
\o | 널(Null) |
\f | 폼피드 (현재 활성 위치를 다음 페이지의 시작 위치로 옮김) |
\v | 수직탭 (현재 활성 위치를 수직 탭의 다음 위치로 옮김) |
\ooo | 8진수 숫자를 사용해 ASCII코드의 문자 표현 ex) '\141' → 'a' |
\xhh | 16진수 숫자를 사용해 ASCII코드의 문자 표현 ex) '\x61' → 'a' |
\N{name} | { } 안에 문자 이름을 사용해 유니코드의 문자 표현(파이썬 3.3이상) ex) 'N{LINE FEED}' → '\n' |
\uxxxx | 16비트 16진수 숫자를 사용해 유니코드의 문자 표현 ex) 'u0061' → 'a' |
\Uxxxxxxxx | 32비트 16진수 숫자를 사용해 유니코드의 문자 표현 ex) 'u00000061' → 'a' |
문자열 연산
# 덧셈
print("Hello" + "World") # HelloWorld
# 곱셈
print("Python" * 3) # PythonPythonPython
문자열 formatting
name = 'Kim'
score = 4.5
# %-formatting
print('Hello, %s' % name) # Hello, Kim
print('내 성적은 %d' % score) # 내 성적은 4
print('내 성적은 %f' % score) # 내 성적은 4.500000
# str.format()
print('Hello, {}! 성적은 {}'.format(name, score)) # Hello, Kim! 성적은 4.5
# f-strings (python 3.6 이상)
print(f'Hello, {name}! 성적은 {score}') # Hello, Kim! 성적은 4.5
import datetime
today = datetime.datetime.now()
print(today) # 2022-07-08 16:04:15.200411
print(f'오늘은 {today:%y}년 {today:%m}월 {today:%d}일') # 오늘은 22년 07월 08일
pi = 3.141592
print(f'원주율은 {pi:.3}. 반지름이 2일 때 원의 넓이는 {pi*2*2}')
# 원주율은 3.14. 반지름이 2일 때 원의 넓이는 12.566368
- %d (정수형), %f (실수형), %s (문자열)
3. 불린형 (Boolean)
논리 자료형으로 참과 거짓을 표현하는 자료형. True/False의 값만 가질 수 있음
비교/논리 연산자의 결과값으로 Bool타입의 값을 반환함
연산자가 무엇인지 모른다면 아래 글 참고!
4. None
값이 없음을 표현하기 위한 타입. 반환 값이 없는 함수에서 사용하기도 함
댓글