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

[1팀/허서원] 2차시 파이썬 스터디 - 자료형

허서원 2023. 3. 16. 22:57

참고자료 : 데이터 과학을 위한 파이썬 프로그래밍 (최성철)

2주차_자료형_강의안.pdf
1.43MB
2주차_자료형_과제.pdf
0.19MB
2차시_자료형_과제답안.pdf
0.27MB

2. 파이썬 기초 - 01 자료형

변수와 자료형 · 화면 입출력과 리스트

 

학습목표

  • 변수의 개념, 변수와 메모리의 단계에 대해 알아본다.
  • 변수명을 선언하는 규칙에 대해 이해한다.
  • 기본 자료형 (정수형, 실수형, 불린형)에 대해 학습한다.
  • 사칙연산을 비롯한 간단한 연산을 수행한다.
  • 자료형 간 변환하는 방법에 대해 알아보고, 자료형을 확인하는 방법을 학습한다.
  • 사용자 인터페이스를 학습하고. CLI 환경에 대해 이해한다.
  • 표준 입력 함수인 inputO 함수와 표준 출력 함수인 print() 함수에 대해 알아본다.
  • 리스트의 필요성과 개념에 대해 이해한다.
  • 리스트의 가장 중요한 특징인 인덱싱과 슬라이싱에 대해 학습한다.
  • 리스트의 연산과 리스트를 추가하고 삭제하는 방법에 대해 알아본다.
  • 패킹과 언패킹에 대해 알아보고. 이차원 리스트에 대해 이해한다.
  • 리스트의 메모리 관리 방식에 대해 학습한다.

변수와 자료형

01 변수의 이해

  • 변수와 값

  1. MyName의 이름은 Heoseowon이다.
  2. MyName은 Heoseowon이다.
  3. MyName과 Heoseowon은 같다.
  4. MyName에 Heoseowon을 넣어라.

일반적으로 ‘=’ 기호는 ‘〜와 같다’로 여길 수 있다.

하지만 프로그래밍에서는 “MyName이라는 공간에 Heoseowon이라는 글자를 넣어라.”로 해석

정확하게는 MyName라는 변수variable에 Heoseowo이라는 값value을 넣으라는 뜻이다.

 

print(a + b) : a 변수에 있는 값과 b 변수에 있는 값을 더해 화면에 출력 print(”a + b”) → 파이썬 인터프리터는 따옴표 안의 문자를 하나의 값으로 이해

: 파이썬 인터프리터는 따옴표 안의 문자를 하나의 값으로 보고 이 값을 그대로 화면에 출력

→ 변수에 값을 넣는 과정 : 할당(assignment)

 

  • 변수와 메모리
    • 변수 
      • 수학 → ‘변할 수 있는 수’
      • 프로그래밍 → ‘어떠한 값을 저장하는 장소’ 
    • 변수를 저장하는 물리적 장소→ 메모리(memory)
      즉, 변수에 값이 저장되는 공간을 메모리라고 하고, 이 변수의 저장 위치를 메모리 주소라고 한다. 그래서 변수에 들어가는 값은 반드시 어떤 특정한 메모리 주소를 갖게 된다.

변수명 선언 규칙

  • 알파벳, 숫자, 밑줄(_)로 선언할 수 있다,
  • 변수명은 의미있는 단어로 표기하는 것이 좋다.
  • 변수명은 대소문자가 구분된다.
  • 특별한 의미가 있는 예약어는 사용할 수 없다.

02 자료형과 기본 연산

- 메모리 공간의 기본 개념

일반적으로 하드디스크(최근에는 SSD 사용)에 필요한 파일을 저장하면,

그 파일은 어느 정도의 저장 공간을 사용하게 된다. 1KB, 10KB, 2MB ….

→하나의 변수를 메모리에 저장할 때 그 변수의 크기만큼 공간(일정한 용량) 을 할당받는다.

컴퓨터는 0과 1, 두 가지 정보만 저장할 수 있으므로 이진수를 사용한다.

이진수 한 자리를 비트라고 하며, 8개의 비트는 1바이트(byte), 1,024바이트는 1킬로바이트(kilobyte. KB), 1,024킬로바이트는 1메가바이트(megabyte. MB)이다.

