저작권 안내- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
책 구입
전자책 구입
목차
- Unit 1. 소프트웨어 교육과 파이썬
- 문제 해결을 위한 과학적 사고
- 알고리즘과 코딩
- 파이썬
- 코딩 도장을 학습하는 방법
- Unit 2. 파이썬 설치하기
- Unit 3. Hello, world!로 시작하기
- IDLE에서 Hello, world! 출력해보기
- IDLE에서 소스 파일 실행하기
- 명령 프롬프트에서 Hello, world! 출력하기
- 소스 코드 살펴보기
- 심사 사이트 사용하기
- 퀴즈
- 연습문제: 문자열 출력하기
- 심사문제: 문자열 출력하기
- Unit 4. 기본 문법 알아보기
- 세미콜론
- 주석
- 들여쓰기
- 코드 블록
- 핵심 정리
- Q & A
- Unit 5. 숫자 계산하기
- 정수 계산하기
- 실수 계산하기
- 괄호 사용하기
- 퀴즈
- 연습문제: 아파트에서 소음이 가장 심한 층수 출력하기
- 심사문제: 스킬 공격력 출력하기
- Unit 6. 변수와 입력 사용하기
- 변수 만들기
- 변수로 계산하기
- 입력 값을 변수에 저장하기
- 입력 값을 변수 두 개에 저장하기
- 퀴즈
- 연습문제: 정수 세 개를 입력받고 합계 출력하기
- 심사문제: 변수 만들기
- 심사문제: 평균 점수 구하기
- Unit 7. 출력 방법 알아보기
- 값을 여러 개 출력하기
- 줄바꿈 활용하기
- 퀴즈
- 연습문제: 날짜와 시간 출력하기
- 심사문제: 날짜와 시간 출력하기
- 핵심 정리
- Q & A
- Unit 8. 불과 비교, 논리 연산자 알아보기
- 불과 비교 연산자 사용하기
- 논리 연산자 사용하기
- 퀴즈
- 연습문제: 합격 여부 출력하기
- 심사문제: 합격 여부 출력하기
- Unit 9. 문자열 사용하기
- 문자열 사용하기
- 퀴즈
- 연습문제: 여러 줄로 된 문자열 사용하기
- 심사문제: 여러 줄로 된 문자열 사용하기
- Unit 10. 리스트와 튜플 사용하기
- 리스트 만들기
- 튜플 사용하기
- 퀴즈
- 연습문제: range로 리스트 만들기
- 심사문제: range로 튜플 만들기
- Unit 11. 시퀀스 자료형 활용하기
- 시퀀스 자료형의 공통 기능 사용하기
- 시퀀스 객체의 요소 개수 구하기
- 인덱스 사용하기
- 슬라이스 사용하기
- 퀴즈
- 연습문제: 최근 3년간 인구 출력하기
- 연습문제: 인덱스가 홀수인 요소 출력하기
- 심사문제: 리스트의 마지막 부분 삭제하기
- 심사문제: 문자열에서 인덱스가 홀수인 문자와 짝수인 문자 연결하기
- Unit 12. 딕셔너리 사용하기
- 딕셔너리 만들기
- 딕셔너리의 키에 접근하고 값 할당하기
- 퀴즈
- 연습문제: 딕셔너리에 게임 캐릭터 능력치 저장하기
- 심사문제: 딕셔너리에 게임 캐릭터 능력치 저장하기
- 핵심 정리
- Q & A
- Unit 13. if 조건문으로 특정 조건일 때 코드 실행하기
- if 조건문 사용하기
- if 조건문과 들여쓰기
- 중첩 if 조건문 사용하기
- 사용자가 입력한 값에 if 조건문 사용하기
- 퀴즈
- 연습문제: if 조건문 사용하기
- 심사문제: 온라인 할인 쿠폰 시스템 만들기
- Unit 14. else를 사용하여 두 방향으로 분기하기
- else 사용하기
- else와 들여쓰기
- if 조건문의 동작 방식 알아보기
- 조건식을 여러 개 지정하기
- 퀴즈
- 연습문제: 합격 여부 판단하기
- 심사문제: 합격 여부 판단하기
- Unit 15. elif를 사용하여 여러 방향으로 분기하기
- elif 사용하기
- 퀴즈
- 연습문제: if, elif, else 모두 사용하기
- 심사문제: 교통카드 시스템 만들기
- 핵심 정리
- Q & A
- Unit 16. for 반복문으로 Hello, world! 100번 출력하기
- for와 range 사용하기
- for와 range 응용하기
- 시퀀스 객체로 반복하기
- 퀴즈
- 연습문제: 리스트의 요소에 10을 곱해서 출력하기
- 심사문제: 구구단 출력하기
- Unit 17. while 반복문으로 Hello, world! 100번 출력하기
- while 반복문 사용하기
- 반복 횟수가 정해지지 않은 경우
- while 반복문으로 무한 루프 만들기
- 퀴즈
- 연습문제: 변수 두 개를 다르게 반복하기
- 심사문제: 교통카드 잔액 출력하기
- Unit 18. break, continue로 반복문 제어하기
- break로 반복문 끝내기
- continue로 코드 실행 건너뛰기
- 입력한 횟수대로 반복하기
- 퀴즈
- 연습문제: 3으로 끝나는 숫자만 출력하기
- 심사문제: 두 수 사이의 숫자 중 3으로 끝나지 않는 숫자 출력하기
- Unit 19. 계단식으로 별 출력하기
- 중첩 루프 사용하기
- 사각형으로 별 출력하기
- 계단식으로 별 출력하기
- 퀴즈
- 연습문제: 역삼각형 모양으로 별 출력하기
- 심사문제: 산 모양으로 별 출력하기
- Unit 20. FizzBuzz 문제
- 1부터 100까지 숫자 출력하기
- 3의 배수일 때와 5의 배수일 때 처리하기
- 3과 5의 공배수 처리하기
- 논리 연산자를 사용하지 않고 3과 5의 공배수 처리하기
- 코드 단축하기
- 퀴즈
- 연습문제: 2과 11의 배수, 공배수 처리하기
- 심사문제: 5와 7의 배수, 공배수 처리하기
- Unit 21. 터틀 그래픽스로 그림 그리기
- 사각형 그리기
- 다각형 그리기
- 복잡한 도형 그리기
- 퀴즈
- 연습문제: 오각별 그리기
- 심사문제: 별 그리기
- 핵심 정리
- Q & A
- Unit 22. 리스트와 튜플 응용하기
- 리스트 조작하기
- 리스트의 할당과 복사 알아보기
- 반복문으로 리스트의 요소를 모두 출력하기
- 리스트의 가장 작은 수, 가장 큰 수, 합계 구하기
- 리스트 표현식 사용하기
- 리스트에 map 사용하기
- 튜플 응용하기
- 퀴즈
- 연습문제: 리스트에서 특정 요소만 뽑아내기
- 심사문제: 2의 거듭제곱 리스트 생성하기
- Unit 23. 2차원 리스트 사용하기
- 2차원 리스트를 만들고 요소에 접근하기
- 반복문으로 2차원 리스트의 요소를 모두 출력하기
- 반복문으로 리스트 만들기
- 2차원 리스트의 할당과 복사 알아보기
- 퀴즈
- 연습문제: 3차원 리스트 만들기
- 심사문제: 지뢰찾기
- Unit 24. 문자열 응용하기
- 문자열 조작하기
- 문자열 서식 지정자와 포매팅 사용하기
- 퀴즈
- 연습문제: 파일 경로에서 파일명만 가져오기
- 심사문제: 특정 단어 개수 세기
- 심사문제: 높은 가격순으로 출력하기
- 핵심 정리
- Q & A
- Unit 25. 딕셔너리 응용하기
- 딕셔너리 조작하기
- 반복문으로 딕셔너리의 키-값 쌍을 모두 출력하기
- 딕셔너리 표현식 사용하기
- 딕셔너리 안에서 딕셔너리 사용하기
- 딕셔너리의 할당과 복사
- 퀴즈
- 연습문제: 평균 점수 구하기
- 심사문제: 딕셔너리에서 특정 값 삭제하기
- Unit 26. 세트 사용하기
- 세트 만들기
- 집합 연산 사용하기
- 세트 조작하기
- 세트의 할당과 복사
- 반복문으로 세트의 요소를 모두 출력하기
- 세트 표현식 사용하기
- 퀴즈
- 연습문제: 공배수 구하기
- 심사문제: 공약수 구하기
- 핵심 정리
- Q & A
- Unit 27. 파일 사용하기
- 파일에 문자열 쓰기, 읽기
- 문자열 여러 줄을 파일에 쓰기, 읽기
- 파이썬 객체를 파일에 저장하기, 가져오기
- 퀴즈
- 연습문제: 파일에서 10자 이하인 단어 개수 세기
- 심사문제: 특정 문자가 들어있는 단어 찾기
- Unit 28. 회문 판별과 N-gram 만들기
- 회문 판별하기
- N-gram 만들기
- 연습문제: 단어 단위 N-gram 만들기
- 심사문제: 파일에서 회문인 단어 출력하기
- 핵심 정리
- Q & A
- Unit 29. 함수 사용하기
- Hello, world! 출력 함수 만들기
- 덧셈 함수 만들기
- 함수의 결과를 반환하기
- 함수에서 값을 여러 개 반환하기
- 함수의 호출 과정 알아보기
- 퀴즈
- 연습문제: 몫과 나머지를 구하는 함수 만들기
- 심사문제: 사칙 연산 함수 만들기
- Unit 30. 함수에서 위치 인수와 키워드 인수 사용하기
- 위치 인수와 리스트 언패킹 사용하기
- 키워드 인수 사용하기
- 키워드 인수와 딕셔너리 언패킹 사용하기
- 매개변수에 초깃값 지정하기
- 퀴즈
- 연습문제: 가장 높은 점수를 구하는 함수 만들기
- 심사문제: 가장 낮은 점수, 높은 점수와 평균 점수를 구하는 함수 만들기
- Unit 31. 함수에서 재귀호출 사용하기
- 재귀호출 사용하기
- 재귀호출로 팩토리얼 구하기
- 퀴즈
- 연습문제: 재귀호출로 회문 판별하기
- 심사문제: 재귀호출로 피보나치 수 구하기
- 핵심 정리
- Q & A
- Unit 32. 람다 표현식 사용하기
- 람다 표현식으로 함수 만들기
- 람다 표현식과 map, filter, reduce 함수 활용하기
- 퀴즈
- 연습문제: 이미지 파일만 가져오기
- 심사문제: 파일 이름을 한꺼번에 바꾸기
- Unit 33. 클로저 사용하기
- 변수의 사용 범위 알아보기
- 함수 안에서 함수 만들기
- 클로저 사용하기
- 퀴즈
- 연습문제: 호출 횟수를 세는 함수 만들기
- 심사문제: 카운트다운 함수 만들기
- 핵심 정리
- Q & A
- Unit 34. 클래스 사용하기
- 클래스와 메서드 만들기
- 속성 사용하기
- 비공개 속성 사용하기
- 퀴즈
- 연습문제: 게임 캐릭터 클래스 만들기
- 심사문제: 게임 캐릭터 클래스 만들기
- Unit 35. 클래스 속성과 정적, 클래스 메서드 사용하기
- 클래스 속성과 인스턴스 속성 알아보기
- 정적 메서드 사용하기
- 클래스 메서드 사용하기
- 퀴즈
- 연습문제: 날짜 클래스 만들기
- 심사문제: 시간 클래스 만들기
- Unit 36. 클래스 상속 사용하기
- 사람 클래스로 학생 클래스 만들기
- 상속 관계와 포함 관계 알아보기
- 기반 클래스의 속성 사용하기
- 메서드 오버라이딩 사용하기
- 다중 상속 사용하기
- 추상 클래스 사용하기
- 퀴즈
- 연습문제: 리스트에 기능 추가하기
- 심사문제: 다중 상속 사용하기
- Unit 37. 두 점 사이의 거리 구하기
- 두 점 사이의 거리 구하기
- 연습문제: 사각형의 넓이 구하기
- 심사문제: 두 점 사이의 거리 구하기
- 핵심 정리
- Q & A
- Unit 38. 예외 처리 사용하기
- try except로 사용하기
- else와 finally 사용하기
- 예외 발생시키기
- 예외 만들기
- 퀴즈
- 연습문제: 파일 예외 처리하기
- 심사문제: 회문이 아니면 예외 발생시키기
- Unit 39. 이터레이터 사용하기
- 반복 가능한 객체 알아보기
- 이터레이터 만들기
- 인덱스로 접근할 수 있는 이터레이터 만들기
- iter, next 함수 활용하기
- 퀴즈
- 연습문제: 배수 이터레이터 만들기
- 심사문제: 시간 이터레이터 만들기
- Unit 40. 제너레이터 사용하기
- 제너레이터와 yield 알아보기
- 제너레이터 만들기
- yield from으로 값을 여러 번 바깥으로 전달하기
- 퀴즈
- 연습문제: 파일 읽기 제너레이터 만들기
- 심사문제: 소수 제너레이터 만들기
- Unit 41. 코루틴 사용하기
- 코루틴에 값 보내기
- 코루틴 바깥으로 값 전달하기
- 코루틴을 종료하고 예외 처리하기
- 하위 코루틴의 반환값 가져오기
- 퀴즈
- 연습문제: 문자열 검색 코루틴 만들기
- 심사문제: 사칙연산 코루틴 만들기
- 핵심 정리
- Q & A
- Unit 42. 데코레이터 사용하기
- 데코레이터 만들기
- 매개변수와 반환값을 처리하는 데코레이터 만들기
- 매개변수가 있는 데코레이터 만들기
- 클래스로 데코레이터 만들기
- 클래스로 매개변수와 반환값을 처리하는 데코레이터 만들기
- 퀴즈
- 연습문제: 데코레이터로 매개변수의 자료형 검사하기
- 심사문제: HTML 태그 데코레이터 만들기
- Unit 43. 정규표현식 사용하기
- 문자열 판단하기
- 범위 판단하기
- 그룹 사용하기
- 문자열 바꾸기
- 연습문제: 이메일 주소 검사하기
- 심사문제: URL 검사하기
- Unit 44. 모듈과 패키지 사용하기
- import로 모듈 가져오기
- import로 패키지 가져오기
- 파이썬 패키지 인덱스에서 패키지 설치하기
- 퀴즈
- 연습문제: 소수점 이하 올림, 버림 구하기
- 심사문제: 원의 넓이 구하기
- Unit 45. 모듈과 패키지 만들기
- 모듈 만들기
- 모듈과 시작점 알아보기
- 패키지 만들기
- 패키지에서 from import 응용하기
- 퀴즈
- 연습문제: 하위 패키지 구성하기
- 심사문제: 패키지 사용하기
- 핵심 정리
- Q & A
- Unit 46. 실전예제: 웹의 데이터로 그래프 그리기
- 아나콘다 설치하기
- 주피터 노트북 사용하기
- 웹 페이지의 HTML을 가져와서 파일로 저장하기
- 데이터로 그래프 그리기
- Unit 47. 부록
- 비트 연산자 사용하기
- 연산자 우선순위
- bytes, bytearray 사용하기
- 날짜/시간 모듈 활용하기
- 내장 함수
- 이스케이프 시퀀스
- 실수 값의 오차
- with as에 사용할 수 있는 클래스 만들기
- 메타클래스 사용하기
- asyncio 사용하기
- 가상환경 사용하기
- Windows에서 패키지 설치 에러 해결하기
- 프로퍼티 사용하기
- PyCharm 사용하기
예제 소스
저작권 정보
- 파이썬 코딩 도장(이하 '책')의 저작권은 이재홍에게 있습니다.
- 책의 출판권 및 배타적발행권과 전자책의 배타적전송권은 (주)도서출판 길벗에게 있습니다.
- 책의 내용을 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다.
- 책의 내용을 변경할 수 없습니다.
- 책의 내용을 상업적으로 사용할 수 없습니다.
- 책의 내용을 어떠한 형태로든 재배포할 수 없습니다.
저자 서문
컴퓨터만큼 발전이 빠른 분야도 없습니다. 컴퓨터가 만들어지고 불과 70여 년 만에 상상을 초월하는 성능과 기능을 갖추게 되었습니다. 처음 접한 컴퓨터는 8비트 컴퓨터였는데 당시에는 그냥 글자가 화면에 나오는 타자기 수준이었습니다. 그 이전에는 집채만 한 군사용 계산기였죠. 하지만 지금은 현실과 구분되지 않을 정도의 화려한 그래픽으로 된 게임을 즐기고, 컴퓨터는 절대 사람에게 이길 수 없다고 여겨졌던 바둑마저도 사람을 이기는 수준에 이르렀습니다.
전기 전자 기술이 컴퓨터 하드웨어를 고성능으로 발전시켰지만, 사실 컴퓨터의 발전은 소프트웨어의 발전이라 할 수 있습니다. 게임도 알파고도 전부 소프트웨어입니다. 우리가 실제로 컴퓨터를 접하는 대상은 소프트웨어입니다.
현재 우리가 컴퓨터로 접하는 화려한 그래픽의 게임, 인터넷을 둘러보는 웹 브라우저, 스마트폰의 앱은 모두 소프트웨어입니다. 자판기, 지하철 전광판, 자동차 엔진, 엘리베이터, 신호등도 눈에 보이지 않지만, 모두 소프트웨어입니다. 일상생활이 소프트웨어로 시작해서 소프트웨어로 끝난다고 해도 과언이 아닙니다.
시대가 시대인 만큼 소프트웨어는 더욱 많이 사용될 것이고 직업으로서도 전망이 밝다고 생각합니다.
파이썬은 배우기 쉽습니다. 이는 창시자 귀도 반 로섬이 누구나 배울 수 있는 쉬운 프로그래밍 언어를 목표로 했기 때문입니다. 이는 모두를 위한 컴퓨터 프로그래밍(Computer Programming for Everybody)이라는 파이썬 공식 문서에서 확인할 수 있습니다. 그래서 의도적으로 단순한 언어를 목표로 했고, 그 결과 누구나 쉽게 배울 수 있는 언어가 되었습니다. 오늘날 가장 인기 있는 언어 중에 하나가 된 이유이기도 합니다.
파이썬은 단순하지만, 강력합니다. 지루한 작업을 자동화하는 간단한 스크립트 작성부터 웹 애플리케이션이나 GUI 프로그램까지 작성할 수 있습니다. 머신 러닝이나 딥 러닝 같은 인공 지능 분야나 데이터 과학에서 파이썬은 가장 인기 있는 언어가 되었습니다. 방대한 파이썬 라이브러리 덕분에 원하는 일을 가장 빠르게 할 수 있습니다. 이러한 강력함 덕분에 파이썬의 인기는 높아지고 있습니다.
<파이썬 코딩 도장>은 프로그래머를 목표로 하는 진지한 분들을 위한 책입니다. 파이썬의 구석구석까지 설명하고, 깊이 있게 이해하고 싶은 분들을 위한 책입니다. 파이썬의 기초 문법에서 객체 지향이나 비동기 처리 같은 깊이 있는 주제까지 다루고 있는 이유이기도 합니다.
프로그래밍 언어는 단순히 공부만 해서 되는 것이 아니라 연습을 하면서 자연스럽게 원리를 익히는 것이 중요합니다. 이 책에서는 직접 타이핑하면서 연습할 수 있도록 코딩 도장 웹 사이트를 제공합니다. 코딩 도장의 심사 문제를 통해 스스로 생각하며 풀어보는 과정이 프로그래밍에 대한 이해를 깊게 해줄 것입니다.
베타테스트 기간 동안 책 내용에 대한 의견을 주신 분들과 심사 문제를 테스트해주신 모든 분께 감사의 말씀을 드립니다. 아무쪼록 파이썬 학습에 어려움을 겪고 있는 모든 분에게 도움이 되었으면 좋겠습니다.
2018년 9월 남재윤(이재홍)