스터디/파이썬 스터디 강의자료

[4팀/김민혜] 2차시 파이썬 스터디 - 자료형

알 수 없는 사용자 2023. 3. 23. 00:00

2차시_자료형_해답.pdf
0.05MB
2차시_자료형_강의안.pdf
0.52MB
2차시_자료형_과제.pdf
0.19MB

1.  변수 Variable


기본 입출력

  • input() 함수
    • 사용자가 입력하는 데이터를 받는 표준 입력 함수
  • print() 함수
    • 괄호 안의 내용을 출력하는 함수
1️⃣
>>> professor = "Minhye Kim"
>>> print(professor)
Minhye Kim
  • 1️⃣번 케이스
    • Line1
      “professor라는 공간에 Minhye Kim이라는 글자를 넣어라.”
      "professor라는 변수에 Minhye Kim이라는 값을 넣어라."
2️⃣
>>> a=7
>>> b=5
>>> print(a+b) 
12

>>> a=7
>>> b=5
>>> print("a+b")
a+b
  • 따옴표(””)의 유무에 따른 결과 출력
    • “” 안에 입력할 경우 (”a+b”) ⇒ 따옴표 안의 내용을 그대로 출력
    • 그냥 입력할 경우 (a+b) ⇒ a변수와 b변수의 합으로 출력
      • 사전에 변수(a, b)의 값을 지정하지 않으면 오류가 남

 

변수 선언

DEF) 어떠한 값을 저장하는 장소 (메모리)

  • 의미 있는 이름으로 선언하는 것을 추천
    • 단순 a,b,c와 같은 문자로 지정하면 다른 사람들이 봤을 때 이해하기 어려움.
  • 알파벳, 숫자, 밑줄(_)로 선언 가능
  • 대소문자 구분
    • Professor와 professor는 서로 다른 변수
    • 일반적으로 소문자로 구성하는 것을 추천
  • 특별한 의미가 있는 예약어(for, if, else, except, etc.)는 지정할 수 X.

 

2. 자료형 Data type


기본 자료형

DEF) 변수가 어떤 형태의 데이터를 저장하는가를 나타냄

  • 정수형 integer type
    DEF) 자연수를 포함해 0, 1, 2, -1, -2와 같이 값의 영역이 정수로 한정된 값
    • 데이터 선언 방식 : data=1
  • 실수형 floating-point type
    DEF) 소수점이 포함된 값. 값이 9.0이라도 인터프리터는 실수형으로 해석함.

  • 문자형 string type
    DEF) 값이 문자로 출력되는 자료형
    • 따옴표에 들어간 정보인 문자형 데이터
    • 따옴표 안에 있다면 모두 문자형
      • 앞의 입출력 2️⃣번 예시 참고
  • 불린형 boolean (=논리형)
    DEF) 참 또는 거짓을 표현할 때 사용하는 형식
    • 값이 True라면 참이며 컴퓨터 상으로 1
    • 반대는 False이며 컴퓨터에서는 0

 

실습

어떤 결과가 나올지 예상해보고 출력해봅시다!

정수형 integer type

a=1
b=1
print(a,b)

실수형 floating-point type

a="ABC'
b="101010"
print(a,b)

문자형 string type

a=1.5
b=3.5
print(a,b)

불린형 boolean type

a=True
b=False
print(a,b)

 

단순 연산

  • 연산자: *+, -, , /
    • 수학과 똑같은 연산 순서
    • 숫자뿐만 아니라 문자간 +연산도 가능
  • 피연산자: 연산자에 의해 계산되는 숫자
    • 3 + 2 : 피연산자는 3과 2
  • 사칙연산
    • +(덧셈), - (뺄셈), ***** (곱셈), / (나눗셈)
  • 제곱승 **
    • ex) 3의 5제곱 ⇒ print(35**)
  • 나눗셈 몫, 나머지
    • 몫 반환 : //
      • ex. 5//3 → 1
    • 나머지 반환 : %
  • 증가 및 감소 연산 (+=, -=, …)
    • n만큼 증가하여 연산 : += n
    ex) a에 1만큼 더한 값을 a에 넣어라 ⇒ a+=1 ↔ a=a+1

 

