이미 소장하고 있다면 판매해 보세요.
|
1장 프로그램의 길
__1.1 프로그램은 무엇인가? __1.2 파이썬 실행하기 __1.3 첫 번째 프로그램 __1.4 산술 연산자 __1.5 값과 타입 __1.6 형식 언어와 자연 언어 __1.7 디버깅 __1.8 용어 __1.9 연습문제 2장 변수, 표현식, 문장 __2.1 할당문 __2.2 변수 이름 __2.3 표현식과 문장 __2.4 스크립트 모드 __2.5 연산 순서 __2.6 문자열 연산 __2.7 주석 __2.8 디버깅 __2.9 용어 __2.10 연습문제 3장 함수 __3.1 함수 호출 __3.2 수학 함수 __3.3 조합 __3.4 새 함수를 추가하기 __3.5 정의와 사용 __3.6 실행 흐름 __3.7 인자와 인수 __3.8 변수와 인자는 지역 범위다 __3.9 스택 다이어그램 __3.10 결과가 있는 함수와 없는 함수 __3.11 왜 함수인가? __3.12 디버깅 __3.13 용어 __3.14 연습문제 4장 사례 연구: 인터페이스 디자인 __4.1 turtle 모듈 __4.2 단순 반복 __4.3 연습문제 __4.4 캡슐화 __4.5 일반화 __4.6 인터페이스 디자인 __4.7 리팩터링 __4.8 개발 계획 __4.9 독스트링 __4.10 디버깅 __4.11 용어 __4.12 연습문제 5장 조건문과 재귀 __5.1 몫과 나머지 연산자 __5.2 불 표현식 __5.3 논리 연산자 __5.4 조건부 실행 __5.5 대안부 실행 __5.6 연쇄 조건문 __5.7 중첩 조건문 __5.8 재귀 __5.9 재귀 함수를 위한 스택 다이어그램 __5.10 무한 재귀 __5.11 키보드 입력 __5.12 디버깅 __5.13 용어 __5.14 연습문제 6장 결과가 있는 함수 __6.1 반환값 __6.2 점진적인 개발 __6.3 조합 __6.4 불 함수 __6.5 재귀, 하나 더 __6.6 믿음의 도약 __6.7 재귀, 하나 더(2) __6.8 타입 검사 __6.9 디버깅 __6.10 용어 __6.11 연습문제 7장 반복 __7.1 재할당 __7.2 변수 업데이트 __7.3 while 문 __7.4 break __7.5 제곱근 __7.6 알고리즘 __7.7 디버깅 __7.8 용어 __7.9 연습문제 8장 문자열 __8.1 문자열은 시퀀스다 __8.2 len __8.3 for 루프로 순회하기 __8.4 문자열 슬라이스 __8.5 문자열은 불변이다 __8.6 검색하기 __8.7 루프 돌기와 세기 __8.8 문자열 메서드 __8.9 in 연산자 __8.10 문자열 비교 __8.11 디버깅 __8.12 용어 __8.13 연습문제 9장 사례 연구: 워드 플레이 __9.1 단어 목록 읽어 들이기 __9.2 연습문제 __9.3 검색 __9.4 인덱스로 루프 돌기 __9.5 디버깅 __9.6 용어 __9.7 연습문제 10장 리스트 __10.1 리스트는 시퀀스다 __10.2 리스트는 변경된다 __10.3 리스트 순회하기 __10.4 리스트 연산 __10.5 리스트 슬라이스 __10.6 리스트 메서드 __10.7 맵, 필터, 리듀스 __10.8 원소를 삭제하기 __10.9 리스트와 문자열 __10.10 객체와 값 __10.11 별칭 __10.12 리스트 인수 __10.13 디버깅 __10.14 용어 __10.15 연습문제 11장 사전 __11.1 사전은 매핑이다 __11.2 카운터 컬렉션으로서의 사전 __11.3 루프와 사전 __11.4 역방향 조회 __11.5 사전과 리스트 __11.6 메모 __11.7 전역 변수 __11.8 디버깅 __11.9 용어 __11.10 연습문제 12장 튜플 __12.1 튜플은 불변이다 __12.2 튜플 할당 __12.3 반환값으로의 튜플 __12.4 가변 길이 인수 튜플 __12.5 리스트와 튜플 __12.6 사전과 튜플 __12.7 시퀀스의 시퀀스 __12.8 디버깅 __12.9 용어 __12.10 연습문제 13장 사례 연구: 자료 구조 고르기 __13.1 단어 빈도 분석 __13.2 난수 __13.3 단어 히스토그램 __13.4 최다 빈출 단어 __13.5 선택 인수 __13.6 사전 빼기 __13.7 무작위 단어 __13.8 마르코프 분석 __13.9 자료 구조 __13.10 디버깅 __13.11 용어 __13.12 연습문제 14장 파일 __14.1 영속성 __14.2 읽기와 쓰기 __14.3 서식 연산자 __14.4 파일명과 경로 __14.5 예외를 잡기 __14.6 데이터베이스 __14.7 피클링 __14.8 파이프 __14.9 모듈 작성하기 __14.10 디버깅 __14.11 용어 __14.12 연습문제 15장 클래스와 객체 __15.1 프로그래머 정의 타입 __15.2 속성 __15.3 사각형 __15.4 인스턴스를 반환값으로 하기 __15.5 객체는 가변이다 __15.6 복제하기 __15.7 디버깅 __15.8 용어 __15.9 연습문제 16장 클래스와 함수 __16.1 시간 __16.2 순수 함수 __16.3 변경자 __16.4 프로토타입 대 계획 __16.5 디버깅 __16.6 용어 __16.7 연습문제 17장 클래스와 메서드 __17.1 객체 지향 기능 __17.2 객체를 출력하기 __17.3 또 하나의 예제 __17.4 더 복잡한 예 __17.5 init 메서드 __17.6 __str__ 메서드 __17.7 연산자 오버로딩 __17.8 타입 기반 디스패치 __17.9 다형성 __17.10 인터페이스와 구현 __17.11 디버깅 __17.12 용어 __17.13 연습문제 18장 상속 __18.1 카드 객체 __18.2 클래스 속성 __18.3 카드 비교하기 __18.4 덱 __18.5 덱 출력하기 __18.6 추가, 제거, 섞기, 정렬 __18.7 상속 __18.8 클래스 다이어그램 __18.9 데이터 캡슐화 __18.10 디버깅 __18.11 용어 __18.12 연습문제 19장 알아두면 좋은 나머지 __19.1 조건식 __19.2 리스트 컴프리헨션 __19.3 발생자 표현식 __19.4 any와 all __19.5 집합(set) __19.6 카운터 __19.7 defaultdict __19.8 이름있는 튜플 __19.9 키워드 인수를 모으기 __19.10 용어 __19.11 연습문제 20장 디버깅 __20.1 구문 오류 __20.2 런타임 오류 __20.3 의미 오류 21장 알고리즘 분석 __21.1 증가 기준 __21.2 파이썬 기본 연산의 분석 __21.3 검색 알고리즘의 분석 __21.4 해시테이블 __21.5 용어 |
Allen B. Downey
앨런 다우니의 다른 상품
|
[이 책의 내용]
*파이썬 기초 문법 *값, 변수, 문장, 함수, 자료 구조를 단계별로 설명 *리스트, 사전, 튜플, 집합 *파일과 데이터베이스 사용법 *재귀 호출 *반복자와 문자열 *객체, 메서드, 객체 지향 프로그래밍 이해하기 *구문 오류, 런타임 오류, 의미 오류를 디버깅하는 법 *사례 연구를 통한 심화 학습 *알고리즘 분석 *형식 언어와 자연 언어 *캡슐화와 일반화 *함수와 스택 다이어그램 *인터페이스 디자인 *리팩터링 *개발 계획과 점진적인 개발 *문자열, 리스트와 슬라이스 *맵, 필터, 리듀스 *단어 빈도 분석과 마르코프 분석 *파일 처리와 피클링 [저자 서문] 이 책의 이상한 역사 1999년 1월, 저는 자바로 가르치는 프로그래밍 입문 수업을 준비하고 있었습니다. 프로그래밍 입문 수업을 세 번이나 가르쳤지만, 그 결과에 좌절하고 있었습니다. 수업을 따라오지 못하는 비율이 너무 높았고, 수업을 잘 따라온 학생들도 전반적인 성취도가 지나치게 낮았기 때문입니다. 제가 알게 된 한 가지 문제점은 교재였습니다. 이들 교재는 너무 두꺼웠고, 자바에 대해 반드시 알 필요가 없는 내용을 너무 자세하게 담느라 프로그램을 어떻게 작성해야 하는지에 대한 안내는 턱없이 부족했습니다. 게다가 이 교재들은 트랩도어 효과(trapdoor effect)마저 안고 있었습니다. 즉, 처음엔 쉽게 시작하지만, 점점 어려워지다가 5장쯤 도착하면 결국 함정에 빠지게 되는 겁니다. 학생들이 이해해야 할 새로운 내용이 지나치게 많은 데다가 진도도 너무 빨라서 이를 수습하는 데 학기의 나머지를 써야 했습니다. 첫 수업을 시작하기 2주 전에 책을 직접 쓰기로 결정했습니다. 제가 세운 목표는 이렇습니다. *짧아야 한다. 학생들이 50쪽을 읽는 것보단 10쪽을 읽는 것이 낫다. *단어 사용에 주의한다. 전문 용어는 최소화하고 용어를 처음 사용할 때는 용어의 정의부터 설명한다. *점진적으로 나아간다. 트랩도어 효과를 피하기 위해 가장 어려운 주제를 정하고 작은 단계로 나눠서 제시한다. *프로그래밍 언어가 아니라 프로그래밍에 집중한다. 자바에서 유용한 부분만 최소한으로 남기고 나머지는 생략한다. 제목을 지어야 했으니까 즉흥적으로 “컴퓨터 과학자처럼 생각하는 법”이라고 했습니다. 첫 번째 버전은 기본 뼈대만 갖췄지만, 효과가 분명했습니다. 학생들은 첫 번째 버전을 읽었고, 수업 시간에 어려운 주제나 흥미로운 주제를 설명해도 이해할 수 있게 되었고, 무엇보다도 학생들이 실습할 수 있게 되었습니다. 저는 이 책을 GNU 자유 문서 라이선스(Free Documentation License, FDL)로 내놓았으므로 사람들은 이 책을 복사, 수정, 배포할 수 있었습니다. 이후에 일어난 일이 정말 멋진 부분입니다. 버지니아에 있는 고등학교 선생님인 제프 엘크너(Jeff Elkner)는 제 책을 선택해서 파이썬으로 옮겼습니다. 제프는 자신이 만든 파이썬 버전 한 부를 보내줬는데 저는 자신이 쓴 책을 읽으면서 파이썬을 배우는 이상한 경험을 했습니다. 저는 첫 번째 파이썬 버전을 2001년에 그린 티 출판사(Green Tea Press)라는 이름으로 출간했습니다. 2003년에는 올린공과대학교에서 강의를 시작했고, 처음으로 파이썬을 가르치게 되었습니다. 자바와 매우 달랐습니다. 학생들은 고생을 덜 하면서 더 많이 배우고, 더 흥미 있는 프로젝트를 하게 되었고, 대다수는 훨씬 더 재미있어했습니다. 그 이후로도 책을 꾸준히 개발해오면서 오류를 수정하고, 예제들을 더 개선하고, 수업 자료를 추가해왔으며, 특히 연습 문제가 보강되었습니다. 그 결과가 이 책이며 이제는 조금은 겸손해진 [씽크 파이썬(Think Python)]이라는 제목을 갖게 되었습니다. 변경된 점도 있는데, 이는 다음과 같습니다. *각 장의 끝에 디버깅 절을 추가했다. 디버깅 절에서는 버그를 발견하고 피하는 일반적인 기법을 제시하고, 파이썬의 함정에 대한 주의 사항을 담았다. *더 많은 연습 문제를 추가했다. 이해했는지 묻는 짧은 테스트부터 몇 가지 큰 프로젝트까지 아우르는 연습 문제를 추가했다. 연습 문제 대부분은 내 해법에 대한 링크를 담고 있다. *사례 연구를 추가했다. 더 길어진 예제에는 연습 문제, 해법, 토론을 함께 제공한다. *프로그램 개발 계획이나 기본 디자인 패턴에 대한 논의를 담았다. *디버깅과 알고리즘 분석에 대한 부록을 추가했다. 개정 2판에 추가된 새 특징은 다음과 같습니다. *이 책과 예제 코드는 모두 파이썬 3에 맞춰 개정되었다. *초심자가 브라우저에서 파이썬을 실행해볼 수 있는 절을 추가했으며 웹에 더 자세한 내용을 올려두었다. 따라서 원하지 않는다면 파이썬을 설치하지 않아도 된다. *“turtle 모듈”(70쪽)은 내가 만든 거북이 그래픽 패키지 Swampy 대신 파이썬 표준 모듈인 turtle로 바꿨다. turtle 모듈은 설치가 더 쉽고, 더 강력하다. |