Study/Python

파이썬_변수와 자료형

김 도경 2024. 9. 26. 12:47

[2024.09.26] 필수온라인 강의 Part1 파이썬 기본기 다지기 CH02 변수와 자료형

 

CH02 변수와 자료형

  • 변수(variable)
    - 변할 수 있는 것 : 어떤 값을 담는 상자
    - 변수의 이름 : 영어문자 혹은 _로 시작 / 대소문자 구별, 숫자로 시작X, 특수문자X, 공백X, 파이썬 예약어X
    - 변수를 만들고 나면 변수를 저장하는 메모리를 자동으로 생성하고 주소를 생김 
    -변수 선언 : 1개의 변수엔 1개의 값 / 두개의 변수에 같은 값 / 변수에 변수 대입도 가능
                         - a=1 , b= 1 / a=b=1 / a=1, b=a
    - 변수 출력 : print()

  • 자료형(data type)
    - 프로그램에서 표현하고 저장하는 데이터 유형
    *** - 데이터 타입 출력 type() : 괄호안에 데이터 타입을 알려주는 함수
            -  int : 정수
            - float : 실수
            - str : 문자열

순서 자료형

 

1. 숫자(number) : 정수, log형 정수, 실수, 복소수
   - 숫자형태로 이루어진 자료형
        - 정수(integer) : 소숫점이 없는 숫자
        - 실수, 부동소숫점 (floating point) : 소숫점이 있는 숫자
    - 연산자
        - 사칙연산 : 덧셈(+), 뺄셈(-), 곱셉(*), 나눗셈(/)
        - 정수 나누기 연산자 : 나머지(%), 나머지 연산자: 몫(//)
        - 제곱 연산자 : 제곱(**)
    - 관련 함수
        - int () : 숫자나 문자열을 정수로
        - float () : 숫자나 문자열을 실수로
        - abs() : 절댓값

        - bow() : 제곱

2. 문자열(string) : 문자들의 모임
    - 문자열 만드는 방법 :
        -  큰 따옴표로 문자열 만들기       : print("hello")
        -  작은 따옴표로 문자열 만들기        : print('hello')
        -  문자열 내부에 따옴표 넣기        : print("I'm smart")
        -  이스케이프 문자를 사용해 문자열 만들기        : print('그녀는 \'파이썬\' 강의를 한다.')
        -  여러 줄 문자열 만들기        : 큰 따옴표 또는 작은 따옴표를 3번 반복한 기호를 사용

sentence ="""
글을 쓴다
여러줄
쓸수잇음
"""
print (sentence)

글을 쓴다
여러줄
쓸수잇음

        -  줄바꿈 없이 문자열 만들기        : 큰 따옴표 또는 작은 따옴표를 3번 반복한 기호만 사용하면 위 아래로 의도하지 않은 줄바꿈이 생김

sentence ="""\
글을 쓴다
여러줄
쓸수잇음\
"""
print (sentence)
글을 쓴다
여러줄
쓸수잇음


    - 이스케이프 문자
        -  출력물을 보기 좋게 만드는 용도

             -  |n : 줄바꿈   , |t : 탭  , || : 역슬래시 , |' : 작은 따옴표 , |" : 큰 따옴표

sen1 = "1\n2"
sen2 = "3\t4"
sen3 = '\'작은따옴표\' 출력'
sen4 = "\"큰따옴표\" 출력"

1
2
3               4
'작은따옴표' 출력
"큰따옴표" 출력

    - 연산자
        -  문자열 연결 : + 
        -  문자열 반복 : * 

 

    - 인덱싱
        -  문자열 내부의 문자 하나를 선택하는 연산자
        -  문자 선택 연산자 ([])

        -  [] 안에는 선택할 문자의 위치를 지정하며, 이 숫자를 인덱스(index)라고 부름

        -  순방향 인덱스 : 0부터 시작

        -  역방향 인덱스 : -1부터 시작

        -  문자열 [인덱스]로 호출

# 문자열 인덱싱 : 문자 하나 선택
#           012   3  4567  8 910111213
#                                 -2-1
sentence = '파이썬 하루만에 끝내보자!'
# 문자열[인덱스]로 호출
# 순방향 인덱스 : 0 부터 시작
# 역방향 인덱스 : -1 부터 시작

print(sentence)
print(sentence[0])
print(sentence[-1])


    - 슬라이싱
        -  문자열의 특정 범위를 선택할 때 사용하는 연산자
        -  문자 선택 연산자 ([:])

        -  문자열[인덱스1 : 인덱스2]로 호출 

        -  파이썬 - 마지막 숫자 포함하지 않음

        -  인데스 1이상부터 인데스 2미만으로 적용

# 문자열[인덱스1 : 인덱스2]로 호출
# 4:8 = 4, 5, 6, 7
# 4 이상부터 8 미만까지의 범위 선택하여 출력
# 마지막 숫자는 포함하지 않음

print(sentence)
print(sentence[4:8])

    - 포멧팅

        -   문자열 안에 어떤 값을 삽입하는 방법
        -   % 연산자 포맷팅
        -   문자열 포맷 코드에 맞춰 바로 숫자와 문자를 대입할 때 사용
             -   숫자(정수) 대입 : %d
             -    숫자(실수) 대입 : %f
             -    문자 1개 대입 : %c
             -    문자열 대입 : %s

# 두 개 이상의 % 연산자 포맷팅
# 숫자 나타내는 변수와 문자를 나타내는 변수 대입
# 숫자 대입은 %d, 문자 대입은 %s

a=4
b = "학교"
sen = "나는 %d호선을 타고 %s를 가/" % (a,b)
print(sen)

 

        -   format() 함수를 이용하여 포맷팅을 할 수 있음
             -  중괄호{}를 포함한 문자열 뒤에 도트(.)를 찍고 format()함수 사용
             -  중괄호 개수와 format() 함수 괄호 안의 매개변수 개수는 동일

             -  함수를 사용하면 문자열의 {} 기호가 format() 함수 괄호 안에 있는 매개변수로 차례로 대치

# 한 개의 format() 함수 포맷팅
# { } 안에 숫자 대입
# format 함수 안에 넣을 숫자 삽입


print('나는[]호선을 타고 다녀.'.format(6))
print('나는[0]호선을 타고 다녀.'.format(6))

 

    - 관련함수

        -    len(x) : 문자열 길이 출력
        -    split() : 문자열 나누기
        -    count(x) : 문자 개수 세기
        -    replace('a', 'b') : 문자열 바꾸기
        -    find('a') : 위치 알려주기
        -    upper() : 소문자를 대문자로 바꾸기
        -    lower() : 대문자를 소문자로 바꾸기
        -    join(x) : 문자열 삽입

len(sentence1)                                       # len(x) : 문자열 길이 출력
sentence1.split()                                    # split() : 문자열 나누기
sentence1.count('샤브')                              # count(x) : 문자 개수 세기
sentence2 =sentence1.replace('샤브샤브', '육회')     # replace('a', 'b') : 문자열 바꾸기

file_name.find('.'))                                 # find('a') : 위치 알려주기
file_name.upper()                                    # upper() : 소문자를 대문자로 바꾸기
file_name.lower()                                    # lower() : 대문자를 소문자로 바꾸기
sentence = '.'.join('abcde')                         # join(x) : 문자열 삽입

 

 

