파이썬을 시작하는 당신을 위해.

파이썬 기초 마스터하기

파이썬은 어떤 언어일까요?

코딩이 아무리 재미있고 유익하다고 해도 처음부터 코딩이 재미있는 것은 아닙니다. 프로그래밍 언어를 배우고 익히는 과정은 사실 조금은 지루하고 어렵기도 합니다.

만약 프로그래밍을 처음 배우는 사람이라면 그 과정이 더 어렵고 힘들지도 모릅니다. 파이썬은 프로그래밍이 어렵고 지루하다고 생각하는 사람들에게 처음 배우는 언어로 괜찮은 선택이 될 수 있습니다.

파이썬이라는 언어를 처음 들어보셨다면 잠시만 기다려 주세요. 이 언어에 대한 배경 스토리를 먼저 알려드릴께요.

파이썬의 유래와 특징

파이썬은 1990년대 초반에 네덜란드의 수학자인 귀도 반 로섬이란 사람이 만든 프로그래밍 언어입니다. 이 파이썬이라는 이름의 유래가 독특한데 개발자인 귀도 반 로섬이 좋아하던 영국의 코미디 프로그램인 “Monty Python’s Flying Circus”에서 유래된 이름이라고 하네요.

파이썬은 현재 전세계에서 가장 많이 사용하는 프로그래밍 언어 중에 하나입니다. 2020년을 기준으로 세계에서 가장 인기있는 프로그래밍 언어 3위에 오르기도 했죠.

파이썬은 문법을 읽거나 쓰는 것이 쉽도록 만들어졌습니다. 그래서 프로그래밍을 배우고 싶은데 망설여지는 사람들에게 처음 시작을 파이썬으로 해보는 것을 추천드리는 이유예요.

실제로도 미국의 컴퓨터학과 코스를 개설한 상위권 대학의 70% 이상이 파이썬을 가르치고 있다고 합니다.

파이썬이 쉬운 이유가 뭘까요? 언어가 상대적으로 단순하기 때문입니다. 하지만 그 단순함에도 불구하고 구글이나 드롭박스, 미항공우주국등의 세계적인 기업과 기관에서 사용합니다.

그렇다면 왜 파이썬이 세계적인 기관이나 기업에서 사용되는 프로그래밍 언어가 되었을까요?

파이썬은 메모리가 허용하는 한도내에서 무한대의 정수를 다룰 수 있는 등 수치 연산에 강점을 가지고 있습니다. 그리고 다른 언어에 비해 생산성이 높고 다른 언어로 작성된 코드와도 쉽게 결합할 수 있습니다.

파이썬은 이런 언어의 특징들로 인해 고도의 계산이 필요한 소프트웨어나 핵심적인 애플리케이션을 개발할 때 자주 사용된다고 하네요.

어떤가요? 쉽지만 이렇게 강력한 언어라면 충분히 배워둘만한 가치가 있겠죠?

파이썬의 버전 문제

파이썬은 2와 3의 버전이 존재하는데 파이썬 2는 2010년 7월에 2.7 버전을 마지막으로 업데이트가 종료되었습니다.

최신 버전인 파이썬 3은 2020년 8월 현재 3.8 버전까지 업데이트된 상태인데, 중요한 것은 파이썬 3가 더 최신 버전임에도 불구하고 현재 운영 중인 많은 시스템에서는 버전 2가 사용되고 있다는 것이죠.

그 이유는 파이썬의 장점 중 하나가 풍부한 라이브러리라고 할 수 있는데 많은 라이브러리가 파이썬 2에 최적화되어 있기때문입니다.

파이썬의 훌륭한 라이브러리를 사용하기 위해서 어쩔 수 없이 파이썬 2로 개발을 할 수 밖에 없었던 거죠. 하지만 파이썬 2는 2020년까지만 지원이 된다고 합니다.

만약 파이썬으로 새로운 프로젝트를 시작한다면 반드시 버전 3를 사용하는 것이 좋습니다.

파이썬 실행환경 만들기

파이썬은 공식 사이트를 통해 최신 버전의 인스톨러를 다운로드하여 설치할 수 있습니다.

2020년 08월 현재 최신 버전은 3.8.5입니다. 최신 버전을 내려받고 인스톨러를 실행한 후 화면 하단의 “Add Python 3.8 to PATH”의 체크 박스를 체크하고 상단의 Install Now버튼을 클릭합니다.

설치가 진행되고 “Setup was successful”이라는 메세지가 표시되면 설치가 완료된 것입니다.

만약 화면의 하단에 “Disable path length limit”이라는 버튼이 있다면 클릭한 후 Close를 눌러줍니다.

Disable path length limit은 windows의 파일 이름과 경로의 길이가 260자로 제한이 되어 있기 때문에 이 제한을 해제한다는 뜻입니다.

여기까지 진행하셨다면 파이썬이 성공적으로 설치되었을 겁니다. 아마 어려운 점은 없었을 꺼예요.

