길벗·이지톡

도서 IT 전문서 프로그래밍/오픈소스

7개의 프로젝트로 배우자! 파이썬의 기본 문법부터 프로젝트를 해결해 나가는 방법까지!

최신 파이썬 버전으로 기본 문법을 하나하나 배워 나가며 7개의 프로젝트를 만들어 본다. 프로젝트를 작성하면서 프로그래밍으로 사용자와 상호작용하는 법, 프로그램으로 의사 결정을 내리는 법, 코드를 재사용하는 법, 원하는 대로 객체를 만드는 법, 라이브러리를 사용해 프로그램을 개선하는 법 등을 배울 수 있다. 이는 곧 파이썬을 사용하는 방법, 프로그래머 답게 생각하는 방법, 주어진 프로젝트를 해결해 나가는 방법으로 이어진다. 이와 같은 과정을 통해 이 책은 최종적으로 프로그래밍에 필요한 사고방식, 개념, 통찰을 배울 수 있도록 이끌어 줄 것이다.

  

파이썬을 몰라도 할 수 있다!

파이썬의 기초, 즉 변수, 타입, , 문자열, 튜플, 반복문, if 문 등을 먼저 차근차근 설명한다. 처음 접하는 개념을 쉽게 이해할 수 있도록 일상 예를 들어 설명하고 프로그래머처럼 생각하기’, ‘생각해 보자’, ‘셀프 체크같은 코너를 곳곳에 마련해 놓았다. 기초를 배운 뒤에는 블록 단위로 체계화하여 코드를 재사용하거나 리스트 고급 연산, 객체 지향 프로그래밍, 라이브러리를 사용해 프로그램을 개선하는 등 파이썬을 효율적으로 사용하는 방법을 배운다. 기초를 탄탄히 다지고, 초급을 졸업할 정도의 수준까지 이끌어 주는 책이다.

목차

0부 프로그래밍 방법 배우기

1장 왜 프로그래밍을 꼭 배워야 할까?

__1.1 프로그래밍이 중요한 이유는?

____1.1.1 프로그래밍은 전문가용이 아니다

____1.1.2 삶을 개선하라

____1.1.3 직접 도전하라

__1.2 알고 있어야 하는 내용과 이 책에서 배울 내용

__1.3 프로그래밍 학습 계획

____1.3.1 첫걸음을 떼자

____1.3.2 연습하고, 연습하고, 연습하고, 연습하라

____1.3.3 프로그래머처럼 생각하라

__1.4 요약

 

2장 프로그래밍 언어를 배우는 기본 원리

__2.1 프로그래밍이라는 기술

__2.2 빵 굽기와 프로그래밍의 유사성

____2.2.1 ‘빵 하나 굽기라는 목표 이해하기

____2.2.2 레시피 찾기

____2.2.3 흐름도로 레시피를 시각화하기

____2.2.4 기존 레시피를 사용할 것인가 새로운 레시피를 만들 것인가?

__2.3 생각하고 코딩하고 테스트하고 디버깅하기를 반복하기

____2.3.1 목표 이해하기

____2.3.2 목표 시각화하기

____2.3.3 의사 코드 작성하기

__2.4 읽기 쉬운 코드 작성하기

____2.4.1 의미 있고 서술적인 이름 붙이기

____2.4.2 코드에 주석 달기

__2.5 요약

 

1부 변수, 타입, ,

3장 파이썬 프로그래밍 언어 소개

__3.1 파이썬 설치하기

____3.1.1 파이썬이란 무엇인가?

____3.1.2 파이썬 버전 3.7.1 다운로드

____3.1.3 아나콘다 파이썬 배포판

____3.1.4 통합 개발 환경

__3.2 작업 공간 설정하기

____3.2.1 아이파이썬 콘솔

____3.2.2 파일 에디터

__3.3 요약

 

4장 변수와 식: 사물에 이름과 값 부여하기

__4.1 사물에 이름 붙이기

____4.1.1 수학과 프로그래밍 비교

____4.1.2 컴퓨터가 할 수 있는 일과 할 수 없는 일

__4.2 변수 소개

____4.2.1 객체는 조작할 수 있는 사물이다

____4.2.2 객체에는 이름이 있다

____4.2.3 객체 이름으로 사용할 수 있는 것은?

____4.2.4 변수 만들기

____4.2.5 변수 변경하기

__4.3 요약

 

5장 객체 타입과 코드 명령

__5.1 사물의 타입

__5.2 프로그래밍에서 객체의 기본 타입

