파이썬 기본 문법: 1. 변수와 자료형

1. 프로그래밍이란?

“프로그래밍”이란 것을 어려운 것으로 인식하는 경우가 많습니다. 그러나 프로그래밍의 본질은 아주 단순합니다.
흔히 알려진 것처럼 컴퓨터 프로그래밍이란 “컴퓨터에게 일을 시키기 위한 명령어 모음을 만드는 일”이라고 할 수 있습니다.
조금 더 정확하게 말하면 컴퓨터에게 일을 시키기 위한 명령어들의 순차적인 모음을 만드는 작업이라고 할 수 있습니다.

그리고 이 작업은 단순하게 보면, 우리가 가지고 있는 데이터를 우리가 원하는 형태로 가공, 처리하는 과정을 정리하는 작업일 뿐입니다. 말 그대로 우리가 어떤 데이터를 가지고 있고 그 데이터를 특정 형태로 바꾸기를 원할 때, 몇 개의 명령어를 이용하여 그 바꾸는 과정을 순서대로 적어주면 끝입니다.

그래서 프로그래밍은 데이터 입력 → 데이터 처리 → 데이터 출력이라는 과정으로 이루어집니다.

(참고) 그럼 왜 그렇게 어렵게 보일까요?

2. 첫번째 파이썬 프로그램

  • 매우 단순해 보이지만 위의 코드는 제대로 작동하는 프로그램입니다.

  • 위의 내용을 입력과 출력으로 분리하는 작업을 생각해 봅시다
    • 먼저 데이터를 입력을 하려면 그 데이터를 담아둘 통이 필요하겠죠.
    • 그냥 휙 던지면 컴퓨터는 그게 데이터인지 아닌지 모릅니다.
    • 그래서 통에 넣어서 이게 데이터다.. 라고 알려주는데, 이 통을 변수, 상수 등의 이름으로 부릅니다.
    • 이 중에서 앞으로 계속 바꿔가면서 사용할 통을 변수라고 하죠.

    • 컴퓨터가 이 변수를 구분해서 사용할 수 있도록 하려면 변수에 이름을 줘야 하겠죠.
    • 우리는 두 개의 숫자를 데이터로 줄 것이니까 변수도 2개를 만들 것입니다.
    • 이름은 a와 b라고 하죠. a에는 1을, b에는 2를 던져 줄 것입니다.

    • 다음으로 a와 b를 더해주는 연산을 수행합니다.
    • 연산의 결과는 c라고 하는 변수를 만들어서 그 안에 넣어줍시다.

    • 이제 연산이 끝난 c의 값을 출력해 봅니다.



  • 이렇게 하나의 프로그램 코드가 완성되었습니다.
  • 위의 방법이 프로그래밍의 가장 기본적인 방법입니다.


(여기부터는 실행 결과 없이 코드만 제시합니다. 직접 실행해 보시기 바랍니다.)

3. 자료형 (Data Type)

3.1 기본 자료형

  • 데이터에는 여러 종류가 있습니다.
  • 1, 2, 3… 과 같은 자연수 뿐만 아니라 -1, -2.. 와 같은 음수를 포함한 정수의 개념도 있고.. 0.123, -2.532 외 같은 소수점을 가진 실수도 있습니다.
  • 점점 들어가면 제곱했을때 음수의 값을 가지는 허수를 포함한 복소수라는 것도 있죠.
  • 수치 데이터를 벗어나 a, b, c, d… 가, 나, 다, 라.. 와 같은 문자로 구성된 데이터도 있습니다.

  • 파이썬에서는 데이터의 형태를 직접 선언하지 않아도 됩니다.

      a = 1                # 자연수(=양의 정수)
      b = -2               # 음의 정수
      c = 0.2              # 실수
      d = 3+5j             # 복소수 → 파이썬에서는 복소수 표현 시 i가 아니라 j를 사용함
      e = "Hello"          # 문자열(영어)
      f = "안녕하세요"     # 문자열(한글)
    
      print(a)
      print(b)
      print(c)
      print(d)
      print(e)
      print(f)
    
      print(a, ':', type(a))
      print(b, ':', type(b))
      print(c, ':', type(c))
      print(d, ':', type(d))
      print(e, ':', type(e))
      print(f, ':', type(f))
    
  • 그런데 a, b, c, d, e…. 변수 명이 단조롭죠.
  • 프로그램이 점점 커지고 변수의 이름을 정의한 곳과 변수를 사용한 곳의 거리가 멀어질수록, 그리고 변수의 개수가 많아질수록 헷갈리기 시작합니다.
  • 그래서 변수의 명은 가능하면 쉽게 알아볼 수 있는 단어를 사용하시는 것이 좋습니다.

  • 변수의 이름은 기억하기 쉽고 구분하기 쉽게 작성하시면 됩니다.
  • 변수의 이름을 정할 때 반드시 따라야 하는 규칙같은 것은 없지만 각 언어에 따라, 또는 팀에 따라 권장하는 형태는 있습니다.
  • 혼자만 작성하고 보고 사용할 코드가 아니라면 언어별, 팀별로 권장하는 규칙을 따라주는 것이 협업에 도움이 되겠죠.

      int_data_1 = 1
      int_data_2 = -2
      float_data = 0.2
      complex_data = 3+5j
      string_data_eng = "Hello"
      string_data_kor = "안녕하세요"
    
      print(int_data_1)
      print(int_data_2)
      print(float_data)
      print(complex_data)
      print(string_data_eng)
      print(string_data_kor)
    