파이썬의 환경 변수 설정

환경 변수라는 것은 컴퓨터 상의 어느 위치에든지 바로 호출할 수 있는 환경을 만들어주는 것입니다. 즉 실행 파일의 경로를 등록해주는 것이죠.

파이썬 인스톨러를 다운받아 설치한 경우에는 설치 화면의 Add Python 3.7 to PATH를 체크하면 자동으로 파이썬의 환경 변수가 설정되기 때문에 따로 설정해줄 필요는 없습니다.

만약 이미 파이썬 3를 설치한 상태에서 파이썬 2를 사용하고 싶다면 아래의 방법으로 환경 변수를 설정해주면 됩니다.

우선 제어판을 열고 시스템 및 보안 > 시스템 > 고급 시스템 설정을 순서대로 선택합니다.

고급 시스템 설정을 누르면 시스템 속성 창이 뜨는데 “고급”탭의 아래 쪽에 환경 변수 버튼이 있습니다.

참고로 window+ R을 누르고 sysdm.cpl을 입력하면 바로 시스템 속성창을 열 수 있습니니다.

환경 변수 버튼을 클릭하면 환경 변수 창이 열립니다. 이 창의 아래 쪽에 있는 시스템 변수 영역에서 Path라는 변수를 찾아 선택하고 편집 버튼을 클릭합니다.

환경 변수의 편집 창이 열리면 새로 만들기 버튼을 누르고 파이썬 2가 설치 된 폴더의 경로를 입력해주면 됩니다.

파이썬 설치 확인하기

파이썬이 제대로 설치되었는지 확인하기 위해 윈도우의 커맨드 프롬프트 창을 열고 다음의 명령어를 입력해보세요. 설치된 파이썬의 버전이 프롬프트에 출력됩니다.

python --version
Python 3.8.5

파이썬 실행하기

파이썬은 잘 설치했는데 과연 실행은 어떻게 해야 할까요? 파이썬을 실행하는 방법은 다음과 같이 크게 3가지 방법이 있습니다.

  • 인터렉티브 셀에서 한 줄씩 실행하는 방법
  • 텍스트 에디터로 프로그램을 작성한 후 해당 파일을 파이썬의 커맨드로 전달하여 실행하는 방법
  • 파이썬 IDLE를 사용하여 실행하는 방법

기본적으로는 위의 3가지 방법이 있지만 실제 개발 현장에서는 서브라임텍스트, VS Code등의 텍스트 에디터나 이클립스와 같은 IDE 프로그램에 개발 환경을 셋팅하여 사용하는 방법을 주로 사용합니다.

우선은 파이썬에 익숙해지기 위해 텍스트 에디터나 IDE를 사용하는 방법은 제외하고 기본적인 3가지의 사용법에 대해 알아보겠습니다.

인터렉티브 셀에서 실행하기

우선 윈도우의 커맨드 프롬프트 창을 엽니다. 그리고 커맨드 프롬프트 창에 python을 입력하고 엔터를 눌러보세요.

아마 여러분의 화면에서도 다음 이미지와 같이 파이썬에 대한 정보가 출력되면서 >>>라는 기호가 표시될 겁니다. 이것이 바로 파이썬의 인터렉티브 셀입니다.

>>>가 표시되면 python이 실행되고 있다는 의미입니다. 이 상태에서 프로그램을 한 줄씩 적고 Enter를 누르면 python 프로그램이 실행되고 결과 값을 출력해줍니다.

테스트 삼아 아래의 기본 코드를 입력해보세요. 결과를 바로 출력해줄꺼예요.

print("Hello, World")
Hello, World

참고로 인터렉티브 셀을 종료할 때는 Ctrl+ Z를 눌러 입력하고 엔터를 누르면 됩니다.

파이썬 커맨드에 파일 직접 전달하기

우선 텍스트 에디터를 열고 아래와 같이 간단한 코드를 작성하고 hello.py라는 이름으로 저장해보세요.

print("Hello, World")

이제 다시 윈도우의 커맨드 프롬프트 창을 열고 다음과 같이 입력한 후 스페이스 바를 눌러 한 칸을 띄워줍니다. 아직 엔터는 누르지 말고 대기해주세요.

python

python이라는 명령어의 옆에 앞에서 저장한 hello.py의 경로를 적어주면 됩니다. 하지만 매번 경로를 적어주는 것은 귀찮겠죠?

마우스를 이용하면 간단하게 추가할 수 있습니다. hello.py 파일을 마우스로 드래그하여 커맨드창에 드롭해주세요.그러면 경로가 자동으로 추가됩니다.

python C:\python\example01\hello.py

이제 엔터를 눌러주세요. 그러면 텍스트 에디터에 저장된 내용으로 파이썬 프로그램이 실행됩니다.

Hello, World

파이썬 IDLE 사용하기

파이썬 IDLE는 파이썬에서 표준으로 제공하는 개발 환경 어플리케이션입니다. 이 어플리케이션은 윈도우의 시작 메뉴에서 IDLE로 검색하면 찾을 수 있습니다.