3. 리스트(list) : 순서를 가지는 python객체의 집합
    - 여러자료들을 모아서 사용할 수 있는 형태의 자료

    - 여러 자료형을 담을 수 있고, 여러 요소를 하나의 변수로 사용하고 싶을 때 사용
    - 리스트 선언 : [a,b,c,d,e,....]
    - 대괄호[]내부에 넣는 자료 : 요소, element라고 부름

   - 인덱싱 : 문자열 내부의 문자 하나를 선택하는 연산자

print(myList(0))         # [인덱싱] 0 인덱스 값을 가진 요소 값 출력
print(myList[4][2])      # [인덱싱] 4번째 요소 값의 2번째 요소 값 출력 
print(myList[2:3])       # [슬라이싱] 2번째부터 3번째까지 범위 선택


   - 슬라이싱 : 문자열의 특정 범위를 선택할 때 사용하는 연산자

# 리스트의 인덱싱과 슬라이싱을 이용!
#         0   1    2     3-0     3-1    3-2-0      3-2-1
myList = [1, 5.2, 2*3, ['커피', '물', ['매실차', '유자차']]]
print(myLIst[3][2][0][:2])   -> 3번째의 2번째의 0번째에서 2개가 출력 : 매실이 출력

 

   - 연산자

       - '+ ' : 덧셈
       -  ' * ' : 반복

       -  len() : 길이 구하기

