소개 | 파이썬 프로그래밍 기초
목차 · 프로그래밍 시작하기. 프로그래밍 기본 요소: 변수, 표현식, 명령문 (참고자료: Think Python) · 인터넷에서 정보 구하기 · 코드 추상화: 함수 · 데이터셋 다루기.
소개 \| 파이썬 프로그래밍 기초

# 파이썬 프로그래밍 기초

파이썬 프로그래밍 원리 기초 학습자료 모음집

- [View On GitHub](https://github.com/liganega/ProgInPython)

This project is maintained by [liganega](https://github.com/liganega)

## 소개

“컴퓨터 프로그래밍을 어떻게 하는가?”,
즉, 프로그래밍을 통해 컴퓨터를 제어하고, 원하는 기능을 갖춘 다양한 애플리케이션을 만드는 방법을 전달합니다.
프로그래밍 도구로 **파이썬(Python)** 언어를 사용합니다.
파이썬 언어는 다루기 쉬우며, 세계에서 가장 많이 사용되는 프로그래밍 언어 중 하나입니다.
프로그래밍 언어들의 인기도를 측정하는
[TIOBE Index](https://www.tiobe.com/tiobe-index/) 에서
파이썬의 위력을 확인할 수 있습니다.

### 강의 동영상

- [강의 동영상](https://www.youtube.com/playlist?list=PL5aSjzJqCaPY0Nyu_hUVU8_HhBARlgP-f) 을
따라하며 공부할 수 있습니다.
강의 동영상은
[깃허브(Github)의 주피터 노트북](https://github.com/liganega/ProgInPython) 을
이용하여 설명하지만, 내용은 아래 강의노트의 그것과 동일합니다.
- Think Python 참고자료 내용은 강의노트에서 다루는 파이썬 프로그래밍의 기본요소들에 대한 추가 설명자료이며
강의 동영상에는 포함되지 않습니다.

## 목차

01. [프로그래밍 시작하기](/ProgInPython/notebooks/PiPy01A-ProgrammingStart.html)
    - 프로그래밍 기본 요소: 변수, 표현식, 명령문
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy01B-Variables_Expressions_Commands.html))
02. [인터넷에서 정보 구하기](/ProgInPython/notebooks/PiPy02A-InfoFromInternet.html)
    - 기본 자료형: 문자열
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy02B-Strings.html))
    - 프로그래밍 기본 요소: 문자열과 반복문
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy02C-StringsAndLoops.html))
03. [코드 추상화: 함수](/ProgInPython/notebooks/PiPy03A-FunctionAbstraction.html)
    - 프로그래밍 기본 요소: 함수
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy03B-Functions.html))
04. [데이터셋 다루기](/ProgInPython/notebooks/PiPy04A-DataSets.html)
    - 기본 자료형: 파일
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy04B-Files.html))
    - 기본 자료형: 리스트
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy04C-Lists.html))
    - 프로그래밍 기본 요소: 오류와 예외처리
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy04D-ErrorsAndExceptions.html))
05. [연관배열 활용](/ProgInPython/notebooks/PiPy05A-AssociativeArrays.html)
    - 기본 자료형: 튜플
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy05B-Tuples.html))
    - 기본 자료형: 집합과 사전
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy05C-SetsAndDictionaries.html))
06. [코드 추상화: 모듈](/ProgInPython/notebooks/PiPy06A-ModularProgramming.html)
    - 프로그래밍 기본 요소: 모듈과 패키지
       (참고자료: [Think Python](/ProgInPython/notebooks/PiPy06B-ModulesAndPackages.html))
07. [객체 지향 프로그래밍: 소개](/ProgInPython/notebooks/PiPy07-OOP_Introduction.html)
    - 객체지향 프로그래밍(OOP) 정의
    - OOP와 객체 활용: 거북이(turtle) 그래픽
08. [코드 추상화: 클래스와 객체 1부](/ProgInPython/notebooks/PiPy08-ClassesAndInstances_Part1.html)
    - 클래스와 자료형
    - 속성과 메서드: 인스턴스/클래스 속성
09. [코드 추상화: 클래스와 객체 2부](/ProgInPython/notebooks/PiPy09-ClassesAndInstances_Part2.html)
    - 클래스 장식자
    - 클래스 메서드, 정적 메서드, 매직 메서드
10. [객체 지향 프로그래밍: 상속과 구성](/ProgInPython/notebooks/PiPy10-OOP_InheritanceAndComposition.html)
    - 클래스 상속
    - OOP와 구성(디자인 패턴): 추상/구상 클래스
11. [객체 지향 프로그래밍: GUI 프로그래밍 소개](/ProgInPython/notebooks/PiPy11-OOP_GUI-Programming_Introduction.html)
    - GUI 활용: tkinter 모듈
    - GUI 애플리케이션 구현 요소
12. [객체 지향 프로그래밍: 이벤트와 콜백](/ProgInPython/notebooks/PiPy12-OOP_EventsAndCallbacks.html)
    - 이벤트, 콜백, 람다 함수
    - GUI 애플리케이션 예제: 계산기