____5.2.1 정수를 표현하는 int 타입

____5.2.2 소수를 표현하는 float 타입

____5.2.3 /거짓 데이터를 표현하는 bool 타입

____5.2.4 문자열을 나타내는 str 타입

____5.2.5 값이 없음을 표현하기

__5.3 기본 타입의 데이터 값 활용하기

____5.3.1 식 블록 만들기

____5.3.2 어떤 타입의 값을 다른 타입의 값으로 변환하기

____5.3.3 산술 연산이 객체 타입에 미치는 영향

__5.4 요약

 

6장 진급 프로젝트: 첫 번째 파이썬 프로그램 - 분을 시간으로 변환하기

프로젝트 문제

__6.1 생각-코딩-테스트-디버깅-반복

__6.2 작업 나누기

____6.2.1 입력을 정하는 코드

____6.2.2 출력을 정하는 코드

__6.3 변환 공식 구현하기

____6.3.1 몇 시간인지 계산하기

____6.3.2 몇 분인지 계산하기

__6.4 첫 번째 프로그램: 방법 1

__6.5 첫 번째 프로그램: 방법 2

__6.6 요약

 

2부 문자열, 튜플, 사용자 상호작용

7장 문자열 객체 소개: 문자의 순서열

__7.1 문자의 순서열인 문자열

__7.2 문자열에 대한 기본 연산

____7.2.1 문자열 객체 만들기

____7.2.2 문자열의 인덱스 이해하기

____7.2.3 문자열 슬라이스 이해하기

__7.3 문자열에 대한 다른 연산

____7.3.1 len( )으로 문자열 안의 문자 개수 알아내기

____7.3.2 upper( )lower( )로 대문자 소문자 변경하기

__7.4 요약

 

8장 고급 문자열 연산

__8.1 부분 문자열 관련 연산

____8.1.1 find( )로 문자열에서 부분 문자열 검색하기

____8.1.2 어떤 문자열이 다른 문자열의 부분 문자열인지 알아내는 in

____8.1.3 부분 문자열의 빈도를 구하는 count( )

____8.1.4 replace( )로 부분 문자열 바꾸기

__8.2 수학 연산

__8.3 요약

 

9장 간단한 오류 메시지들

__9.1 문장을 입력하고 어떤 결과가 나타나는지 시험해 보기

__9.2 문자열 오류 메시지 이해하기

__9.3 요약

 

10장 튜플 객체: 여러 종류의 객체를 모아둔 시퀀스

__10.1 데이터의 시퀀스인 튜플

____10.1.1 튜플 객체 만들기

__10.2 튜플에 대한 연산 이해하기

____10.2.1 len( )으로 튜플 길이 얻기

____10.2.2 [ ]와 인덱스를 사용해 튜플의 원소를 가져오거나 슬라이스 얻기

____10.2.3 수학 연산 수행하기

____10.2.4 튜플 안의 객체 서로 맞바꾸기

__10.3 요약

 

11장 사용자 상호작용

__11.1 출력 보여주기

____11.1.1 식 출력하기

____11.1.2 여러 값 출력하기

__11.2 사용자 입력 받기

____11.2.1 프롬프트를 표시해서 입력 요청하기

____11.2.2 입력 읽기

____11.2.3 입력을 변수에 저장하기

____11.2.4 사용자 입력을 다른 타입으로 변환하기

____11.2.5 더 많은 입력 요청하기

__11.3 요약

 

12장 진급 프로젝트: 이름 매시업

프로젝트 문제

__12.1 문제에 대한 설명 이해하기

____12.1.1 문제를 그림으로 표현하기

____12.1.2 몇 가지 예제 만들기

____12.1.3 문제를 의사 코드로 추상화하기

__12.2 이름과 성 분리하기

____12.2.1 성과 이름 사이의 공백 찾기

____12.2.2 변수를 사용해 계산 결과 값 저장하기

____12.2.3 지금까지 진행한 일 테스트하기

__12.3 성과 이름을 반으로 나눠 각각 저장하기

____12.3.1 이름의 중간 지점 찾기

__12.4 절반의 이름들 조합하기

__12.5 요약

 

3부 프로그램 안에서 의사 결정 내리기

13장 프로그램에 의사 결정 도입하기

__13.1 조건문으로 의사 결정 내리기

____13.1.1 /아니오를 묻는 질문과 참/거짓인 문장

____13.1.2 문장에 조건 추가하기

__13.2 코드로 의사 결정 내리기

____13.2.1 의사 결정을 코드화하기: 예제