자료형 변환

  • 정수형 int() ↔ 실수형 float()
    • 먼저 변수를 정수형으로 선언한 뒤, float() 함수를 이용해 실수형으로 변환
    • 정수형으로의 변환은 int() 함수를 이용한다. 보통 소수점 이하의 내림으로 처리 (반올림으로 처리하는 기존 수학과는 차이가 있음)
    >>> a=10           #정수형 선언
    >>> print(a)
    10
    >>> a=float(10)    #실수형 변환
    >>> print(a)
    10.0
    
    >>> a=int(10.7)           #정수형 변환
    >>> b=int(10.3)
    >>> print(a+b)
    20
    

 

  • 숫자형 ↔ 문자형 str()
    • 숫자형 데이터와 문자형 데이터는 연산식이 성립되지 않음
    • 두 자료형을 통일하는 과정이 필요
    >>> a='76.3'    #a에 문자형 76.3 할당
    >>> a=float(a)  #실수형 변환
    >>> b=a         #a를 b에 할당
    >>> print(a+b)
    152.6
    
    >>> a=str(a)
    >>> b=str(b)
    >>> print(a+b)
    76.376.3
    

 

  • Data type 확인
    • 프로그래밍 하다가 각 변수의 자료형을 확인해보고 싶다면 type() 함수를 이용
    ******ex.******
    >>> a=int(10.3)
    >>> b=float(10.3)
    >>> c=str(10.3)
    >>>
    >>> type(a)
    <class 'int'>
    >>> type(b)
    <class 'float'>
    >>> type(c)
    <class 'str'>
    

 

3. 리스트 List


개념

DEF) 하나의 변수에 여러 값을 저장하는 자료형 (=시퀀스 자료형: 여러 자료를 순서대로 넣음)

  • 정수형, 실수형 등 다양한 자료형을 하나의 리스트에 포함할 수 있음
  • 앞서 배운 기본 자료형에는 포함되지 않지만 또다른 자료형 중 하나로 배열array라고도 불림
  • 필요성
    • 입력해야 할 데이터가 많을 때 변수에 값을 일일이 저장하면 코드가 길어지기도 하고 헷갈릴 수 있음
    • 한 개의 변수에 모든 값을 저장하고자 할 때 유용한 자료형

colors = [’red’, ‘blue’, ‘green’]

→ colors라는 변수에 리스트 자료형 할당

→ colors라는 변수는 3개의 값을 가짐

→ 값은 각각 red, blue, green임

 

리스트의 기능: 인덱싱과 슬라이싱

  • 인덱싱(indexing)
    DEF) 리스트에 저장되어 있는 값에 접근하기 위해 이 값의 상대적인 주소offset를 사용하는 것
    • 리스트의 첫 번째 값의 인덱스 주소는 0, 두 번째는 1, 세 번째는 2, …
    colors=['red', 'blue', 'green']
    print(colors[0])
    red
    print(colors[1])
    blue
    print(len(colors))   #len() 함수는 리스트의 길이를 나타내는 함수 (즉, 리스트 안의 값의 개수 반환)
    3
    
     

 

  • 슬라이싱(slicing)
    DEF) 리스트의 인덱스 기능을 사용해 전체 리스트에서 일부만 잘라내어 사용하는 것
cities=[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘대전’, ‘광주’, ‘울산’, ‘수원’]
값       [’서울’, ‘부산’, ‘인천’, ‘대구’, ‘대전’, ‘광주’, ‘울산’, ‘수원’]
인덱스     0         1         2        3         4        5         6         7  

→ 0부터 7까지의 index를 가진 8개의 값이 있는 것

→ cities 변수에 8개의 도시이름이 값으로 저장되어 있음

변수명[시작 index : 마지막 index]
>>> cities=['서울', '부산', '인천', ‘대구’, ‘대전’, ‘광주’, ‘울산’, ‘수원’]
>>> cities[0:6]
[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘대전’, ‘광주’]

>>> cities[0:5]
[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘대전’]
>>> cities[5:]  #마지막 인덱스 값까지 출력할 때 : 뒤를 비워둠
[‘광주’, ‘울산’, ‘수원’]
  • 6번째 인덱스 값인 ‘울산’은 출력되지 X
  • [마지막 인덱스-1] 값까지만 출력된다는 특징
  • 범위를 넘어가는 인덱스를 입력하거나 인덱스를 지정하지 않을 경우, 자동으로 시작 인덱스와 마지막 인덱스로 지정됨
  • 증가값(step)
    • 시작 인덱스와 마지막 인덱스 외에 마지막 자리에 증가값을 추가할 수 있음