# list1 2번 반복 
# list1과 list2 덧셈
# 연산 결과의 길이 구하기
list1 = [1, 2, 3]
list2 = [4, 5, 6]

print(list1*2 + list2)
print(len(list1*2 + list2))

 

[1, 2, 3, 1, 2, 3, 4, 5, 6]
9

 

   - 변경과 삭제 : 리스트는 변경과 삭제 ( ! 튜플은 안됨)

#         0   1    2     3-0     3-1    3-2-0      3-2-1
myList = [1, 5.2, 2*3, ['커피', '물', ['매실차', '유자차']]]
print(myList)

# 리스트 '변경' 값으로 수정
myList[3] ='변경'
print(myList)

# 리스트 "변경" 값 삭제
del print[3]
print(myList)

 

   - 관련 함수 : 

       -  sort() : 리스트 정렬
       -  reverse() : 리스트 뒤집기
       -  append(x) : 리스트에 요소 추가
       -  extend(x) : 리스트 확장
       -  insert(a, b) : 리스트 요소 삽입, 리스트 a번째 위치에 b를 삽입
       -  remove(x) : 리스트 요소 제거
       -  pop() : 리스트 요소 끄집어내기
       -  count(x) : 리스트에 포함된 요소 x의 개수 세기

myList.sort()                    # sort() : 리스트의 요소를 순서대로 정렬하는 함수
myList.reverse()                 # reverse() : 리스트 요소 뒤집는 함수

myList.append(1)                 # append(x) : 리스트 맨 마지막에 추가하는 함수
myList.append([1,2])             # 한 개의 리스트를 리스트에 추가한 경우

myList.extend(1)                 # extend(x) : 원래 myList 리스트에 새로운 리스트를 더하는 함수
myList.insert(2, "삽입")         # insert(a, b) : 리스트의 a번째 위치에 b를 삽입하는 함수

myList.remove(2)                 # remove(x) : 리스트에서 첫 번째로 나오는 x를 삭제하는 함수

lastWord = myList.pop()          # pop() : 리스트의 맨 마지막 요소를 돌려주고 그 요소는 삭제하는 함수
lastWord = mylist.pop(1)         # pop(x) : 리스트의 x번째 요소를 돌려주고 그 요소는 삭제하는 함수

myList.count(1)                  # count(x) : 리스트 안에 x가 몇 개 있는지 조사하여 그 개수를 돌려주는 함수

 

 

4. 튜플(tuples) : 순서를 가지는 python 객체의 집합

    - 튜플 선언 : (a,b,c,d,e,..... )     (! 리스트는 [])
    - 값을 추가, 삭제, 수정을 할 수 없음
    - 수정해서는 안 되는 값을 저장할 때 사용.

 

    - 튜플 생성

      - 괄호가 있는 튜플 (a, b, c, d, e, ...) 형태로 생성 , 한개의 값을 가질 때는 마지막에 ","를 써주기

tuple = (1,2,3,4)

tuple1 =(2,)                  # tuple1 : 한 개의 값을 가질 때는 마지막에 ", (쉼표)"를 써줘야 함
float1 =(2)                   # float1 : 한 개의 요소지만 ", (쉼표)" 안 써줘서 튜플로 생성이 안 됨


      - 괄호가 없는 튜플 : 괄호 생략 가능

tuple2 = 1,2,3,4,5                      # tuple2 : 여러 개 요소인 튜플 생성

 

 

   - 인덱싱 : 문자열 내부의 문자 하나를 선택하는 연산자

