Python 기초 1 - 기본 데이터 타입
2020. 1. 22. 01:51ㆍDEV/Python
반응형
Python
특징
- 사용하기 쉽게 직관적으로 되어 있다
- 범용적으로 사용 가능 : Django, Pandas, etc
- 다른 언어로 만든 프로그램을 파이썬 프로그램에 포함 가능
- 매우 복잡하고 반복 연산이 많은 프로그램은 파이썬과 어울리지 않는다.
- 전반적인 뼈대는 파이썬으로 만들고, 빠른 실행 속도가 필요한 부분은 C로 만들어서 파이썬 프로그램 안에 포함시시킬 수 있다.
- 사실 파이썬 라이브러리 중에는 C로 만든 것도 많다. C로 만든 것은 대부분 속도가 빠르다.
파이썬으로 할 수 있는 일
- 시스템 유틸리티 : 파이썬은 운영체제(윈도우, 리눅스 등)의 시스템 명령어를 사용할 수 있는 각종 도구를 갖추고 있다.
- GUI(Graphic User Interface) 프로그래밍
- 화면에 또 다른 윈도우 창을 만들고 그 창에 프로그램을 동작시킬 수 있는 메뉴나 버튼, 그림 등을 추가하는 것
- 그 예로 파이썬과 함께 설치되는 Tkinter(티케이인터)가 있다
- C/C++와의 결합 : C나 C++로 만든 프로그램을 파이썬에서 사용할 수 있으며, 파이썬으로 만든 프로그램 역시 C나 C++에서 사용할 수 있다.
- 웹 프로그래밍
- 수치 연산 프로그래밍 : 파이썬이 수치 연산에 적합한 것은 아니지만, C로 제작된 NumPy라는 수치 연산 모듈로 빠르게 연산 처리 가능
- 데이터베이스 프로그래밍
- 사이베이스(Sybase), 인포믹스(Infomix), 오라클(Oracle), 마이에스큐엘(MySQL), 포스트그레스큐엘(PostgreSQL) 등의 데이터베이스에 접근하기 위한 도구를 제공
- 피클(pickle)이라는 모듈 : 파이썬에서 사용하는 자료를 변형 없이 그대로 파일에 저장하고 불러오는 일을 담당
- 데이터 분석 : 파이썬으로 만든 판다스(Pandas) 모듈을 사용하면 더 쉽고 효과적으로 데이터 분석 가능. 데이터 분석에 특화된 ‘R’이라는 언어를 많이 사용하고 있지만, 판다스가 등장한 이후로 파이썬을 사용하는 경우가 점점 증가
- 사물 인터넷 : 라즈베리파이(Raspberry Pi)는 리눅스 기반의 아주 작은 컴퓨터를 제어하는 도구로 사용
파이썬으로 할 수 없는 일
- 시스템과 밀접한 프로그래밍 영역 : 대단히 빠른 속도를 요구하거나 하드웨어를 직접 건드려야 하는 프로그램
- 모바일 프로그래밍
변수(Variable)
- 데이터를 저장하는 공간, 변수
- 저장 공간(memory)에 값을 생성하고 이름(name)을 지정하여 값을 기억하는 역할
- =(대입 연산자)를 이용하여 '이름=값' 형식으로 설정
- 선언과 동시에 값을 초기화해주어야 함
변수명 이름 규칙(Variable Namimg)
- 소문자로 시작 (변수 - 소문자, 함수 - 대문자, ...), 숫자로 시작 불가
- 숫자, _(under bar) 사용 가능
- 공백 사용 불가
- 변수의 의미를 담아 작성하는 것이 추후 관리에 용이
예약어(Reserved Keywords)
- 미리 선점하여 사용 중인 키워드
- 변수, 함수, 클래드 등의 사용자 정의 이름으로 사용 불가
기본 데이터 타입
- 정수(int)
- 실수(float)
- 문자(string)
- 불리언(boolean)
type 함수
해당 변수, 값의 타입(type)을 알고자 할 때 사용
>>> a = 1
>>> type(a)
int
None
- 아무런 값을 갖지 않을 때 사용
- 초기값을 갖지 않는 변수를 생성할 때 사용
- Null, nill 등과 같은 의미
>>> a = None
비교 연산자(Comparison Operator)
비교 결과는 Boolean 값
- <, > : 작다, 크다
- <=, >= : 작거나 같다, 크거나 같다
- == : 같다
- != : 같지 않다
>>> 3 + 4 == 7 # >> True
>>> 3 + 4 != 7 # >> False
>>> 2 + 4 > 5 # >> False
>>> 5 < 5 # >> False
>>> 5 >= 5 # >> True
>>> 1 + 2 <= 4 # >> True
숫자형 타입(numbers)
- 정수, 실수로 구성
- 수학의 기본 연산자(가감승제) 사용 가능
>>> 3 + 4 # >> 7 # 더하기
>>> 5 - 3 # >> 2 # 빼기
>>> 4 / 2 # >> 2 # 나누기
>>> 2 * 4 # >> 8 # 곱하기
>>> 3 ** 3 # >> 9 # 거듭제곱
>>> 5 % 2 # >> 1 # 나머지
>>> 5 // 2 # >> 2 # 몫
연산자 우선 순위
- 기본적인 수학의 연산자 우선 순위와 동일
- 강제로 연산을 선수하기 위해서 () 사용
>>> a = 5
>>> b = 4
>>> a + b * 4 # >> 21
>>> (a + b) * 4 # >> 36
식 평가 & 대입 (Expression evaluation & assignment)
=을 사용하여 변수에 대입이 발생한 경우만 변수의 값이 바뀐다
>>> a = 9
>>> print(a) # >> 9
>>> print(a - 3) # >> 6
>>> print(a) # >> 9
>>> a -= 3
>>> print(a) # >> 6
>>> a **= 2 # >> 36
문자(String)
- ""(큰 따옴표) 또는 ''(작은 따옴표)로 문자를 감싸서 사용 : 한 줄 문자열
- """""", '''''' 사용 : 여러 줄 문자열
>>> "Hello, World" # >> Hello, World
>>> "Hello" == 'Hello' # >> True
>>> a = """Hello
>>> World"
>>> b = '''Hello
>>> World'''
>>> print(a) || print(b)
Hello
World
문자열 내 작은 따옴표 처리
- 큰 따옴표 사용
>>> "Kim's name" # >> Kim's name
- \ 사용
>>> 'Kim\'s name' # >> Kim's name
이스케이프 문자(Escape String)
- 일부 문자의 의미를 달리하여 특정한 효과를 주는 것
- \n : new line, \t : tab
>>> print('Hello world\n\n')
>>> print('End\t String')
Hello World
End String
문자열 연산
문자열 더해서 연결하기(Concatenation)
>>> head = "Python"
>>> tail = " is fun!"
>>> print(head + tail)
Python is fun!
문자열 곱하기
문자열의 반복을 뜻하는 의미로 사용
>>> a = "python"
>>> a * 2
>>> print(a)
pythonpython
>>> print("=" * 50)
>>> print("My Program")
>>> print("=" * 50)
==================================================
My Program
==================================================
문자열 포맷팅(Formatting)
문자열 안에 어떤 값을 삽입하기
- %s : 문자열(String)
- %c : 문자 1개(character)
- %d : 정수(Integer)
- %f : 부동소수(floating-point)
- %o : 8진수
- %x : 16진수
- %% : Literal % (문자 % 자체)
>>> number = 3
>>> "I eat %d apples." % number
'I eat 3 apples.'
# 포매팅 연산자와 %를 함께 사용할 경우 %%로 입력해야 함
>>> "Error is %d%%." % 98
'Error is 98%.'
# %10s : 길이가 10인 빈 문자열을 넣고 왼쪽 정렬
>>> "%10s" % "hi"
' hi'
# %-10s : 길이가 10인 빈 문자열을 넣고 오른쪽 정렬
>>> "%-10sjane." % 'hi'
'hi jane.'
# 길이가 10인 빈 문자열을 넣고 오른쪽 정렬로 소수점 4자리까지 출력
>>> "%10.4f" % 3.42134234
' 3.4213'
f 포맷팅
>>> name = '홍길동'
>>> age = 30
>>> f'나의 이름은 {name}입니다. 나이는 {age+1}입니다.'
'나의 이름은 홍길동입니다. 나이는 31입니다.'
# 정렬
>>> f'{"hi":<10}' # 왼쪽 정렬
'hi '
>>> f'{"hi":>10}' # 오른쪽 정렬
' hi'
>>> f'{"hi":^10}' # 가운데 정렬
' hi '
문자열 길이 구하기
len(string)으로 문자열의 길이 구하기
>>> a = "Life is too short"
>>> len(a) # >> 17
문자열 인덱스 및 추출 (Indexing & Slicing String)
문자열의 각 문자는 첫 번째 문자부터 마지막 문자까지 순서(index)를 갖고 있음
index
- [ ]를 사용해서 하나의 문자 추출
- 0부터 시작
- 음수 인덱스 (-n) : 뒤에서부터 n번째 인덱스 위치 값 지정
- 인덱스의 범위
: 구간 설정으로 제어
: 유효 범위 > [0, 문자열 길이] or [-문자열 길이, -1]
: 유효 범위를 벗어나면 index out of range 오류 발생
slicing
- [n:m]를 사용해서 부분 문자열 추출
- n과 m 인덱스 사이의 문자열 추출 (m 인덱스 위치 문자는 포함하지 않는다) >> n <= string < m-1 구간의 문자열 반환됨
- 시작/끝 중 인덱스가 생략되어 있으면 0/마지막까지로 간주
>>> a = "0123456789"
# index
>>> a[1] # >> 1
>>> a[-4] # >> 6
# slice
>>> a[6:] # >> 6789
>>> a[1:3] # >> 12
>>> a[7:9] # >> 78
>>> a[-4:] # >> 6789
문자열 함수
replace
- 문자열 내의 특정 문자를 치환
- string.replace(target, new string) 형식으로 적용
>>> a = 'hello world'
>>> a.replace('h', 'j')
jello world
format
- 문자열 내의 특정한 값을 변수로부터 초기화하여 동적으로 문자열을 생성
- 'text {}'.format(variable,...) 형식으로 적용
>>> temp = 26.5
>>> prob = 80
>>> a = '오늘 기온은 {}도이고, 비올 확률은 {}%이다.'.format(temp, prob)
>>> print(a)
오늘 기온은 26.5도이고, 비올 확률은 80%이다.
>>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
'I ate 10 apples. so I was sick for 3 days.'
# 왼쪽 정렬
>>> "{0:<10}".format("hi")
'hi '
split
- 문자열을 특정한 문자(delimiter)로 구분하여 문자열의 리스트로 치환
- string.split(delimiter)
: optional
: 기본 delemiter는 띄어쓰기
>>> a = 'Hello World! What a nice day'
>>> print(a.split()) # >> [Hello, World!, What, a, nice, day]
>>> print(a.split('!')) # >> [Hello World, What a nice day]
문자 개수 세기(Count)
>>> a = "hobby"
>>> a.count('b')
2
문자 위치 찾기
- 첫 번째 문자의 위치 반환
- 0부터 시작하는 인덱스 값 반환
find
문자가 없는 경우 -1 반환
>>> a = "Python is the best choice"
>>> a.find('b')
14
>>> a.find('k')
-1
index
문자가 없는 경우 오류 발생
>>> a = "Life is too short"
>>> a.index('t')
8
>>> a.index('k')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
문자열 삽입(join)
각 글자 사이에 문자 삽입
>>> ",".join('abcd')
'a,b,c,d'
공백 지우기
lstrip
- 왼쪽 공백 지우기
- 문자열 중 가장 왼쪽에 있는 한 칸 이상의 연속된 공백들 삭제
>>> a = " hi "
>>> a.lstrip()
'hi '
rstrip
- 오른쪽 공백 지우기
- 문자열 중 가장 오른쪽에 있는 한 칸 이상의 연속된 공백 삭제
>>> a= " hi "
>>> a.rstrip()
' hi'
strip
- 양쪽 공백 지우기
- 문자열 양쪽에 있는 한 칸 이상의 연속된 공백 삭제
>>> a = " hi "
>>> a.strip()
'hi'
print 함수
- 해당 변수의 값을 출력
- ,를 사용하여 나열하면 여러 변수를 한 줄에 출력
- 함수 설정
- sep=" " : 구분자, 각 출력할 변수 사이를 구분하는 역할. 기본 값은 한 칸 띄어쓰기
- end : 마지막에 출력할 문자열. 기본 값은 \n
>>> print(10, 100)
10 100
>>> print(10, 100, sep="*", end="!")
10*100!
※ 참고
- 점프투파이썬
- Pandas 10분 완성 : 기존 개발 유경험자들 읽어보라고 제시함
반응형
'DEV > Python' 카테고리의 다른 글
Python 기초 2 - Collection (0) | 2020.01.27 |
---|