13. [객체 지향 프로그래밍: 게임 프로그래밍 안내](/ProgInPython/notebooks/PiPy13-OOP_GameProgramming_Introduction.html)
    - 파이썬 게임 프로그래밍 관련 정보 안내
    - pygame, turtle 등을 활용한 게임 프로그래밍 안내

## 프로그래밍 환경

컴퓨터 프로그래밍을 하려면 개발환경을 준비해야 하며, 두 가지 방식이 있습니다.

1. 온라인 프로그래밍 환경: 아래 두 가지 방식 중에 하나 선택 추천
   - [레플릿(Repl.it)](https://repl.it)
     - 강의 동영상에서 사용됨.
     - 참조: [레플릿(Repl.it)에서 파이썬 프로그래밍 하기](https://www.youtube.com/watch?v=dWtCVbuwC_c&list=PL5aSjzJqCaPY0Nyu_hUVU8_HhBARlgP-f&index=3&t=571s)
   - [구글 코랩(Google Colab)](https://colab.research.google.com/github/liganega/ProgInPython/blob/master/) [![Open in Colab](openInColab.png)](https://colab.research.google.com/github/liganega/ProgInPython/blob/master/)
     - 강의노트에 사용된 주피터 노트북을 직접 실행하면서 공부할 수 있음.
     - 참조: [구글 코랩(Google Colab)에서 파이썬 프로그래밍 하기](https://www.youtube.com/watch?v=UTc3D_mQm8E&t=747s)
2. 오프라인 프로그래밍 환경
   - 추천 환경: 파이썬 \+ Visual Studio Code
   - 참고 사이트
     - [Visual Studio Code를 사용하여 Python 프로그래밍 환경 만들기](https://www.youtube.com/watch?v=e4n2VnhiI28)
     - [초보자를 위한 Windows에서 Python 사용 시작](https://docs.microsoft.com/ko-kr/windows/python/beginners)

## 참고도서

- [Head First Programming](http://m.hanbit.co.kr/store/books/book_view.html?p_code=B3578815816):
프로그래밍의 기초 원리 및 계산적 사고 학습
- [Think Python](http://greenteapress.com/wp/think-python-2e/):
파이썬 프로그래밍 언어 기초 학습

  - 온라인 한글 번역: [Think Python](https://www.flowdas.com/thinkpython/index.html#thinkpython),
     번역 [flowdas](https://www.flowdas.com)
  - 번역서: [씽크 파이썬](https://www.gilbut.co.kr/book/view?bookcode=BN001838&perdevice=pc), 출판사 길벗

## 공부 더하기: 게임 프로그래밍

OOP가 가장 많이 활용되는 분야 중 하나가 게임 프로그래밍 분야입니다.
파이썬은 OOP 언어이며 게임 프로그래밍의 필수 요소인 GUI를
매우 간단하게 구현하는 기능을 제공합니다.
파이썬으로 게임 프로그래밍의 맛을 보면서 매우 효율적으로 프로그래밍 실력을 향상시킬 수 있습니다.
하지만 프로그래밍의 기초를 잘 다졌다 하더라도 게임 프로그래밍을 위해
무엇을 어떻게 시작해야 하는가는 따로 배워야 합니다.
이를 위해 유튜버 나도코딩의 파이썬
[파이썬 초보 강의](https://www.youtube.com/watch?v=kWiCuklohdY&list=PLMsa_0kAjjrd8hYYCwbAuDsXZmHpqHvlV)
시리즈를 추천합니다.

주의사항: 나도코딩의 동영상이 매우 간단한 내용부터 설명하지만
뒤로 갈수록 초보자가 바로 따라가기엔 어려운 코드를 사용합니다.
따라서 이곳에서 제공한 강의노트를 먼저 학습할 것을 권장하며,
그러면 나도코딩의 동영상에서 구현되는 많은 코드를 보다 체계적으로 이해할 수 있을 것입니다.

### 게임 프로그래밍 교재

파이썬 게임 로그래밍을 체계적으로 설명한 책으로
[Python과 Pygame으로 게임 만들기](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788956746159&orderClick=LAG&Kc=) 또는
[나만의 Python Game 만들기](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788956746166&orderClick=LOA&Kc=) 를
추천합니다.
번역서를 구입할 수도 있고, 아니면 원서를 온라인 상에서 무료로 읽을 수도 있습니다.

- [Making Games with Python & Pygame](http://inventwithpython.com/pygame/)
- [Invent Your Own Computer Games with Python](http://inventwithpython.com/invent4thed/)

### 실전게임 프로그래밍 동영상

유튜브 상에서 많은 이들이 게임 로그래밍을 방송합니다.
가장 활발하게 활동하는 이들 중에 한 명은
[TokyoEdtech](https://www.youtube.com/channel/UC2vm-0XX5RkWCXWwtBZGOXg) 이며
게임 로그래밍의 기초기술부터 고급기술까지 차근차근 설명하면서 방송을 진행합니다.
[Python과 Pygame으로 게임 만들기](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788956746159&orderClick=LAG&Kc=) 또는
[나만의 Python Game 만들기](http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788956746166&orderClick=LOA&Kc=) 를
먼저 공부한 후에 좀 오래된 동영상부터 보면 어렵지 않게 따라갈 수 있을 것입니다.

Hosted on [GitHub Pages](https://pages.github.com) using the Dinky theme