____13.2.2 의사 결정을 코드화하기: 일반적인 방법

__13.3 프로그램의 구조 잡기

____13.3.1 조건문 여러 개 사용하기

____13.3.2 의사 결정의 결과에 따라 새로운 의사 결정 내리기

____13.3.3 내포 조건문을 사용하는 더 복잡한 예제

__13.4 요약

 

14장 더 복잡한 의사 결정 내리기

__14.1 여러 조건 조합하기

____14.1.1 조건은 참/거짓 값으로 계산되는 조건식

____14.1.2 연산자 우선순위 규칙

__14.2 코드의 어떤 부분을 실행할지 선택하기

____14.2.1 이 일을 하거나 저 일을 하거나

____14.2.2 함께 사용하기

____14.2.3 코드 블록 측면에서 생각하기

__14.3 요약

 

15장 진급 프로젝트: 게임북 본뜬 게임 만들기

프로젝트 문제

__15.1 게임 규칙 소개

__15.2 여러 다른 경로 만들기

__15.3 더 많은 선택? 좋지요!

__15.4 요약

 

4부 작업 반복하기

16장 루프로 같은 작업 반복하기

__16.1 작업 반복하기

____16.1.1 프로그램에 비선형성 추가하기

____16.1.2 무한 반복

__16.2 정해준 횟수 동안 반복하기

____16.2.1 for 루프

__16.3 N번 반복하기

____16.3.1 0부터 N-1까지 수로 이뤄진 시퀀스에 대해 루프 돌기

____16.3.2 루프 펼치기

__16.4 요약

 

17장 루프 주무르기

__17.1 원하는 대로 루프 돌기

__17.2 문자열에 대해 루프 돌기

__17.3 요약

 

18장 조건이 성립하는 동안 반복하기

__18.1 조건이 참인 동안에만 루프 반복하기

____18.1.1 추측을 위해 루프 돌기

____18.1.2 while 루프

____18.1.3 무한 루프

__18.2 for 루프와 while 루프 비교

__18.3 루프 주무르기

____18.3.1 루프를 빨리 끝내기

____18.3.2 루프를 시작하는 부분으로 돌아가기

__18.4 요약

 

19장 진급 프로젝트: 스크래블:아트 단어 게임

프로젝트 문제

__19.1 문제 이해하기

____19.1.1 올바른 단어 목록의 표현 방식 바꾸기

____19.1.2 주어진 타일로 올바른 단어 만들기

__19.2 코드를 여러 부분으로 나누기

__19.3 요약

 

5부 재사용 가능한 블록 단위로 코드를 체계화하기

20장 오래 사용할 수 있는 프로그램 만들기

__20.1 큰 작업을 더 작은 작업들로 나누기

____20.1.1 온라인으로 상품 주문하기

____20.1.2 핵심 이해하기

__20.2 프로그래밍에 블랙박스 도입하기

____20.2.1 코드 모듈 사용하기

____20.2.2 코드 추상화하기

____20.2.3 코드 재사용

__20.3 자신만의 환경에서 존재하는 하위 작업들

__20.4 요약

 

21장 함수로 모듈화와 추상화하기

__21.1 함수 작성하기

____21.1.1 함수 기초: 함수 입력

____21.1.2 함수 기초: 함수가 하는 일

____21.1.3 함수 기초: 함수가 반환하는 값

__21.2 함수 사용하기

____21.2.1 둘 이상의 값 반환하기

____21.2.2 return 문이 없는 함수

__21.3 함수 문서화하기

__21.4 요약

 

22장 고급 함수 연산

__22.1 함수를 두 가지 관점에서 살펴보기

____22.1.1 작성자 관점

____22.1.2 사용자 관점

__22.2 함수 영역

____22.2.1 간단한 영역 규칙

____22.2.2 영역 규칙

__22.3 내포 함수

__22.4 함수를 매개변수로 넘기기

__22.5 함수 반환하기

__22.6 요약

 

23장 진급 프로젝트: 친구 분석

프로젝트 문제

__23.1 파일 읽기

____23.1.1 파일 형식

____23.1.2 새줄 문자

____23.1.3 새줄 문자 제거하기

____23.1.4 정보를 저장하기 위해 튜플 사용하기

____23.1.5 반환할 값

__23.2 사용자 입력 정리하기

__23.3 지금까지 만든 코드 테스트 및 디버깅하기

____23.3.1 파일 객체

____23.3.2 이름과 전화번호가 들어 있는 텍스트 파일 만들기

____23.3.3 파일을 열어서 읽기