IDLE를 실행하면 윈도우 프롬프트에서 사용했던 인터렉티브 셸과 비슷한 프로그램이 실행됩니다. 물론 사용법도 똑같습니다. 테스트 삼아 앞에서와 같이 간단한 코드를 입력해보세요.

print("Hello, World")
Hello, World

앞에서의 결과와 크게 다르지 않죠? 만약 여러 줄의 파이썬 프로그램을 작성한 후 실행하고 싶다면 메뉴바의 File> New File을 선택하면 됩니다.

New File을 선택하면 새로운 편집창이 열립니다. 이 편집창에 파이썬 프로그램을 작성한 후 파일로 저장하세요.

파일을 저장한 후 메뉴바에 있는 Run> Run Module메뉴를 선택하면 작성한 프로그램을 실행할 수 있습니다.

파이썬 주석달기

프로그래밍에서 주석은 생각보다 중요한 역할을 합니다. 주석은 소스 코드를 설명하는 글로 주석을 잘 달아두면 코딩의 업무 효율을 획기적으로 높일 수 있습니다.

사실 아무리 뛰어난 프로그래머라도 코드만 보고 바로 그 의도와 로직을 파악하는 것은 어려울 수 밖에 없습니다. 그래서 많은 훌륭한 프로그래머들이 자신들의 코드에 대해 쉽게 파악할 수 있도록 소스 코드에 대한 설명을 추가해놓기 시작했습니다. 그것이 바로 주석이죠.

주석을 다는 방법은 프로그램마다 조금씩 차이가 있습니다. 파이썬의 경우에는 #기호를 사용하여 해당 라인이 주석임을 표시합니다.

# Hello World를 출력하는 예제입니다.
print("Hello, World")
Hello, World

앞의 코드 테스트해 보셨나요? 앞에서 작성한 #을 사용한 라인은 출력되지 않죠?

기본 연산자와 비교 연산자

파이썬은 다른 프로그래밍 언어와 마찬가지로 기본 연산과 비교 연산을 위한 연산자를 제공합니다. 기본 연산과 비교 연산은 특별한 경우가 아니라면 대부분의 모든 프로그래밍 언어에서 기본적으로 수행되는 작업이며 그 연산을 수행하기 위한 문법도 거의 차이가 없습니다.

그럼 모든 프로그래밍 언어의 기본이 되는 기본 연산자와 비교 연산자라는 것은 어떤 것일까요? 모든 프로그래밍의 기초가 되는 부분이니 이미 알고 있더라도 우리 모두 함께 한번더 각각에 대해서 살펴볼까요?

기본 연산자

파이썬은 사칙 연산과 같은 기본적인 연산을 수행할 때 아래와 같은 연산자를 사용합니다.

덧셈과 뺄셈 연산자는 우리가 이미 알고 있는 사칙 연산 기호와 같습니다. 곱셈과 나눗셈 연산자는 조금 틀릴수도 있겠네요.

우리는 학교에서 곱셈은 X, 나눗셈은 ÷라고 배웠으니까요. 파이썬에서 곱셈은 X대신 *를 사용하고 나눗셈은 ÷대신 //, %, /의 세 가지 형태로 사용합니다.

음? ÷대신 /를 사용하는 것은 알겠는데 //%는 조금 낯설죠? 각각의 기호가 수행하는 연산은 다음과 같습니다.

연산 기호 의미 사용 예
+ 덧셈 123 + 456
뺄셈 456 – 123
* 곱셈 12 * 34
/ 나누기 34 / 12
// 나눗셈의 몫 구하기 34 // 12
% 나눗셈의 나머지 구하기 56 % 8
** 거듭제곱 5 ** 8

어렵지 않죠? 참고로 나머지 연산은 숫자를 2로 나눴을 때 나머지가 0이면 짝수이고 1이면 홀수가 되기 때문에 짝수와 홀수를 판단할 때 자주 사용됩니다. 그리고 하나의 그룹을 여러개의 그룹으로 나누는 경우에도 나머지 연산을 사용하죠.

테스트삼아 아래의 코드를 직접 입력하고 결과를 확인해보세요.

# 더하기
a = 123 + 456
a
579
# 빼기
b = 456 - 123
b
333
# 곱하기
c = 12 * 34
c
408
# 나누기
d = 34 / 12
d
2.8333333333333335
# 몫 구하기
e = 34 // 12
e
2
# 나머지 구하기
f = 56 % 8
f
0
# 거듭제곱
g = 5 ** 8
g
390625

비교 연산자

비교 연산자는 데이터 간의 비교를 통해 어느 쪽의 숫자가 더 크거나 작은 지를 확인하기 위해 사용하는 연산자입니다.

비교 연산자는 파이썬 외에도 자바나 C언어와 같은 다른 프로그래밍 언어에서도 기본적으로 사용하는 연산자로 다음과 같은 비교 연산자들을 사용합니다.