tuple1 = (9,8,7,6)

tuple1[0]               # 인덱싱 : 문자열 내부의 문자 하나를 선택하는 연산자
tuple1[1:3]             # 슬라이싱 : 문자열의 특정 범위를 선택할 때 사용하는 연산자 # [1:3] : 1 인덱스부터 3 인덱스 미만까지 범위


   - 슬라이싱 : 문자열의 특정 범위를 선택할 때 사용하는 연산자

 

   - 연산자

       - '+ ' : 덧셈
       -  ' * ' : 반복

       -  len() : 길이 구하기

 

   - 변경과 삭제 : 불가능!!!! - TypeError 오류가 발생함

 

비순서 자료형


1. 딕셔너리(dictionary) : 순서를 가지지 않는 객체의 쌍

    - 대응관계를 나타내기 위해서 사용

    - key와 value를 한쌍으로 갖는 자료형
    - 리스트가 index 기반이면, 딕셔너리를 key를 기반으로 값을 저장하는 것이다.

 

    - 딕셔너리 선언 : {}로 선언, {키:값}으로 생성 { key1 : value1, key2 : value2, ... key_n : value_n }

                              - 키는 보통 문자열로 사용, 키에는 문자열/숫자/부울 모두 가능하긴 함.

myDict = {"name" : "a" , "job" :"b"}               # 딕셔너리 선언


   - 변경과 삭제 : 가능


   - 관련 함수
       -  keys() : key 리스트 만들기
       -  values() : value 리스트 만들기
       -  items() : key, value 쌍 얻기
       -  get() : key로 value 얻기
       -  in() : 해당 key가 딕셔너리 안에 있는지 조사
       -  clear() : key:value 쌍 모두 지우기

myDict = {"name" : "a" , "job" :"b"}                # 딕셔너리 선언

myDict = { "grade" : [100, 90, 80]}                 # 딕셔너리 값 추가
myDict["grade"] = [100, 100, 100]                   # 딕셔너리 값 수정
del myDict["grade"]                                 # 딕셔너리 값 삭제
print(myDictionary.keys())               # keys() : key 리스트 만들기
print(myDictionary.values())             # values() : value 리스트 만들기
print(myDictionary.items())              # items() : key, value 쌍 얻기

print(myDictionary.get('grade'))         # get() : key로 value 얻기    - 없으면 none이 출력

print("name" in myDictionary)            # in() : 해당 key가 딕셔너리 안에 있는지 조사  - True, False로 출력

myDictionary.clear()                     # clear() : key:value 쌍 모두 지우기



2. 집합(set) : 중복이 없는 순서를 가지지 않는 객체의 집합

  - set이라는 키워드를 통해서 생성 : 괄호안에 리스트 or 문자열 입력

  - 중복을 허용하지 않음.

  - 비 순서 자료형 -> 순서 사용시 리스트나 튜플로 변환하여 사용

set1 = set[10, 11, 12]               # 리스트 입력하여 집합 생성
set2 = set("ename")                -> ['e' , 'n', 'a', 'm']으로 출력     #중복이 허용되지 않음

 

   - 집합 자료형은 합집합, 교집합, 차집합을 구할 때 유용

         - 합집합 : |
         -  교집합 : &
         -  차집합 : -

print (set1 | set2)                 # 합집합
print (set1 & set2)                 # 교집합
print (set1 - set2)                 # 차집합

 

   - 관련 함수
       -  add() : 한 개의 값 추가
       -  update() : 여러 개의 값 추가
       -  remove() : 특정 값 제거

set1.add(6)                   # add() : 한 개의 값 추가
set.update([11,13])           # update() : 여러 개의 값 추가
set1.remove(1)                # remove() : 특정 값 제거


3. 부울(bool) : 참/거짓

   - 참과 거짓으로 나타내는 자료형

   - 주로 조건문의 반환 값으로 사용

 

   -  문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있다면 False (거짓)
   -  문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있지 않다면 True (참)
   -  if 문(조건문)으로 참, 거짓 판별

 

   - bool 함수를 통해서도 참과 거짓을 구별해낼 수 있음