기본 자료형
할당받는 메모리 공간의 크기는 어떻게 결정될까?
→ 변수의 자료형에 의해 결정
자료형: 변수가 어떤 형태의 데이터를 저장하는가를 나타낸다.
기본적으로 정수형, 실수형, 문자형, 불린형이 있다

 

  • 정수형(integer type)
    자연수를 포함해 0, 1. 2, "1, -2와 같이 값의 영역이 정수로 한정된 값을 뜻한다.
    데이터를 선언할 때는 data = 1과 같은 방식으로 선언하며
    파이썬의 인터프리터가 알아서 메모리 영역에 필요한 공간을 확보한다.
    메모리 공간은 변수의 자료형과 컴퓨터 시스템의 타입(32bit 또는 64bit)에 따라 다르다.
  • 실수형(floating-point type)
    소수점이 포함된 값을 뜻한다. 10.2, 7.2 …
    실제로 값이 정수형이라도 9.0으로 입력하면 인터프리터는 실수형으로 해석한다.
  • 문자형(string type)
    값이 문자로 출력되는 자료형을 뜻한다.
    파이썬에서는 보통 따옴표에 들어간 정보를 문자형 데이터라고 함!
    큰따옴표나 작은따옴표 안에 있다면 모두 문자형이다.
  • 불린형(boolean type)
    논리형이라고도 하며, 참(True) 또는 거짓(False)을 표현할 때 사용한다.
    만약 값이 True라면 참을 의미하며, 컴퓨터에서는 1을 뜻한다.
    반대로 False라면 거짓을 의미하며, 컴퓨터에서는 0을 뜻한다.

간단한 연산

파이썬에서는 다양한 자료형을 사용하여 간단한 연산이 가능하다.

기본적으로 연산은 연산자피 연산자로 구분할 수 있다.

  • 연산자: +, -, *, / 기호
  • 피 연산자: 연산자에 의해 계산되는 숫자 → ‘3+2’에서 +는 연산자, 3과 2는 피연산자
    특히, 문자 간에도 + 연산이 가능함!!

03 자료형 변환

  • 정수형과 실수형 간 변환
  • 변수의 자료형은 float() 함수나 int() 함수를 사용하면 매우 간단하게 변환할 수 있다.

    • 실수형으로 변환해주는 함수 float()
    • 실수형을 정수형으로 변환해주는 함수 int()

실수형이 정수형으로 변환되어 소수점 이하의 내림이 발생한다.
흔히 수학에서 정수형으로 바꾼다고 하면 반올림이 일어나지만, 여기에서는 내림이 발생한다.
→ 기존의 수학과 다른 점!!!

파이썬 인터프리터의 특징!!
인터프리터는 변수 간 계산할 때 필요하다고 생각되면 스스로 정수형을 실수형으로 변환한다.

 

  • 정수형이나 실수형을 문자열로 바꾸는 함수 str()
  • 자료형 확인하기
    • 자료형을 확인하는 함수 type()

 화면 입출력과 리스트

01 파이썬 프로그래밍 환경

사용자 인터페이스(user interface): 컴퓨터에 명령을 입력할 때 사용하는 환경

대표적인 사용자 인터페이스로 GUI (Graphical User Interface)가 있다.

이 GUI 환경에서는 여러 가지 도구가 사용되는데, 대표적으로 마우스와 아이콘이 있다.

GUI 환경에서 아이콘을 하나 클릭하면 그에 대한 명령이 실행된다. 이전까지 컴퓨터 사용자 대부분은 CLI (Command Line Interface) 환경을 사용하였다.

CLI는 마우스의 클릭이 아닌 키보드만으로 명령을 입력하는 환경이다.

CLI 환경

CLI는 매우 오래된 컴퓨터 사용자 인터페이스 체계로 모든 운영체제에서 기본으로 지원한다.

예를 들어, 이미 파이썬을 설치하면서 사용한 Cmd 창. 즉 명령어 창(command window)은 윈도우에서 제공하는 대표적인 CLI 환경이다.

 

02 화면 입출력

  • 표준 입력 함수 : input() 함수
    input() 함수를 이용해 사용자가 콘솔 창에서 문자열을 입력받는 프로그램을 만들 수 있다.
    파이썬에서는 콘솔 창에서 입력을 받기 위해 표준 입력 함수인 input() 함수를 사용한다.
  • 표준 입력 함수 : print() 함수
    print() 함수 안에 있는 콤마(,) → 한 칸을 띄고 화면에 출력된다.
    여러 값을 연결해 화면에 출력할 수 있다. 비슷한 방법으로 문자형 간에 + 기호를 사용해 연결할 수 있다.
    input() 함수에 바로 지시문을 넣을 수도 있다.

    input() 함수를 사용할 때 유의할 점
    input() 함수가 값을 입력 받으면 그 값의 자료형은 문자형이 된다.

    파일 입출력 정리
    실제로 파이썬으로 프로그래밍을 배워 GUI 프로그램을 개발하는 경우는 그렇게 많지 않다.
    물론 어떤 업무를 하는지에 따라 조금씩 다르겠지만 일반적으로 GUI 프로그램보다는 CLI 기반의 프로그램을 더 많이 개발하게 될 것이다. 파이썬도 GUI를 지원하는 도구들이 있지만, C ++나 자바처럼 활발하게 사용되지는 않는다.