연산 기호 사용법 의미
> x > y x는 y보다 크다
>= x >= y x는 y와 같거나 크다
< x < y x는 y보다 작다
<= x <= y x는 y와 같거나 작다
== x == y x는 y와 같다
!= x != y x와 y는 같지 않다

프로그래밍을 처음 배우는 상황이라면 ===의 사용법이 헷갈릴 수도 있는데 =은 변수에 값을 대입할 때 사용하고 ==는 두 개의 값이 같은 지를 비교할 때 사용한다는 것만 기억하시면 됩니다.

다음의 코드를 직접 입력해서 비교 연산자를 직접 테스트해 보세요.

5 > 2
True
5 < 2
False

위의 두 예제는 숫자 5와 2를 비교하는 예제로 첫번째는 5가 2보다 크기 때문에 True가 출력되고, 두번째는 5가 2보다 작지 않기 때문에 False가 출력됩니다.

and 연산자와 or 연산자

and연산자와 or연산자는 비교 연산자이지만 조금 특별한 연산자입니다.

and연산자는 A와 B가 True인 경우에만 True가 됩니다. 그 외의 경우에는 False가 되며, 표로 나타내면 다음과 같습니다.

A B 결과
True True True
True False False
False True False
False False False

or연산자는 and 연산자와는 달리 A가 True이거나 B가 True인 경우에 True가 되고, A와 B가 모두 False인 경우에만 False가 됩니다. 표로 나타내면 다음과 같습니다.

A B 결과
True True True
True False True
False True True
False False False

파이썬 변수 사용하기

파이썬의 변수 사용법은 다른 프로그래밍 언어에 비해 매우 간단합니다. 그냥 변수의 이름으로 사용하고 싶은 단어에 =을 사용하여 값을 할당해주기만 하면 됩니다.

tax = 0.08
print(tax)

price = 120
print(price)

phoneNumber = '82-10-1234-5678'
print(phoneNumber)
0.08
120
82-10-1234-5678

참고로 프로그래밍을 잘하는 비법은 변수를 효율적으로 사용하는 것인데 변수는 일반적으로 다음과 같은 목적을 위해 사용합니다.

  • 연락처와 같이 기억하기 어려운 데이터를 더 짧고 쉬운 이름으로 저장
  • 데이터에 이름을 붙임으로써 용도에 대한 명확한 의미를 부여

용도에 대한 명확한 의미를 부여한다는 것은 다음과 같습니다.

만약 위의 예제에서 tax라는 변수가 없고 0.08이라는 숫자만 있었다면 그것이 무엇을 표시하는 것인지, 무슨 목적으로 사용되는지 알 수 없겠죠? 하지만 이 0.08이라는 숫자에 tax라는 이름을 붙여줌으로써 우리는 0.08이라는 숫자가 세금을 계산하기 위한 데이터임을 쉽게 추측할 수 있게 됩니다.

마지막으로 파이썬도 변수를 사용할 때 지켜야 할 몇 가지 규칙이 있습니다. 이 사용 규칙을 지키지 않으면 프로그램에서는 잘못되었다는 에러를 발생시키게 되죠. 그 규칙은 다음과 같습니다.

  • 변수명의 첫번째 문자에는 숫자를 사용하면 안됩니다. 첫번째 문자는 _나 영어로 시작해야 합니다.
  • 파이썬에서 사용하는 예약어와 똑같은 이름을 변수명으로 사용하면 안됩니다.

파이썬의 예약어 목록

파이썬에서 사용하는 예약어는 어떻게 알 수 있을까요? 다음과 같은 명령어를 입력하면 예약어를 확인할 수 있습니다.

import keyword
keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

출력되는 목록은 다음과 같습니다.

‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’

데이터 종류

프로그램에서 다루는 데이터는 몇 가지 종류가 있습니다.

프로그래밍에서는 데이터를 다루는 것이 중요한데 이 데이터를 효과적으로 다루기 위해서는 사용되는 데이터의 종류에 대해 알아야 합니다.

만약 프로그램에 전달하는 데이터가 어떤 데이터인지 명확하게 알려주지 않으면 프로그램은 전달받은 데이터를 어떻게 처리해야 할 지 알지 못해 때문에 에러를 발생시킵니다.

파이썬에서는 수치형, 문자열형, 논리형, 리스트형, 사전형, 튜플형, 집합형의 7가지 데이터를 다룰 수 있는데 이에 대해 조금 더 자세히 알아보겠습니다.

수치형 데이터

수치형은 숫자로 이루어진 데이터로 1, 2, 3, 4와 같은 일반적인 숫자로 이루어져 있습니다.

수치형 데이터는 더하기, 빼기 같은 기본적인 연산이 가능한데 가끔 숫자가 문자열로 다루어 지는 경우 산술적인 의미로서의 연산은 이루어지지 않습니다.

문자열로 다루어지는 경우에는 어떤 것이 있을까요? 바로 전화번호와 같은 데이터가 해당되겠죠?