변수명[시작 인덱스:마지막 인덱스:증가값]
>>> cities=[’서울’, ‘부산’, ‘인천’, ‘대구’, ‘대전’, ‘광주’, ‘울산’, ‘수원’]
>>> cities[::2]  #2칸 간격으로 출력
['서울', '인천', '대전', '울산']
>>> cities[::-1] #역으로 1칸 간격으로 슬라이싱
['수원', '울산', '광주', '대전', '대구', '인천', '부산', '서울']

 

  • 리버스 인덱스 (reverse index)
    DEF) 인덱스를 마지막 값부터 시작하는 기능
    • 마지막 값부터 -1을 할당하여 첫 번째 값까지 역순으로 올라오는 방식
          [’서울’, ‘부산’, ‘인천’, ‘대구’, ‘대전’, ‘광주’, ‘울산’, ‘수원’]
인덱스      -8        -7        -6       -5        -4       -3        -2       -1

 

리스트의 연산

  • 덧셈
    • 곱셈리스트의 곱셈 연산은 리스트에 n을 곱한 만큼 리스트를 n배 늘린다.
>>> color1=['red','blue','green']
>>> color2=['orange','black','white']
>>> print(color1+color2)
['red','blue','green','orange','black','white']
>>> len(color1)
3
>>> total_color=color1+color2
>>> total_color
['red','blue','green','orange','black','white']
  • in 연산
    • 포함 여부를 확인하는 연산. 해당 값이 리스트에 들어있는지 확인할 수 있음.
>>> 'blue' in color2
False

 

리스트 관련함수

  1. append() : 리스트 맨 마지막 인덱스에 새로운 값을 추가하는 함수
  2. extend() : 기존 리스트에 그대로 새로운 리스트를 합치는 기능
    • 리스트의 덧셈 연산과 같음.
  3. insert() : 리스트의 특정 위치에 값을 추가하는 함수
    • 0번째 위치에 새로운 값을 추가하고 싶다면
    • 리스트이름.insert(index, ‘값’)
  4. remove() : 특정 값을 지우는 함수
    • 삭제할 값을 remove() 함수 안에 넣으면 리스트의 해당 값이 삭제됨
    • 삭제되면 그 다음 값들은 한 칸씩 앞으로 이동
  5. del을 사용한 재할당과 삭제
    • 할당은 리스트 이름 뒤에 인덱스를 넣어 지정 → 기존의 값과 교체됨
    • 삭제는 del 리스트이름[인덱스] → 값이 그대로 삭제됨
##append() 함수##
>>> color=['red','blue','green']
>>> color.append('white')
>>> color
['red','blue','green','white']

##extend() 함수##
>>> color=['red','blue','green']
>>> color.extend(['black','purple'])
>>> color
['red','blue','green','black','purple']

##insert() 함수##
>>> color=['red','blue','green']
>>> color.insert(0, 'orange')
>>> color
['orange','red','blue','green']

##remove() 함수##
>>> color
['orange','red','blue','green']
>>> color.remove('red')
>>> color
['orange','blue','green']

>>> color=['red','blue','green']
>>> color[0]='orange' #할당
>>> color
['orange','blue','green']
>>> del color[0]      #삭제
>>> color
['blue','green']

 

패킹, 언패킹

>>> t=[1,2,3]  #패킹
>>> a,b,c = t  #언패킹
>>> print(t,a,b,c)
[1,2,3] 1 2 3

📦 패킹 packing

  • 한 변수에 여러 개의 데이터를 할당하는 작업 </aside>

🔓 언패킹 unpacking

  • 한 변수에 여러 개의 데이터가 들어있을 때 그것을 각각의 변수로 반환하는 방법
  • 할당 받는 변수의 개수가 적거나 많으면 에러 발생 </aside>

 

이차원 리스트 (행과 열)

DEF) 여러 개의 리스트를 하나의 변수에 할당한 것

ex. 성적표