__23.4 함수 재사용하기

__23.5 정보 분석하기

____23.5.1 명세

____23.5.2 도우미 함수

__23.6 요약

 

6부 변경 가능한 데이터 타입 다루기

24장 변경 가능한 객체와 변경 불가능한 객체

__24.1 변경 불가능한 객체

__24.2 변경 가능성이 필요한 이유

__24.3 요약

 

25장 리스트 다루기

__25.1 리스트와 튜플 비교

__25.2 리스트를 만들고 특정 위치에 있는 원소 가져오기

__25.3 원소 반복 횟수 세기 및 원소 위치 찾기

__25.4 리스트에 원소 추가하기: append, insert, extend

____25.4.1 append 사용하기

____25.4.2 insert 사용하기

____25.4.3 extend 사용하기

__25.5 리스트에서 원소 제거하기: pop

__25.6 원소 값 변경하기

__25.7 요약

 

26장 리스트 고급 연산

__26.1 리스트 정렬 및 원소 순서 거꾸로 하기

__26.2 리스트의 리스트

__26.3 문자열을 리스트로 변환하기

__26.4 리스트 응용

____26.4.1 스택

____26.4.2

__26.5 요약

 

27장 객체 사이의 맵인 사전

__27.1 사전, , 값 만들기

__27.2 사전에 키-값 쌍 추가하기

____27.2.1 키 값 제약에 대한 부연 설명

__27.3 사전에서 키-값 쌍 제거하기

__27.4 사전의 키와 값을 모두 가져오기

____27.4.1 사전에 저장된 키-값 쌍의 순서

__27.5 사전을 사용해야 하는 경우는?

____27.5.1 빈도수를 사전으로 유지하기

____27.5.2 일반적이지 않은 사전 만들기

__27.6 요약

 

28장 리스트와 사전 별명 붙이기와 복사하기

__28.1 객체의 별명 사용하기

____28.1.1 불변 객체에 대한 별명

____28.1.2 변경 가능한 객체에 대한 별명

____28.1.3 함수 매개변수로 변경 가능한 객체 전달하기

__28.2 변경 가능한 객체의 복사본 만들기

____28.2.1 변경 가능한 객체를 복사하는 명령들

____28.2.2 리스트 원소를 정렬한 복사본 만들기

____28.2.3 변경 가능 객체에 대한 이터레이션을 수행할 때 조심할 점

____28.2.4 별명이 존재하면 어떻게 해야 할까?

__28.3 요약

 

29장 진급 프로젝트: 문서 유사성 분석

프로젝트 문제

__29.1 문제를 하위 작업으로 나누기

__29.2 파일 정보 읽기

__29.3 파일에 있는 모든 단어 저장하기

__29.4 단어의 빈도 구하기

__29.5 유사도 점수를 사용해 두 문서 비교하기

__29.6 하나로 합치기

__29.7 이 프로그램을 확장할 방법 한 가지

__29.8 요약

 

7부 객체 지향 프로그래밍을 사용해 원하는 대로 객체 만들기

30장 직접 객체 타입 정의하기

__30.1 새로운 객체 타입이 필요한 이유는?

__30.2 객체를 이루는 것은 무엇인가?

____30.2.1 객체의 프로퍼티

____30.2.2 객체의 동작

__30.3 마침표 표기법 사용하기

__30.4 요약

 

31장 객체의 타입을 표현하는 클래스 만들기

__31.1 클래스를 사용해 새로운 객체 타입 구현하기

__31.2 데이터 속성을 나타내는 객체 프로퍼티

____31.2.1 객체를 __init__으로 초기화하기

____31.2.2 __init__ 내부에서 객체 프로퍼티 만들기

__31.3 객체의 동작과 연산인 메서드

__31.4 직접 정의한 객체 타입 사용하기

__31.5 매개변수를 받는 __init__을 사용해 클래스 만들기

__31.6 객체가 아닌 클래스 이름에 마침표 표기를 사용하는 경우

__31.7 요약

 

32장 직접 만든 객체 타입 사용하기

__32.1 스택 객체 정의하기

____32.1.1 데이터 속성 선택하기

____32.1.2 메서드 구현하기

__32.2 Stack 객체 사용하기

____32.2.1 부침개 스택 만들기

____32.2.2 원으로 이뤄진 스택 만들기

__32.3 요약

 

33장 원하는 대로 클래스 바꾸기

__33.1 특수 메서드 오버라이드하기

__33.2 str( ) 오버라이드하여 print( )가 객체를 출력하는 방법 변경