전화번호는 비록 숫자로 이루어져 있지만 실제 용도는 문자열에 가깝습니다. 전화번호끼리 더하거나 빼는 연산을 하는 경우는 없으니까요.

주소도 마찬가지겠죠? ‘서울시 강남구 강남동 1234’와 같이 주소에 들어가는 숫자는 그 자체로 숫자가 아닌 문자의 역할이기 때문에 문자열로 전달해야 합니다.

프로그램의 내용에 맞게 데이터형을 선택하는 것이 중요합니다. 데이터형에 따라 그 데이터에 적용할 수 있는 기능이 다르기 때문이죠.

수치형의 경우에는 산술 연산이나 비교 연산 등을 쉽게 수행할 수 있고, 문자열형의 경우에는 upper(), lower(), count()등 문자열형만의 다양한 메소드를 활용할 수 있습니다.

정수실수 그리고 복소수

파이썬은 기본적으로 정수실수그리고 복소수의 3가지 종류의 수를 다룰 수 있어 고도의 계산이 필요한 소프트웨어를 개발할 수 있는 프로그래밍 언어입니다.

파이썬이 다룰 수 있는 이 3가지의 수에 대해 조금 더 알아보겠습니다.

정수

정수는 소수점을 갖지 않는 숫자로 음의 정수, 0, 양의 정수를 모두 통틀어서 일컫는 말이며 파이썬에서는 메모리가 허용하는 한 무한대의 정수를 다룰 수 있습니다.

정수 연산의 결과는 언제나 정수가 됩니다. 그리고 변수에 정수를 대입하면 그 변수도 정수 타입의 수치형 데이터로 다뤄집니다.

1 + 2
3
-3 + 1
-2
a = 123
print(a)
123
b = 123456789123456789123456789123456789
print(b)
123456789123456789123456789123456789
c = -123
print(C)
-123
d = -123456789123456789123456789123456789
print(d)
-123456789123456789123456789123456789

실수

파이썬은 실수를 지원하기 위해 소수점이 들어간 숫자 데이터는 모두 부동 소수형으로 다룹니다.

예를 들어 다음과 같이 소수점이 들어가는 수를 사용하거나 결과에 소수점이 들어가는 경우에는 부동 소수형이 됩니다.

a = 66 + 78.32
type(a)
<class 'float'>

부동 소수형도 정수형처럼 사칙 연산자를 사용하여 연산을 할 수 있습니다.

a = 66 + 78.32
print(a)
type(a)
144.32
<class 'float'>
b = 22 / 7
print(b)
type(b)
3.1428572857143
<class 'float'>
c = 4.5 // 2.0
print(c)
type(c)
2.0
<class 'float'>
d = 4.5 % 2.0
print(d)
type(d)
0.5
<class 'float'>

파이썬에서 부동 소수형은 다음과 같은 특징을 가집니다.

  • 부동 소수형은 8바이트만을 이용해서 수를 표현하기 때문에 한정된 범위의 수만 표현
  • 디지털 방식으로 소수를 표현해야 하기 때문에 정밀도에 한계

부동 소수형은 어떻게 구성되고 동작하는가를 정의하는 표준이 있는데 바로 IEEE754입니다. 이 표준을 따르는 모든 컴퓨터 시스템은 한계가 제한된 정밀도를 갖습니다.

다음의 수식를 입력해서 확인해 보세요. 결과는 0.1이어야 하지만 실제 결과는 우리의 생각과는 조금 다릅니다.

a = 2.1 - 2.0
print(a)
0.10000000000000009

아주 미미한 차이지만 분명한 오차입니다. 이처럼 부동 소수점은 제한된 정밀도를 가지기 때문에 부동 소수형의 계산 결과를 다른 값과 비교하고자 할 때는 일정한 오차 범위에 들어오는지를 판단하도록 코드를 작성하는 것이 좋습니다.

복소수

복소수정수처럼 산술 연산자를 사용해서 계산할 수 있습니다. 수학에서는 허수 단위를 표현할 때 i를 사용하지만 파이썬에서는 j또는 J를 사용합니다. 그리고 허수부의 계수가 1일 경우에도 1은 생략하지 않습니다.

복소수 역시 수치형 데이터이기 때문에 정수나 부동소수형 데이터와 함께 사용할 수 있습니다.

(6 + 8j) - (6 - 3j)
11j
3j ** 6
(-729+0j)
complexNumber = 23 + 4j
complexNumber + (5 + 8j)
(28 + 12j)

문자열형 데이터

문자열형은 작은 따옴표(‘)큰 따옴표(“)로 감싼 모든 문자열 데이터를 말합니다. 다음과 같이 문자열 뿐만 아니라 변수에 문자열을 대입한 경우에도 문자열형 데이터로 다뤄집니다.

'Hello World!'
'Hello World!'
helloMessage = 'Hellow World!'
helloMessage
'Hello World!'