학생 A B C D E
국어 점수 49 79 20 100 80
수학 점수 43 59 85 30 90
영어 점수 49 79 48 60 100
>>> kor_score=[49,79,20,100,80]
>>> math_score=[43,59,85,30,90]
>>> eng_score=[49,79,48,60,100]
>>> midterm_score=[kor_score,math_score,eng_score]
>>> midterm_score
[[49,79,20,100,80],[43,59,85,30,90],[49,79,48,60,100]]
  • 이차원 리스트의 값에 접근하기 위해서는 대괄호 2개를 사용하여 인덱싱 필요. 첫 번째 []는 행, 두 번째 []은 열

 

4. 문자열 String


개념과 특징

  • 애플리케이션을 만들거나 데이터를 분석할 때 매우 중요하게 다루어지는 자료형 중 하나
  • 시퀀스 자료형 sequence data type 중 하나
    • 데이터를 순차적으로 메모리에 저장하는 형식의 데이터 (ex. 리스트)

특징1: 인덱싱 Indexing

  • 글자 하나하나가 상대적인 주소offset를 가짐
abcde ← 저장된 문자열
01234 ← 상대적인 주소
-5-4-3-2-1 ← 역순
  • 출력할 때는 이렇게
>>> a="abcde"
>>> print(a[0],a[4])  #a 변수의 0번째, 4번째 주소에 있는 값 출력
a e
>>> print(a[-1],a[-5]) #a 변수의 오른쪽에서 0번째, 4번째 주소에 있는 값 출력
e a
  • 특징2: 슬라이싱 Slicing
    DEF) 문자열의 주소값을 이용해 문자열의 부분값을 추출해내는 기법
    • 변수[시작 인덱스:종료 인덱스:증가값]

 

주요함수

  1. upper() & lower() 함수
    • → 문자열 변수.함수명()
    • 문자열을 대문자/소문자로 변환
  2. title() 함수 & capitalize() 함수
    • title: 각 단어의 앞글자만 대문자로 변환
    • capitalize: 첫 번째 글자만 대문자로 변환
  3. count() 함수
    • 해당 문자열에서 특정 문자가 포함된 개수 반환
  4. isdigit () & startswith () 함수
    • isdigit: 해당 문자열이 숫자인지의 여부
    • startswith: 해당 문자열로 시작하는지 True or False로 나타냄
#upper & lower
>>> title="TEAMLAB X Inflearn"
>>> title.upper()
'TEAMLAB X INFLEARN'
>>> title.lower()
'teamlab x inflearn'

#title & capitalize
>>> title.title()
'Teamlab X Inflearn'
>>> title.capitalize()
'Teamlab x inflearn'

#count
>>> title.upper().count("a")
0

#isdigit & startswith
>>> title.isdigit()
False
>>> title.startswith("a")
False

 

특수문자를 그대로 출력하는 법

특수문자 기능
/enter 다음 줄과 연속
\ (역슬래시) \문자 자체
\’ ‘ 문자
\” “ 문자

 

특수문자 기능
\b 백스페이스
\n 줄 바꾸기
\t tab키
\e esc키
</aside>  

 

문자열 서식 지정

print() 함수를 사용하다 보면 특정 형식(통화 단위, 세 자리 숫자 단위 띄어쓰기, % 출력 등)에 맞추어 결과를 출력해야 하는 경우가 발생한다. 이를 서식 지정formatting이라고 함.

% 서식

 ‘%자료형 % (값)’

print('%s %s'%('one','two'))
print('%d %d'%(1,2))
one two
1 2
print("I eat %d apples." % 3)
I eat 3 apples.
  • % 뒤의 값들이 %d에 차례로 대응되어 할당됨
  • 데이터와 출력 형식을 분류해 기존 print() 함수에 + 기호로 문자열 형태를 붙여주는 것보다 시각적으로 이해하기 쉬움
  • 데이터를 각 변수의 자료형에 맞게 다르게 표현 가능
    • %s 문자열 형태, %d 정수형, %c 문자 1개, %f 실수형, %o 8진수, %x 16진수, %% 문자 % 자체

format() 함수

{자료형}”.format(인수)

age=40; name='Minhye Kim'
print("My name is {0} and {1} years old.".format(name, age))
print("Product: {0}, Price per unit: {1:**.2f**}.".format("Apple", 5.243))
My name is Minhye Kim and 40 years old.
Product: Apple, Price per unit: 5.24
  • 소수점을 출력하고자 할 때는 n번째 자리까지 출력하라는 의미에서 .nf로 사용