__33.3 내부적으로 벌어지는 일들

__33.4 클래스로 할 수 있는 일은 무엇인가?

____33.4.1 이벤트 스케줄링

__33.5 요약

 

34장 진급 프로젝트: 카드 게임

프로젝트 문제

__34.1 기존 클래스 사용하기

__34.2 워 게임 상세 규칙

__34.3 Player 클래스 정의하기

__34.4 CardDeck 클래스 정의하기

__34.5 카드 게임 시뮬레이션하기

____34.5.1 객체 초기화하기

____34.5.2 게임의 각 라운드 시뮬레이션하기

__34.6 클래스를 사용한 모듈화와 추상화

__34.7 요약

 

8부 라이브러리를 사용해 프로그램 개선하기

35장 유용한 라이브러리

__35.1 라이브러리 임포트하기

__35.2 math 라이브러리로 수학 연산 사용하기

__35.3 random 라이브러리를 사용해 난수 활용하기

____35.3.1 리스트 임의로 뒤섞기

____35.3.2 확률 게임 시뮬레이션하기

____35.3.3 시드를 사용해 똑같은 난수 결과를 다시 만들어내기

__35.4 time 라이브러리를 사용해 프로그램 실행에 걸리는 시간 측정하기

____35.4.1 클럭 사용하기

____35.4.2 프로그램 일시 중단하기

__35.5 요약

 

36장 프로그램 테스트 및 디버깅하기

__36.1 unittest 라이브러리 사용하기

__36.2 프로그램과 테스트 분리하기

____36.2.1 검사 유형

__36.3 작성한 코드 디버깅하기

____36.3.1 코드를 한 단계씩 쫓아갈 때 도움이 되는 도구 사용하기

__36.4 요약

 

37장 그래픽 사용자 인터페이스를 위한 라이브러리

__37.1 그래픽 사용자 인터페이스를 위한 라이브러리

__37.2 tkinter 라이브러리를 사용해 프로그램 설정하기

__37.3 위젯 추가하기

__37.4 이벤트 핸들러 추가하기

__37.5 요약

 

38장 진급 프로젝트: 태그 게임

프로젝트 문제

__38.1 문제 구성 요소 찾기

__38.2 창에 두 가지 모양 만들기

__38.3 캔버스 안에서 모양 움직이기

__38.4 두 모양 사이의 충돌 검출하기

__38.5 개선할 수 있는 부분

__38.6 요약

 

부록 A 연습 문제 해답

부록 B 파이썬 치트 시트

부록 C 흥미로운 파이썬 라이브러리

 

찾아보기  

더보기접기

저자

ㆍ지은이 아나 벨

저자소개

매사추세츠 공과대학(MIT)의 전자전산학과 강사로 재직 중이다. 지난 5년간 파이썬을 사용하는 기초 컴퓨터 과학 과목 두 가지를 진행해 왔다. 하나는 프로그래밍 경험이 없는 학생을 대상으로 하고, 또 하나는 앞의 과목을 들은 학생을 위한 심화 강의다. 사람들에게 프로그래밍을 알리는 것과 사람들이 프로그래밍을 배우면서 점점 자신감을 키워가는 모습을 좋아한다. 같은 개념을 다른 여러 가지 방법으로 설명하고 학생들이 어느 순간 그 개념을 ‘아하!’하고 깨닫는 모습을 보면서 엄청난 보람을 느낀다. 

저서

<모던 파이썬 입문>


ㆍ옮긴이 오현석

저자소개

KAIST에서 전산학 학사와 석사 학위(프로그래밍 언어 연구실)를 취득했다. 삼성 메디슨, 비트앤펄스 등에서 UI 개발자와 개발 팀장을 지냈고, 현재 호주 브리즈번 JNF SOFT에서 소프트웨어 개발자 및 컨설턴트로 일하면서 최근에는 블록 관련 기반기술 연구개발과 블록체인을 활용한 서비스 개발에 참여하고 있다. 함수형 프로그래밍을 활용해 오류 발생 가능성이 적으면서 유지보수가 편한 프로그램을 작성하는 방법과 이를 지원하는 여러 도구를 만드는 일에 관심이 많다. 『PROGRAMMING IN SCALA 3/E』(에이콘, 2017), 『아카 코딩 공작소』(길 벗, 2017), 『러닝 리액트』(한빛미디어, 2018), 『엔터프라이즈 자바 마이크로서비스』(한빛미디어, 2019) 등 20여 권의 책을 번역했다. 

보도자료

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.