파이썬에서는 조금 특이한 용법이 있는데 여러개의 복수행 문자열을 만들고 싶은 경우작은 따옴표나 큰 따옴표를 3개씩 연속해서 붙이면 여러 줄의 문자열로 작성할 수 있습니다.

따옴표를 3개씩 붙여 여러 줄의 문자열로 작성한 경우에는 결과에 개행 문자가 포함되어 출력됩니다.

'''
hello
my
world
'''
'\nhello\nmy\nworld\n'

문자열 조작하기

파이썬은 문자열형 데이터에 +*연산자를 사용할 수 있습니다.

+연산자를 사용하면 문자열들을 연결할 수 있고 *연산자를 사용하면 문자열을 입력된 숫자만큼 반복시킬 수 있습니다.

단 문자열형 데이터에 +연산을 할 때는 문자열 끼리만 가능하고 *연산은 숫자만 가능합니다. 그렇지 않으면 프로그램은 에러를 발생시킵니다.

'Hello' + 'My' + 'World' + '!'
'HelloMyWorld!'
'Hello World, ' * 5
'Hello World, Hello World, Hello World, Hello World, Hello World, '

문자열 분리하기

파이썬은 대괄호 연산자 []를 사용하여 문자열을 분리할 수 있습니다.

대괄호 연산자의 첫번째 매개변수는 문자열을 분리할 시작 위치를 나타내고 두 번째 매개변수는 마지막 위치를 나타냅니다.

다음은 문자열 S의 0번째 문자부터 4번째 문자의 바로 앞 문자까지 분리하는 코드입니다.

s = 'Good Morning'
s[0:4]
'Good'

문자열의 일부를 분리하는 것을 ‘슬라이싱(Slicing)’이라고 하는데 슬라이싱은 문자열뿐만 아니라 다른 순서열 자료형에서도 사용이 가능합니다. 문자열이나 순서열에서는 슬라이싱을 하더라도 원본이 그대로 유지됩니다.

a = 'Good Morning'
b = a[0:4]
c = a[5:12]
print(b)
print(c)
'Good'
'Morning'

슬라이싱을 할 때 각각의 매개변수를 생략하면 다음과 같이 동작합니다. 첫 번째 매개변수가 없는 경우문자열의 처음부터 슬라이싱을 수행하고 두 번째 매개변수가 없는 경우에는 문자열의 마지막까지 슬라이싱을 수행합니다.

a = 'Good Morning'
print(a[:4])
print(a[5:])
'Good'
'Morning'

문자열에서 특정한 위치에 있는 문자를 참고할 때는 :를 사용하지 않고 index만을 사용합니다.

a = 'Good Morning'
print(a[0])
print(a[8])
'G'
    'n'

문자열 안에 특정한 문자 혹은 문자열이 있는지 확인하는 in이라는 메소드도 있습니다.

in을 사용하면 특정한 문자가 있을 때 True를 출력하고 그렇지 않으면 False를 출력합니다.

a = 'Good Morning'
print('Good' in a)
print('Evening' in a)
print('W' in a)
True
False
False

문자열의 길이를 알고 싶은 경우에는 len()함수를 사용합니다. len()은 리스트형 같은 데이터에도 사용할 수 있습니다.

a = 'Good Morning'
len(a)
12

문자열형 데이터는 이처럼 다양한 조작이 가능하고 관련 메소드도 지원되어 쉽게 사용할 수 있습니다.

논리형 데이터

논리형 데이터는 True또는 False의 두 가지 값만 존재합니다. 참은 True이고 거짓은 False이죠.

논리형은 Boolean형이라고도 하는데 파이썬에서는 논리형 데이터를 사용할 때 주의해야 할 부분이 있습니다.

바로 논리형 데이터의 첫 글자는 대문자로사용해야 한다는 것입니다. 만약 첫 글자가 소문자인 경우에는 논리형 데이터로 인식되지 않기 때문에 원하는 결과가 나오지 않을 수도 있어 반드시 주의해서 사용해야 합니다.

리스트형 데이터

리스트형은 메소드를 사용하여 복수의 데이터를 하나로 묶을 수 있습니다.

프로그램을 만들다 보면 많은 데이터를 다루어야 하는 경우가 많은데 이렇게 많은 양의 데이터를 다루어야 하는 경우 데이터를 하나로 묶어 편리하게 다룰 수 있습니다.

리스트형 데이터를 사용하기 위해서는 다음과 같이 데이터를 쉼표(,)로 구분하여 대괄호로 감싸주면 됩니다.  이때 대괄호 안에 있는 들어가는 각각의 데이터에는 수치형이나 문자열형 모두 사용할 수 있습니다.

listData = [23, 56, 'python', 'programing']

리스트형 데이터를 사용하면 리스트에 동적으로 데이터를 추가하거나 삭제, 순서를 변경하는 등의 기능도 사용할 수 있습니다.

리스트형 데이터에 요소 추가하기

