Python 자료형
파이썬 사용
용어
리터럴
변하지 않는 데이터 자체의 표현
- 정수형 데이터
- 문자열 데이터
- 부동소숫점 데이터
표현식
값을 의미하는 표현, 값을 반환하는 표현
- 변수
- 수식 등..
구문
값의 의미를 가지고 있지 않고 목정을 수행하는 코드
for char in '안녕하세요':
print(char)
변수
객체(object)는 데이터의 형태를 결정해주는 타입. 객체의 타입을 바꿀 수 없음.
- 자주 사용하는 객체는 메모리에 고정되어있음. (예: 1~100)
>>> a = 1
>>> b = 1
>>> id(a) //고유의 주소를 출력하는 내장함수
4369052960 //같은 위치에 있음
>>> id(b)
4369052960 //같은 위치에 있음
데이터 타입 확인
>>> a = 1
>>> print(type(a)) //데이터 타입 확인
<class 'int'>
변수의 이름 제한
사용 가능한 문자
- 소문자
- 대문자 (첫 글자는 안씀)
- 숫자
- 언더스코어
_
- 예약어는 사용할 수 없음.
- False, class, finally, is, return, None, continue, for, lambda, try, True, def, from, nonlocal, while, and, del, global, not, with, as, elif, if, or, yield, assert, else, import, pass, break, except, in, raise
변수의 입력과 출력
input
>>> var = input()
- 실행하면 사용자의 입력을 대기
- 입력된 값은 변수 var에 저장된다.
- 입력된 데이터의 타입은 문자열
숫자
수학 연산자
연산자 | 설명 | 예 | 결과 |
---|---|---|---|
+ | 더하기 | 1+3 | 4 |
- | 빼기 | 5-2 | 3 |
* | 곱하기 | 4*5 | 20 |
/ | 나누기 | 7/2 | 3.5 |
// | 정수나누기 (결과는 정수만) | 7//2 | 3 |
% | 나머지 | 7%2 | 1 |
** | 지수 | 2**10 | 1024 |
우선 순위
- 연산 우선 순위는 수학의 우선 순위와 같음
- 가독성의 문제가 있을 경우에는 괄호로 묶어준다.
진수 base
종류 | 표현 |
---|---|
2진수(binary) | 0b or 0B |
8진수(octal) | 0o or 0O |
16진수(hex) | 0x or 0X |
형변환
>>> int(3.5)
3
>>> float(3)
3.0
문자열
Python3 에서는 문자열에서 기본적으로 유니코드(Unicode)를 사용하며, 변하지 않는다.(immutable)
문자열 표현
- 작은 따옴표
'
나 큰 따옴표"
로 묶어준다. - 여러줄의 문자열을 표현할 때에는 시작과 끝을
'''
나"""
로 묶어준다.
문자열 연산 (더하기, 곱하기)
>>> a = 'abc'
>>> b = 'def'
>>> a + b
abcdef
>>> a * 3
abcabc
형변환
>>> str(147) //숫자 int 타입 데이터를 문자열로 변환
'147'
이스케이프 문자
특수문자 또는 특별한 역할을 의미하는 문자
이스케이프 문자 | 설명 |
---|---|
\a | beep 발생 |
\t | tab |
\n | 줄바꿈 |
\|\ 역슬래시 입력 |
|
\’ | ' 입력 |
\” | " 입력 |
인덱스 연산
- 문자열에서 문자를 추출하기 위해
[]
와 오프셋을 지정할 수 있다. - 첫 문자의 오프셋은
0
, 가장 오른쪽은-1
로 시작한다. - 지정된 오프셋이 문자열의 범위를 넘어가면 에러 발생
>>> str = 'fastcampus'
>>> str[0]
'f'
>>> str[-1]
's'
슬라이스 연산
- 슬라이스된 리스트가 새롭게 생성됨
[:]
처음부터 끝까지[시작번호:]
시작번호부터 끝까지[:끝번호]
처음부터 끝번호 전까지[시작번호:끝번호]
시작번호부터 끝번호 전까지[시작번호(이상):끝번호(미만):step]
시작번호부터 끝번호 전까지 step만큼 건너뛰면서..[::-1]
처음부터 끝까지 역순으로 재배열
길이재기
- len(문자열)
문자열 나누기 split
- 주어진 구분자로 문자열을 나누어 리스트 형태로 반환
- 변수.split(구분자) //구분자가 공백일 경우 생략 가능
>>> str = '1,2,3,4'
>>> str.split(',')
['1', '2', '3', '4']
문자열 합치기 join
”“.join(문자열) //순서 주의 문자열 사이에 넣을 문자.join(합칠 문자열)
>>> str = '1,2,3,4'
>>> str_split = str.split(str)
>>> '_'.join(str_split)
'1_2_3_4'
대소문자 다루기
>>> str.capitalize() //문장의 첫문자를 대분자로 변환
>>> str.title() //단어의 첫문자를 대분자로 변환
>>> str.upper() //모두 대문자로 변환
>>> str.lower() //모두 소문자로 변환
>>> str.swapcase() //대문자를 소문자로, 소문자를 대문자로 변환
문자열 포멧
옛날스타일 %
변환 타입 | 설명 |
---|---|
%s | 문자열 str |
%d | 10진수 decimal |
%x | 16진수 hex |
%o | 8진수 octa |
%f | 10진 부동소수점수 float |
%e | 지수로 나타낸 부동소수점수 exponent |
%g | 10진 부동소수점수 또는 지수로 나타낸 부동소수점수 |
%% | 리터럴 % |
>>> '%s' % 42
'42'
>>> '%d x %d : %d' % (3, 4, 12)
'3 x 4 : 12'
옛 스타일 정렬
>>> d = 37
>>> f = 3.14
>>> s = 'Fastcampus'
>>> '%d %f %s' % (d, f, s)
'37 3.140000 Fastcampus'
>>> '%10d %10f %10s' % (d, f, s)
' 37 3.140000 Fastcampus'
>>> '%14d %14f %14s' % (d, f, s)
' 37 3.140000 Fastcampus'
>>> '%-14d %-14f %-14s' % (d, f, s)
'37 3.140000 Fastcampus '
>>> '%-14.3d %-14.3f %-14.3s' % (d, f, s)
'037 3.140 Fas '
새 스타일 {}, format
- {}.format(변수)
- 타입지정자 {:d} 등은 옛 스타일과 비슷함
>>> d = 37
>>> f = 3.14
>>> s = 'Fastcampus'
# 기본형태
>>> '{} {} {}'.format(d, f, s)
'37 3.14 Fastcampus'
# 각 인자의 순서 지정
>>> '{1} {2} {0}'.format(d, f, s)
'3.14 Fastcampus 37'
# 각 인자의 이름을 지정 (각 인자의 값을 지정해줘야 함)
>>> '{f} {s} {d}'.format(d=50, f=1.432, s='WPS')
'1.432 WPS 50'
# 딕셔너리로부터 변수 할당
>>> dict = {'d': d, 'f': f, 's': s}
>>> '{0[d]} {0[f]} {0[s]} {1}'.format(dict, 'WPS')
'1 3.14 fastcampur WPS'
# 타입 지정자 입력 (옛스타일의 타입지정자를 :다음에 입력)
>>> '{:d} {:f} {:s}'.format(d, f, s)
'37 3.140000 Fastcampus'
# 각 인자의 이름과 타입 지정자를 모두 사용
>>> '{digit:d} {float:f} {string:s}'.format(digit=700, float=1.4323, string='Welcome')
'700 1.432300 Welcome'
# 필드 길이 10, 우측정렬 (숫자의 기본은 우측정렬)
>>> '{:10d}'.format(d)
' 37'
>>> '{:>10d}'.format(d)
' 37'
# 필드 길이 10, 좌측정렬 (문자의 기본은 좌측정렬)
>>> '{:<10d}'.format(d)
'37 '
>>> '{:20s}'.format(s)
'Fastcampus '
# 필드길이 10, 가운데 정렬
>>> '{:^10d}'.format(d)
' 37 '
# 필드길이 10, 가운데 정렬, 빈 공간은 ~로 채움
>>> '{:~^10d}'.format(d)
'~~~~37~~~~'
>>> '{:=^30s}'.format( ' install ' )
'========== install ==========='