04 리스트의 이해

  • 리스트가 필요한 이유
  • 리스트(list) → 프로그래밍 언어에서 가장 많이 사용하는 자료형으로 배열array이라고도 한다.
  • 리스트의 개념
    리스트는 하나의 변수에 여러 값을 저장하는 자료형이다.
    → 여러 데이터를 하나의 변수에 저장하는 기법을 파이썬에서는 시퀀스 자료형이라고 한다.리스트에는 하나의 자료형만 저장하지 않고, 정수형, 실수형 등 다양한 자료형을 포함할 수 있다.
    C나 자바와 같은 프로그래밍 언어에서는 배열이라는 표현을 더 많이 사용한다. 물론 파이썬에서도 배열의 개념이 있지만, 시퀀스 자료형을 처리하기 위해서 리스트를 사용한다.
    시퀀스 자료형은 여러 자료를 순서대로 넣는다는 뜻이다.

  • 인덱싱과 슬라이싱
  • 인덱싱(indexing)
  • 인덱싱: 리스트에 저장되어 있는 값에 접근하기 위해 이 값의 상대적인 주소를 사용하는 것
    주소는 첫 번째 값을 0으로 했을 때 첫 번째 값과 얼마나 떨어져 있는지를 나타내는 것으로, 인덱스 주소 또는 인덱스값이라고 한다.

  • 리스트의 주소값은 왜 0부터 시작하는가?
    대부분의 프로그래밍 언어에서 배열(array)과 같은 변수의 주소값은 0부터 시작한다. 여러 가지 이유가 있지만, 1부터 시작하는 것보다 0부터 시작하면 이진수 관점에서 메모리를 절약할 수 있다.또한 1 보다는 0부터 시작하는 것이 진수에서 00부터 사용할 수 있는 장점도 있다. 다만 비주얼 베이직, 매트랩 같은 언어에서는 1 부터 인덱싱을 한다.

  • 슬라이싱(slicing)
  • 슬라이싱: 리스트의 인덱스 기능을 사용하여 전체 리스트에서 일부를 잘라내어 사용하는 것
  • 슬라이싱의 기본 문법
    변수명[시작 인덱스:마지막 인덱스-1]
  • 리버스 인덱스(reverse index)
  • 리버브 인덱스: 마지막 값부터 -1을 할당하여 첫 번째 값까지 역순으로 올라오는 방식
    시작 인덱스가 비어 있으면 처음부터, 마지막 인덱스가 비어 있으면 마지막까지라는 의미

  • 인덱스 범위를 넘어가는 슬라이싱(slicing with over index)
    슬라이싱을 할 때 인덱스의 첫 번째 값이나 마지막 값이 비어 있어도 잘 작동한다.
  • 인덱스를 따로 넣지 않고 cities[:]과 같이 콜론을 넣으면 cities 변수의 모든 값을 반환
    -> [0:마지막 인덱스]까지 입력하거나 [0:]이라고 슬라이싱하는 것과 결과는 같다.
  • 인덱스를 넘어서거나 입력하지 않는 경우 자동으로 시작과 마지막 인덱스로 지정cities[-50:50]처럼 범위를 넘어가는 인덱스를 입력하는 경우도 동일하게 해당 리스트의 시작부터 끝까지의 인덱스값으로 데이터를 불러온다.
  • 증가값(step)
  • 슬라이싱에서는 시작 인덱스와 마지막 인덱스 외에도 마지막 자리에 증가값을 넣을 수 있다.
    변수명[시작 인덱스:마지막 인덱스:증가값]
  • 리스트의 연산
    • 덧셈 연산
    • 곱셈 연산
    • in 연산
  • 리스트 추가 및 삭제
    • append() 함수
      append() 함수를 사용하면 리스트 맨 마지막 인덱스에 새로운 값을 추가할 수 있다.
    • extend() 함수
      extend() 함수는 리스트의 덧셈 연산과 같다.
      즉, 값을 추가하는 것이 아닌 기존 리스트에 그대로 새로운 리스트를 합치는 기능을 한다.

    • insert() 함수
      리스트의 맨 마지막에 값이 들어가는 것이 아니라 지정한 위치에 값이 들어간다.

    • remove() 함수
      remove() 함수는 리스트에 있는 특정 값을 지우는 기능을 한다.
      삭제할 값을 remove() 함수 안에 넣으면 리스트에 있는 해당 값이 삭제된다.

  • 인덱스의 재할당과 삭제
    특정 인덱스값을 변경하기 위해서는 인덱스에 새로운 값을 할당하면 된다.
    특정 인덱스값을 삭제하기 위해서는 del 함수를 사용한다. del 함수는 리스트의 특정 값을 지우는 함수는 아니고, 변수 자체를 삭제하는 명령이다.
    만약 del 함수에 리스트 내 특정 인덱스를 지정하면, remove() 함수처럼 해당 인덱스값을 삭제하고 그 이후에 있는 값들을 앞으로 이동시킨다.