리스트형에 데이터를 추가하는 경우에는 append()라는 메소드를 사용합니다.

이 메소드를 사용하면 기존에 생성된 리스트형 데이터 묶음에 새로운 데이터가 추가됩니다.

group = ['design', 'tech']
group.append('entertainment')
group
['design', 'tech', 'entertainment']

리스트형 데이터에서 요소 제거하기

리스트형 데이터에서 요소를 제거할 때는 remove()라는 메소드를 사용합니다.

이 메소드를 사용하면 리스트형 데이터에서 지정된 데이터를 제거합니다.

group = ['design', 'tech', 'entertainment']
group.remove('tech')
group
['design', 'entertainment']

리스트형 데이터의 순서 바꾸기

리스트형 데이터에 들어있는 데이터를 정렬할 때는 sort()라는 메소드를 사용합니다.

다음과 같이 문자열로 구성된 리스트형은 알파벳순으로 정렬이 되는데 반해 숫자로 구성된 리스트형의 경우에는 크기가 작은 순으로 정렬됩니다.

group = ['design', 'tech', 'entertainment']
group.sort()
group
['design', 'entertainment', 'tech']
numGroup = [55, 24, 32, 64, 38]
numGroup.sort()
numGroup
[24, 32, 38, 55, 64]

리스트형 데이터 정렬시에는 반드시 리스트에 동일한 형태의 데이터들만 담겨있어야 합니다.

만약 문자열형과 수치형의 데이터가 섞여있으면 파이썬은 알파벳과 숫자를 비교할 수 없어서 에러를 발생시킵니다.

사전형 데이터

사전형 데이터는 로 구성되는 데이터형으로 복수의 데이터를 묶어서 저장한다는 점에서는 리스트형과 비슷하지만 사전형 데이터는 키와 값이 하나의 쌍으로 되어 데이터를 구성한다는 점에서 차이가 있습니다.

사전형 데이터는 다음과 같이 키와 값을 콜론 (:)으로 연결하고, 각각의 키와 값은 쉼표 (,)로 구분하며 전체 데이터는 중괄호 ({…})로 감싸주는 형태입니다.

{ Key1 : value1, Key2 : value2, Key3 : value3, … }

사전형 데이터를 이용하여 요일별 헬스 프로그램을 표현한다면 다음과 같이 나타낼 수 있겠죠?

myProgram = { 'Monday' : '벤치 프레스', 'Tuesday' : '덤벨 익스텐션', 'Wednesday' : '데드 리프트', 'Thursday' : '스탠딩 바벨 컬', 'Friday' : '스쿼트' }

앞에서 만든 사전형 데이터에서 원하는 요일의 데이터를 가져오고 싶다면 변수명[‘key’]의 형식으로 원하는 데이터를 가져올 수 있습니다.

myProgram['Monday']
'벤치 프레스'
myProgram['Wednesday']
'데드 리프트'

사전형 데이터의 메소드

사전형 데이터는 keysvalues메소드를 제공하는데 해당 메소드를 사용하여 사전형 데이터의 모든 key또는 value데이터를 가져올 수 있습니다.

