[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"

logo_r

lang = "Python3"
lang[0] # 'P'
lang[1] # 'y'

문자열 슬라이싱

  • 슬라이싱: 범위를 지정하여 문자열의 일부를 가져오는 것
  • [시작 인덱스 : 끝 인덱스 : 시작 인덱스에 해당하는 값은 포함, 끝 인덱스는 미포함
    • 시작 엔덱스를 생략하면? 0으로 간주함
    • 끝 인덱스를 생략하면? 문자열의 끝으로 간주함
  • 예. lang = "Python3"

logo_r

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()
      

      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

© 2021. All rights reserved.

-------Powered by Hydejack-------

Owned by POPLA0428