3.2 집합 자료형

  • 다음으로 지금까지 사용해 본 변수들이 하나가 아니라 여러 개가 모여서 구성된 데이터의 형태가 있습니다.
  • 리스트, 튜플, 딕셔너리가 그것입니다.

3.2.1 리스트(List)

  • 리스트(List)는 대부분의 프로그래밍 언어에서 배열, Array라고 표현하는 것과 비슷합니다.

  • 배열은 동일한 형태(실수끼리, 문자열끼리… 등)의 데이터 여러 개가 순서대로 모여 있는 것을 말하지만 파이썬의 List는 꼭 동일한 형태가 아니어도 관계없습니다.
  • 예를 들면 Java와 같은 언어에서의 Collection 이란 것과 비슷하다고 볼 수 있습니다.
  • 리스트의 데이터는 대괄호 [ ]로 둘러싸서 표시하며 내부의 데이터는 콤마( , )로 구분합니다.

      list_1 = [1, 3, 5, 7, 9]
      list_2 = ['hello', 'good morning', 'a', 'b', 'c']
      list_3 = [2, 4, 'bye', [6, 8, 10], ['see', 'you', 'later']]
    
  • list_1에는 숫자만, list_2에는 문자열과 문자, list_3에는 숫자, 문자열, 또다른 리스트들이 들어가 있죠.
  • 각각을 출력해보면 다 잘 인식되고, 처리되고 있습니다.

      print(list_1)
      print(list_2)
      print(list_3)
    
  • 리스트 안의 데이터를 하나씩 지정하고 싶을때는 [x] 와 같은 형태로 사용하시면 됩니다.
  • [x]에서 x에는 리스트 안의 몇 번째 데이터를 사용할 것인지 지정하는 숫자가 들어가는데 이 때 숫자, 즉 인덱스는 0부터 시작합니다.
  • 리스트 안의 리스트를 지정하여 그 안의 데이터를 사용하려면 한 단계 더 지정해 주시면 됩니다.

      print(list_1[0])
      print(list_2[1])
      print(list_3[4][1])
    
  • print(list_3[4][1]) 의 의미는 list_3 변수에서 0, 1, 2, 3, 4에서 4, 즉 다섯 번째의 값인 [‘see’, ‘you’, ‘later’]를 지정하고, 그 안에서 0, 1 즉 두 번째의 데이터인 ‘you’를 지정한 것입니다.

3.2.2 튜플(Tuple)

  • 다음으로 튜플(Tuple)이 있습니다.

  • 튜플은 리스트와 비슷한데 리스트는 안에 들어있는 값을 바꿀 수 있는 반면에 튜플은 바꿀 수 없다는 차이가 있습니다.
  • 튜플의 데이터는 괄호 ( ) 로 둘러싸서 표시하며 안에 있는 데이터는 콤마( , )로 구분합니다.

      list_4 = [1, 2, 3, 4, 5]
      tuple_1 = (1, 2, 3, 4, 5)
    
      print(list_4)
      list_4[2] = 10
      print(list_4)
    
      print(tuple_1)
      tuple_1[2] = 10
      print(tuple_1)
    
  • 리스트와 달리 튜플에서는 안에 있는 값을 바꾸려고 하니 오류가 발생하는 것을 확인할 수 있습니다.

3.2.3 딕셔너리(Dictionary)

  • 마지막으로 사전, 딕셔너리(Dictionary)라고 부르는 데이터의 형태가 있습니다.

  • 딕셔너리의 데이터는 중괄호 { } 로 둘러싸서 표시하며 내부의 데이터는 콤마( , )로 구분합니다.
  • 딕셔너리의 데이터는 “키:값”의 형태를 가진 한 쌍의 요소로 구성되어 있습니다.
  • 리스트, 튜플과 달리 딕셔너리는 데이터에 인덱스가 지정되어있지 않습니다.
  • “키:값”으로 구성된 데이터 쌍에서 “키”를 [ ] 안에 입력하여 원하는 데이터를 지정하고 사용합니다.

  • 딕셔너리의 키와 값에는 어떤 데이터라도 사용할 수 있습니다.
  • 딕셔너리의 값에는 리스트, 튜플, 딕셔너리가 들어갈 수도 있습니다.
  • 그런데 “키”라는 것은 단 하나를 지칭하기 위한 것이니까 여기에는 리스트와 같은 것을 지정하시면 안되겠죠.
  • 그리고 리스트와 마찬가지로 딕셔너리도 내부의 값을 바꿀 수 있습니다.

      dictionary_1 = {0:'False', 'a':"small A", "b":"small B", 'three':3, 'four':4, 1:['a', 'b']}
      print(dictionary_1)
    
      print(dictionary_1[1])
      print(dictionary_1["a"])
      print(dictionary_1['four'])
    
      dictionary_1["b"] = "alphabet small B"
      print(dictionary_1["b"])