myProgram.keys()
dict_keys(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'])
myProgram.values()
dict_values(['벤치 프레스', '덤벨 익스텐션', '데드 리프트', '스탠딩 바벨 컬', '스쿼트'])

튜플형 데이터

튜플이란 복수의 요소로 구성된 하나의 그룹을 의미합니다.

튜플형 데이터는 리스트형 데이터와 매우 유사한데 리스트형 데이터와는 달리 대괄호 ([])가 아닌 괄호 (())로 데이터를 감싼다는 차이가 있습니다.

(요소1, 요소2, 요소3, …)

튜플형 데이터는 리스트형 데이터와 다른 것이 하나 더 있습니다.

리스트형 데이터는 데이터를 만든 후 데이터를 변경할 수 있었습니다. 하지만 튜플형 데이터는 데이터를 만들고 난 후에는 만들어진 데이터를 절대 변경할 수 없다는 특징이 있습니다.

# 리스트형 데이터의 요소 바꾸기 테스트
fruit = ['바나나', '사과', '복숭아', '딸기']
fruit[0] = '포도'
print(fruit)
['포도', '사과', '복숭아', '딸기']
# 튜플형 데이터의 요소 바꾸기 테스트
fruit = ('바나나', '사과', '복숭아', '딸기')
fruit[0] = '포도'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment

튜플형 데이터는 사전형 데이터의 키로도 사용될 수 있습니다. 하지만 리스트형 데이터는 사전형 데이터의 키로는 사용될 수 없습니다.

사전형 데이터의 키는 변경할 수 없는 데이터형만 등록할 수 있기 때문입니다.

# 튜플형 데이터는 등록 가능
student = {}
key = ('혜림', '168cm')
student[key] = '48kg'
Print(student)
{('혜림', '168cm'): '48kg'}
# 리스트형 데이터를 등록하면 에러 발생
student = {}
key = ('혜림', '168cm')
student[key] = '48kg'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'

튜플형 데이터는 사전형 데이터의 키로 사용될 수 있기 때문에 복수의 데이터를 조합해서 키를 설정할 수 있습니다.

이런 특징을 이용하면 보다 세분화된 조건 설정을 만들 수 있는 장점이 있습니다.

집합형 데이터

집합형 데이터는 리스트형이나 튜플형과 같이 복수의 데이터를 하나로 묶어서 다룰 수 있는 데이터형입니다.

집합형 데이터는 사전형과 같이 중괄호 ({})를 사용합니다. 하지만 사전형과는 달리 ‘ ‘와 ‘ ‘의 쌍으로 이루어지지는 않습니다.

favorite = {'candy', 'snack', 'ice cream'}
print(favorite)
{'candy', 'snack', 'ice cream'}

집합형 데이터는 순서를 저장하지 않고 중복되는 데이터도 갖지 않습니다.

다음과 같이 set함수를 사용하여 집합형 데이터를 만들면 데이터의 특징을 확인해 보겠습니다.

candy = set('delicious')
Print(candy)
{'c', 'o', 'u', 'i', 'l', 'e', 's', 'd'}

delicious라는 문자열을 set함수에 전달하면 한 문자씩 분리된 집합형 데이터를 만듭니다.

이 데이터를 출력해보면 순서가 일정하지 않고 전달된 문자열에서는 2개였던 문자 i가 하나만 존재함을 알 수 있습니다.

참고로 set함수에 문자열을 전달하면 문자 단위로 분리된 데이터가 만들어지고, 리스트형 데이터를 전달하면 요소 단위로 분리된 데이터가 만들어집니다.

flavor = ['apple', 'orange', 'peach']
candy = set(flavor)
candy
{'peach', 'apple', 'orange'}

집합형 데이터에 새로운 데이터를 추가할 때는 update메소드로 리스트형 데이터를 넘겨주면 됩니다.

만약 update메소드의 인자를 리스트형이 아닌 문자열형 데이터로 넘기면 문자 단위로 분리되어 추가됩니다.

candy.update(['grape'])
candy
{'grape', 'peach', 'apple', 'orange'}

중복 데이터 제거하기

집합형 데이터의 특징인 ‘동일한 데이터를 갖지 않는다’는 속성을 이용하면 중복 데이터를 쉽게 제거할 수 있습니다.

파이썬에서 복수의 데이터를 다루는 경우 주로 리스트형 데이터를 사용하지만 리스트형에는 중복된 데이터가 존재할 가능성이 있습니다.

만약 이 리스트형 데이터에서 중복된 데이터를 없애고 싶다면 어떻게 하면 될까요? 이런 경우에는 리스트형의 데이터를 집합형으로 변환하고 다시 리스트형으로 변환해주면 됩니다.

playlist = ['music1', 'music2', 'music3', 'music4', 'music1', 'music5', 'music2']
playlistSet = set(playlist)
print(playlistSet)
{'music4', 'music2', 'music1', 'music5', 'music3'}
playlist = list(playlistSet)
print(playlist)
['music4', 'music2', 'music1', 'music5', 'music3']

앞의 예제에서 살펴본 것 처럼 playlist를 집합형 데이터로 변환하면 중복 데이터가 제거된 것을 알 수 있습니다.

중복 데이터가 제거된 playlistSetlist메소드를 사용하여 playlist에 리스트형 데이터로 대입을 시켜줍니다.

그러면 중복 데이터가 제거된 리스트형 데이터를 얻을 수 있습니다.

복수 데이터 간에 계산하기

집합형 데이터를 사용하면 집합형들 간의 차집합이나 교집합을 쉽게 구할 수 있습니다.

다음과 같이 두개의 집합형 데이터가 있을 때 두개의 집합형 데이터로 연산을 수행하면 집합형 데이터 간의 차집합 또는 교집합을 구하게 됩니다.

flavorA = {'apple', 'banana', 'peach'}
flavorB = {'apple', 'peach', 'vanilla'}
flavorA - flavorB
{'banana'}
flavorA & flavorB
{'peach', 'apple'}
flavorA ^ flavorB
{'banana', 'vanilla'}

집합형 데이터들 간에 아래와 같이 각각의 연산을 수행하면 해당 연산에 대한 결과가 나옵니다.

데이터 연산 설명
A <= B B에 A의 모든 요소가 포함되는지 판단
A >= B A에 B의 모든 요소가 포함되는지 판단
A | B A와 B에 포함된 모든 요소를 가진 새로운 집합형 데이터를 생성
A & B A와 B에 공통으로 포함되는 요소를 가진 새로운 집합형 데이터를 생성
A – B A에는 포함되지만 B에는 포함되지 않는 요소 가진 새로운 집합형 데이터를 생성
A ^ B A와 B 중 한 쪽에만 포함되지 않는 요소를 가진 새로운 집합형 데이터를 생성

댓글 남기기