프로그래밍 환경을 준비하느라 고생 많았다. 이제 첫 파이썬 프로그램을 만들어 보자.

1.3.1 파이썬 프로그램 작성하기

디렉터리 만들기

디렉터리를 만들어 두면 파이썬 프로그램 파일을 서로 어울리는 것끼리 묶어두기에 좋다. 각 장별로 디렉터리를 만들어 실습 파일을 모아 두자. 1장을 의미하는 ‘chapter_1’ 이라는 디렉터리를 만들자. 파이참 화면 왼쪽의 프로젝트 파일 탭에서, ‘study’ 디렉터리에 마우스 커서를 올리고 마우스 오른쪽 버튼을 클릭하면 파일 관리 팝업 메뉴가 나온다. 팝업 메뉴에서 ‘New -> Directory’를 클릭하면 디렉터리를 만들 수 있다.

그림 1-23 디렉터리 만들기

그림 1-23 디렉터리 만들기

디렉터리의 이름을 묻는 창이 나오면 ‘chapter_1’ 이라고 적자.

그림 1-24 디렉터리 이름 정하기

그림 1-24 디렉터리 이름 정하기

‘study’ 프로젝트 디렉터리 아래에 ‘chapter_1’ 디렉터리가 생성될 것이다. 이후 다른 장의 실습을 할 때도 ‘chapter_2’, ‘chapter_3’과 같이 장에 알맞는 디렉터리를 만들면 된다.

파이썬 파일 만들기

파이썬은 인터프리트 방식의 언어이기 때문에, 소스코드 파일이 곧 프로그램 파일이다. 첫 파이썬 프로그램이 될 소스코드 파일을 생성해 보자. 화면 왼쪽의 프로젝트 파일 탭에서 ‘chapter_1’ 디렉터리에서 마우스 오른쪽 클릭으로 팝업 메뉴를 연다. 팝업 메뉴에서 ‘New -> Python File’을 선택한다.

그림 1-25 파이썬 파일 만들기

그림 1-25 파이썬 파일 만들기

파일 이름은 first_program.py로 짓자. 파일명 끝의 .py는 파이썬 소스코드 파일이라는 뜻의 확장자다.

그림 1-26 파이썬 파일 이름 짓기

그림 1-26 파이썬 파일 이름 짓기

디렉터리와 파일을 모두 만들었으면 아래와 같은 화면이 될 것이다. 이 화면에서 왼쪽은 프로젝트의 파일을 관리하는 파일 관리 탭, 오른쪽은 프로그램 파일을 편집하는 편집기 탭이다. 오른쪽에 first_program.py 파일이 열려 있다.

그림 1-27 디렉터리와 파이썬 파일이 생성된 모습

그림 1-27 디렉터리와 파이썬 파일이 생성된 모습

프로그램 내용 입력하기

그러면 파이썬 프로그램 파일에 다음 코드를 똑같이 따라 입력해 보자.

코드 1-3 첫 파이썬 프로그램

# 첫 파이썬 프로그램

print('당신의 이름은 무엇인가요?')
name = input()

print(name, '님 반가워요.')

코드를 입력할 때 주의할 점

코드를 입력할 때는 완전히 똑같이 입력하는 것이 중요하다. 띄어쓰기, 기호 하나라도 틀리면 오류가 발생할 수 있다. 대문자와 소문자도 구별해야 한다. 오타가 나면 지우고 다시 작성하자.

코드를 다 입력하면 그림 1-28처럼 될 것이다. 코드를 정확하게 입력했는지 잘 확인해 보자.

그림 1-28 코드 입력을 마친 모습

그림 1-28 코드 입력을 마친 모습

코드를 입력·수정하면 입력된 내용은 저절로 파일에 저장된다.

1.3.2 파이썬 프로그램 실행하기

방금 만든 첫 파이썬 프로그램을 실행해 보자. 파이참 상단 메뉴에서 ‘Run -> Run…’ 을 클릭한다.

그림 1-29 파이썬 프로그램 실행하기

그림 1-29 파이썬 프로그램 실행하기

