[Python 101] Chap02 - 파이썬 기본 데이터 타입
(CLASS1O1의 ‘Python 101: 매일 30분, 40일 동안! LV. 1 파이썬 기초 프로젝트’ 수업에 기반한 정리) Chap02 - 파이썬 기본 데이터 타입 (문자열,숫자-정수,실수) & 관련 메소드와 함수
파이썬 데이터 타입
문자열과 숫자 (정수, 실수)
- 크게 ‘숫자’와 ‘문자 (문자열, string)’로 나뉨
- ‘숫자’는 다시 ‘정수 (int)’, ‘실수 (float)’로 분류됨
type()
함수를 통해 값의 타입을 확인할 수 있음type(3) # int type(3.4) # float type("python") # string
화면 출력
print()
함수에서 여러 값을 출력할 때에는 각 값 사이에 쉽표를 사용print(1,2,3,4) print("python",4) print("python","very easy")
- 문자열에서 ‘\n’은 줄바꿈 의미함
print("첫째줄\n둘째줄")
파이썬 변수 (Variable)
- 변수에 값을 저장해 두면, 그 이름을 통해 값에 접근할 수 있는 것
- 그 값의 크기 만큼 메모리 크기 소진
=
이 있으면 오른쪽부터 해석하기바인딩의 의미
- 변수는 값을 바인딩함. 즉, 값이 메모리에 할당 된 고유의 주소를 기억함
아이스크림 = 1500 id(아이스크림) # 주소값이 출력됨
변수 실습 & 연습 문제
- 중간 산출값을 저장하는 역할 - K마트에서 월요일 고기값이 100그램 당 10,000원인데 매일 10% 가격이 상승했다면 수요일에는 얼마인가?
price_mon = 10000 * 1.1 price_tue = price_mon * 1.1 price_wed = price_tue * 1.1 print(price_wed) # sol
- 과자가 1500원, 사탕이 1000원이다. 과자 5개, 사탕 7개를 구매하는 총금액은?
price_1 = 1500 ; price_2 = 1000 price_tot = price_1 * 5 + price_2 * 7 print(price_tot) # sol
- 1달러당 1280원 (KRW) 이라면 $900에 대한 원화는?
won_per_dol = 1280 sol = 900 * won_per_dol print(sol) # sol
파이썬 문자열 인덱싱과 슬라이싱
문자열 & 그 중요성
- 프로그래밍 언어에 따라 문자(한 글자)와 문자열(여러 글자) 구분하는 경우 있음
- 파이썬은 문자와 문자열을 구분하지 않음. 문자열만 존재
- 많은 데이터가 문자열 형태로 제공됨
- 웹 상에서 스크래핑 한 데이터
- 파일로부터 읽어온 데이터
개행 문자와 탭
- 개행 문자
"\n"
- 한 줄 개행 (엔터 치는 효과)
- 탭
"\t"
- 사이에 공백이 생김
문자열 잘 다루기 - 인덱싱, 슬라이싱
문자열 인덱싱
- 인덱싱: 인덱스를 사용해서 문자열에서 문자 하나를 가져오는 것
- 순방향에서는 0부터 시작, 역방향에서는 (1) 부터 시작하는 차이
- 예.
lang = "Python3"
lang = "Python3"
lang[0] # 'P'
lang[1] # 'y'
문자열 슬라이싱
- 슬라이싱: 범위를 지정하여 문자열의 일부를 가져오는 것
[시작 인덱스 : 끝 인덱스
: 시작 인덱스에 해당하는 값은 포함, 끝 인덱스는 미포함- 시작 엔덱스를 생략하면? 0으로 간주함
- 끝 인덱스를 생략하면? 문자열의 끝으로 간주함
- 예.
lang = "Python3"
lang = "Python3"
lang[0:6] # 'Python'
lang[0:7] # 'Python3'
version = lang[-1:] # '3'
name = lang[:6] # 'Python'
print(name, version) # 'Python 3'
연습 문제
- ‘801230-1062221’ (주민등록번호)에서 연월일 부분만 출력하라.
reg_no = "801230-1062221" ymd = reg_no[0:6] print('19',ymd) # sol
- 위 번호에서 성별 나타내는 숫자 출력하라.
reg_no = "801230-1062221" sex = reg_no[-7] print(sex) # sol
문자열 주요 함수
문자열 합치기 (Concat 기능)
+
으로 합치기year = "2021" month = "04" day = "08" date = year+'-'+month+'-'+day print(date) # '2021-04-08'
문자열 반복하기
*
으로 반복하기year = "2021" print(year * 3) # '2021 2021 2021'
대문자/소문자 변환 함수 - upper, lower
- 대문자 또는 소문자의 새로운 문자열 객체를 리턴
문자열.upper()
문자열.lower()
ticker = "BTC-KRW" new_ticker = ticker.lower()
- <주의> 파이썬의 객체 저장방식 : Method 개념이 무의미한 R의 경우 함수 활용만으로 원래 변수에 값을 덮어 씌울 수 있으나, 파이썬에서는 메모리에 한 번 할당된 변수의 값은 바꿀 수 없음! 즉, 위의 예에서 `ticker = ticker.lower()` 한다고 해도 `ticker`의 원래 값은 바뀌지 않음 (immutable type) 주의>
문자열 쪼개기 - split
split
method- (default) 인자를 전달하지 않으면 공백을 기준으로 문자열 쪼갬
- 인자를 전달하면 해당 인자를 기준으로 문자열 쪼갬
date = "2021-04-08" date.split('-') # ['2020','03,'24']
- <주의> 파이썬의 객체 저장방식 : Method 개념이 무의미한 R의 경우 함수 활용만으로 원래 변수에 값을 덮어 씌울 수 있으나, 파이썬에서는 메모리에 한 번 할당된 변수의 값은 바꿀 수 없음! 주의>
Immutable type
- Method 개념이 무의미한 R의 경우 함수 활용만으로 원래 변수에 값을 덮어 씌울 수 있으나, 파이썬에서는 메모리에 한 번 할당된 변수의 값은 바꿀 수 없음!
- 파이썬에서는 객체에 할당된 값을 변경해야 할 경우, 객체에 값을 재할당 해주어야 함
name = "KAKAO" name[0] = 'T' # ERROR !
- 그렇다면 어떻게 바꿀 수 있을까?
- 슬라이싱
replace
method로 새로운 문자열을 생성해야 함name = "KAKAO" new_name_1 = 'T' + name[1:] # 'TAKAO' new_name_2 = name.replace('K','T',1) # 'TAKAO'
문자열 길이 - len
date = "2021-03-08"
len(date) # 10
문자열 공백 제거 - strip
strip
method- 문자열 좌/우의 공백을 제거함
code = ' 005930 ' code = code.strip()
- 문자열 좌/우의 공백을 제거함
- <중요> 원본은 그대로 나두고, 공백이 제거된 값이 추가로 메모리에 할당되는 것. 실행 후에는 `code`는 공백이 제거된 값을 가진 객체를 나타내게 됨! 더 나아가, `' 005930 '`는 이제 아무 객체와도 바인딩 되지 않은 쓰레기 (garbage)이기 때문에 파이썬에서 돌아가는 GB (Garbage Collector) 기능이 메모리에서 삭제를 해줌! (파이썬의 메모리 관리 기능) 중요>
컴마 (Comma) - replace, format
# 제거
close= '63,100,000'
close.replace(',','')
- <중요> 원본은 그대로 나두고, replace로 인해 콤마가 제거된 값이 추가로 메모리에 할당되는 것. 실행 후에는 `close`는 콤마가 제거된 값을 가진 객체를 나타내게 됨! 더 나아가, `'63,100,000'`는 이제 아무 객체와도 바인딩 되지 않은 쓰레기 (garbage)이기 때문에 파이썬에서 돌아가는 GB (Garbage Collector) 기능이 메모리에서 삭제를 해줌! (파이썬의 메모리 관리 기능) 중요>
# 추가
close = 63100000
format(close, ',d') # '63,100,000'
연습 문제
- s라는 변수가 ‘Daum Kakao’라는 문자열 바인딩. s의 값을 ‘Kakao Daum’으로 변경하라.
s = 'Daum Kakao' daum = s[0:4] kakao = s[5:] s = kakao + ' ' + daum print(s)
- a라는 변수가 ‘hellow world’라는 문자열 바인딩. a의 값을 ‘hi world’로 변경하라.
a = 'hello world' a = a.replace('hello','hi') print(a)
- ” 2020/03/24 “를 “2020-03-24”로 변경하라.
date = " 2020/03/24 " date = date.strip() print(date)
파이썬 타입 변환 함수
문자열을 정수로 변환 - int
year = "2021"
int(year) + 1
정수를 문자열로 변환 - str
year = 2021
str(year) # '2021'
정수와 실수 변환 - float, int
num = 10
float(num) # 10.0
num = 10.0
int(num) # 10