그러면 어떤 파일을 실행시킬 것인지 묻는 창이 나온다. 방금 작성한 ‘first_program’을 고르자.

그림 1-30 실행 대상 파일 선택 창

그림 1-30 실행 대상 파일 선택 창

프로그램을 실행하면 파이참 아래쪽에 콘솔 탭이 열리고 프로그램의 실행 결과가 출력된다.

그림 1-31 프로그램을 실행한 모습

그림 1-31 프로그램을 실행한 모습

프로그램에서 ‘당신의 이름은 무엇인가요?’라고 묻고 있다. 콘솔 탭을 클릭한 뒤 자신의 이름을 입력하고 엔터 키를 입력해 보자. 그러면 ‘박연오 님 반가워요.’하고 입력한 이름과 함께 인사가 출력될 것이다.

그림 1-32 콘솔 탭에 이름 입력하기

그림 1-32 콘솔 탭에 이름 입력하기

프로그램 실행이 끝나면 ‘종료 코드 0으로 프로세스가 종료됨(Process finished with exit code 0)’라는 메시지가 출력된다. 이 메시지는 프로그램이 오류 없이 성공적으로 실행을 마쳤다는 뜻이다.

오류가 발생했을 때

프로그램을 잘못 입력했다면 오류가 발생할 수 있다. 혹시 프로그램을 실행한 결과가 앞의 그림 1-32와 많이 다르다면, 프로그램을 잘못 작성한 것이다. 앞의 예제는 정확히 따라 입력하기만 하면 되니 잘못 입력한 것이 없는지 잘 살펴보도록 하자. 처음에는 오류를 일으키기 쉽지만 익숙해지면 오류도 점점 줄어든다.

초보자가 실수하기 쉬운 몇 가지 오류를 확인해 두자. 가장 쉽게 접할 오류는 문법 오류다. 문법 오류는 여러분이 입력한 코드가 파이썬 문법에 맞지 않아 해석할 수 없을 때 발생한다. 파이참은 코드에서 문법 오류를 찾아 빨간 밑줄로 표시해 준다. 문법 오류가 있는 상태에서 프로그램을 실행하면 실행 과정에서 ‘SyntaxError: invalid syntax’와 같은 오류 메시지가 빨간 글자로 출력된다. 다음 그림은 첫 행의 괄호를 잘못된 기호로 닫아 오류가 발생한 모습이다.

그림 1-33 문법 오류가 발생한 모습

그림 1-3 문법 오류가 발생한 모습

따옴표(')를 열었다가 닫지 않는 실수도 저지르기 쉽다. 다음 그림은 첫 행에서 따옴표를 닫지 않아 오류가 발생한 예다.

그림 1-34 따옴표를 제대로 닫지 않았을 때

그림 1-34 따옴표를 제대로 닫지 않았을 때

프로그래밍을 할 때는 사소한 철자 하나라도 틀리면 오류가 발생할 수 있다. 아래 그림의 예에서는 세 번째 행에서 name에서 끝에 e를 빠트려서 오류가 발생했다. 실행 과정을 자세히 살펴 보면, 프로그램이 정상적으로 실행되다가 세 번째 행을 실행하는 시점에서 오류가 발생했다는 것도 알 수 있다. 즉, 프로그램은 잘 실행되는 도중에 오류를 일으키기도 한다.

그림 1-35 철자를 틀려 실행 중에 오류가 발생한 예

그림 1-35 철자를 틀려 실행 중에 오류가 발생한 예

프로그래밍을 하다 보면 이 외에도 여러 가지 오류가 발생할 수 있다. 인간은 누구나 실수를 하기 때문에 오류를 범하는 것은 아무리 숙련된 프로그래머라도 피할 수 없는 일이다. 오류가 발생하면 걱정하지 말고 코드를 자세히 살펴보자. 특히 코드에서 빨간색으로 표시된 부분 근처를 잘 확인해보면 보면 틀린 부분을 쉽게 찾을 수 있다.

1.3.3 첫 파이썬 프로그램 살펴보기

프로그램을 만들어 실행해 보았지만 아직 프로그램의 의미는 잘 모르는 상태다. 이 프로그램 코드를 살펴보고 파이썬 프로그램의 기본을 알아 보자. 아래 코드에는 각 행에 번호를 붙여 두었는데, 이 번호는 파이썬 코드가 아니라 코드를 설명하기 위해 임의로 달아둔 것이다. 파이참에 입력한 코드에도 왼쪽에 행 번호가 붙어 있는데, 그것과 같다.

코드 1-4 첫 파이썬 프로그램

1      # 첫 파이썬 프로그램
2      
3      print('당신의 이름은 무엇인가요?')
4      name = input()
5      
6      print(name, '님 반가워요.')

파이썬 프로그램은 기본적으로 위에서부터 한 행씩 차례대로 실행된다.

1번 행은 샵 기호(#)로 시작되었다. 파이썬 코드에서 샵 기호가 나오면 샵 기호 뒤의 내용은 실행되지 않는다. 이것은 프로그램에 메모나 설명을 남기기 위해 사용되는 주석이다. 주석은 실행되지 않기 때문에 불필요하다고 생각할 수도 있지만, 사람이 코드를 더 잘 이해할 수 있게 해주기 때문에 중요하다. 프로그램은 컴퓨터만이 아니라 사람도 쉽게 읽을 수 있어야 한다. 1번 행은 전체가 주석이므로 실행되지 않고 넘어갔다.

2번과 5번 행은 빈 행이다. 빈 행은 실행되지 않고 다음 행으로 넘어간다. 빈 행도 사람이 프로그램을 읽기 쉽도록 할 때 사용된다. 글쓰기에서 의미상 구분이 필요할 때 단락을 나누는 것과 비슷하다.

3번과 6번 행에는 print() 함수가 사용되었다. print() 함수는 괄호 안의 내용을 화면에 출력할 때 사용한다. 텍스트를 출력할 때는 '당신의 이름은 무엇인가요?'와 같이 글자를 따옴표(')로 감싸주어야 한다. 따옴표는 다른 프로그램 코드와 텍스트를 구별하기 위한 것이다. 그래서 따옴표 자체는 출력되지 않는다.

4번 행에는 input() 함수가 사용되었다. input() 함수는 사용자에게서 키보드로 텍스트를 입력 받을 때 사용한다. 사용자가 입력한 데이터는 name이라는 변수에 대입되었다. 변수와 대입에 대해서는 2장에서 설명할 것이다.

이제 프로그램을 다시 한 번 실행해 보면 프로그램의 실행 과정이 약간 이해될 것이다.

파이썬 프로그래밍 실습을 할 때 print() 함수를 잘 활용해야 한다. 이 함수를 사용하지 않으면 계산을 잘 했더라도 결과를 출력하지 못할 것이다.

이제 첫 번째 프로그램은 다 실습했다. 프로그램 편집기 탭의 first_program.py에서 X 버튼을 눌러 파일을 닫아 두자.

그림 1-36 편집을 마친 파일 닫기

그림 1-36 편집을 마친 파일 닫기

알아 두기

  • print() 함수: 화면에 데이터를 출력할 때 사용하는 명령
  • input() 함수: 사용자에게서 데이터를 입력 받을 때 사용하는 명령

‘함수’는 3장에서 자세히 배운다. 지금은 정해진 기능을 실행해주는 일종의 명령어라고 받아들이자.

1.3.4 대화식 셸 사용하기

파이썬 프로그램 파일을 작성하고 실행시키는 과정이 그렇게 어렵지는 않았을 것이다. 하지만 파이썬을 학습하는 과정에서 수많은 예제를 실행해 볼 텐데, 간단한 예제 하나 하나를 실행할 때마다 파일을 만들어야 한다면 불편하지 않을까? 그런 의문이 들었다면 대화식 셸을 만나볼 때다.

대화식 셸은 파이썬 프로그램 파일을 직접 만들지 않고도 간단한 파이썬 코드를 실행해 볼 수 있는 도구다. 대화식 셸에 파이썬 코드 한 행을 입력하면 마치 메신저로 채팅을 하는 것처럼 대화식 셸이 코드의 실행 결과를 출력해 준다.

파이참에서 대화식 셸을 사용하려면 파이참 상단 메뉴에서 ‘Tools -> Python Console…’ 을 클릭한다.

그림 1-37 대화식 셸 실행하기

그림 1-37 대화식 셸 실행하기

그러면 앞서 프로그램을 실행했을 때와 마찬가지로, 파이참 화면 아래쪽에 콘솔 탭이 열린다. >>> 이라는 기호(프롬프트)가 나오고 커서가 깜빡일 것이다. 여기에 원하는 파이썬 코드를 입력하여 바로 실행할 수 있다.

그림 1-38 대화식 셸

그림 1-38 대화식 셸

대화식 셸에 print(1234 + 5678) 이라고 입력해 보자. 입력한 식의 계산 결과가 아래 그림과 같이 6912하고 출력될 것이다. 이처럼 대화식 셸은 파이썬 코드가 한 행 입력될 때마다 바로 그 코드를 실행한다. 프로그램을 작성하고 실행하는 과정을 거치지 않고 바로 결과를 확인할 수 있어 편리하다.

그림 1-39 대화식 셸에서 코드 실행하기

그림 1-39 대화식 셸에서 코드 실행하기

또 한가지 중요한 점이 있다. 대화식 셸에는 print() 함수를 사용하지 않아도 코드의 실행 결과가 저절로 화면에 출력된다. print() 없이 1234 + 5678만 입력해 보면 확인할 수 있다.

그림 1-40 대화식 셸은 print() 함수 없이도 결과를 출력한다

그림 1-40 대화식 셸은 print() 함수 없이도 결과를 출력한다

이처럼 몇 행 안되는 파이썬 코드의 실행 결과가 궁금할 때는 대화식 셸을 이용하면 된다. 프로그램 파일을 작성하는 도중에도 대화식 셸을 열어 활용할 수 있다. 대화식 셸은 파이썬 프로그래머들이 애용하는 편리한 도구다.

  • 대화식 셸: 파이썬 코드의 실행 결과가 궁금할 때는 대화식 셸에 입력해 보자!

help 함수

이 책을 학습하면서 print(), input()과 같은 함수들을 많이 접하게 될 것이다. 이런 함수들의 사용법을 다 외우기는 어렵지 않을까? 파이썬 프로그래밍을 하는 중 함수의 사용법이 잘 기억나지 않으면 help() 함수로 도움말을 볼 수 있다. 대화식 셸에서 help() 함수에 알고 싶은 함수의 이름을 적어 실행하면 된다. 예를 들어, help(print)라고 입력하면 print() 함수의 사용법을 볼 수 있다.

코드 1-5 help() 함수로 print() 함수 도움말 보기

>>> help(print)
Help on built-in function print in module builtins:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

도움말이 영어로 출력되는 점은 아쉽지만, 파이썬 실습 도중 빠르게 찾아볼 수 있어 편리한 help() 함수를 기억해두자.

  • help() 함수: 파이썬 함수의 사용법이 궁금할 때 help(함수이름)을 실행하여 도움말을 볼 수 있다.

1.3.5 프로그램 실습 과정

첫 프로그램을 만들어 본 경험에 비춰, 프로그램 실습 과정을 정리해 보자.

  1. 파이참을 실행한다.
  2. 각 장마다 chapter 디렉터리를 만든다.
  3. 실습할 파이썬 파일을 만든다.
  4. 파일에 프로그램 코드를 작성한다.
  5. 프로그램을 작성하는 도중 코드의 실행 결과가 궁금할 때는 대화식 셸에 입력해 본다.
  6. 함수의 이름을 알 때, 함수의 사용법을 보고 싶으면 help() 함수를 사용한다.
  7. 작성한 프로그램을 실행해 본다.
  8. 오류가 발생한 경우 4로 돌아가 오류를 수정한다.
  9. 프로그램의 실행 결과가 만족스러울 때까지 4로 돌아가 프로그램을 개선한다.
  10. 완성!

앞으로 이 책의 내용을 실습하거나 연습문제를 풀 때는 이 과정을 따르면 된다.