도서 소개
파이썬에 처음 입문하는 초보자를 위해 쓰였으며, 파이썬에 익숙한 독자도 특정 개념에 대한 설명이 필요할 때마다 손쉽게 내용을 찾을 수 있도록 사전식으로 구성되어 있다. 22장, 200개의 주제로 되어 있으며 파이썬과 에디터 프로그램 설치부터 시작해 차근차근 배워나가며 파이썬 기초를 다질 수 있게 했다.특히 이번 2판은 전면 컬러로 개정되며 예제 코드를 이해하기 수월해졌고, 그림 설명이 대폭 추가되어 개념을 한눈에 이해할 수 있도록 도왔다. 또한 1판에서 5개의 파트로 구성한 것과 다르게 2판에서는 22개의 파트로 구성하여, 보다 자세하고 체계적으로 학습할 수 있게 했다. 1장에서 대표적인 파이썬 코딩 도구를 배우고 난 뒤 2장에서 기초 구문을, 3장과 4장에서 제어문과 연산자를 배운다. 5장부터 12장에서는 파이썬의 다양한 자료형과 각 자료형에서 사용할 수 있는 내장함수 및 메서드를 배운다. 13장부터 16장까지 함수와 클래스, 패키지, 디렉토리 등을 배우고 19장에서 정규표현식에 대해 간략하게 학습한다. 그리고 앞에서 배운 내용을 활용하여 20장부터 22장까지 네트워크, 동시 실행, 프로그래밍 실습을 진행한다. 특히 소스 코드를 주요 라인별로 해석해, 각 코드가 어떤 역할을 하고 어떻게 변형해 응용할 수 있을지 꼼꼼하게 배울 수 있도록 했다.
출판사 리뷰
파이썬을 가장 익숙한 언어로 사용하는 지름길!파이썬은 코드가 간결하고 읽기 쉬우며 수많은 라이브러리와 패키지가 있는, 현재 가장 널리 사용되는 인기 있는 프로그래밍 언어다. 전 세계적으로 AI에 대한 관심이 계속 증가하고 있는데, 특히 파이썬은 AI 프로그래밍의 중심에 있으면서 입문하기 수월해 프로그래밍 언어를 넘어 교양의 일부가 되어가고 있다.
이 책은 이런 주요 흐름에 맞춰가고 싶은 파이썬 초보자를 위해 기획되었다. 200개의 실습 예제와 라인별 설명으로 차근차근 파이썬을 익힐 수 있어 꾸준한 사랑을 받은 1판을, 최근 파이썬 3.12에 맞춰 예제를 전면 최신판으로 개정하였다. 또한 그림 설명도 대폭 추가하여 파이썬을 더욱 쉽게 이해할 수 있도록 했다. 입문자를 위한 도서인 만큼 파이썬과 에디터 프로그램 설치부터, 간단하지만 중요한 변수, 주석 처리, None 상수 등의 기초 구문으로 학습을 시작해 다양한 자료형과 내장함수 메서드, 모듈, 패키지 등을 소스 코드를 실습하며 배운다. 그리고 앞에서 배운 내용을 활용하여 22장에서 실제로 구동하는 실전 예제 14개를 배워, 배운 내용을 실무에 응용할 수 있는 능력을 키우도록 했다. 특히, 예제 코드는 주요 라인별로 해석되어 있어 더욱 꼼꼼하고 정확한 학습이 가능하다. 파이썬에 막 입문하는 초보자나 파이썬을 익숙하게 활용하고 싶은 사용자, 실전 예제로 파이썬에 익숙해지고 싶은 사용자라면 이 책이 도움이 될 것이다. 또한 필요한 개념을 찾아보기 쉽게 사전식으로 구성했기 때문에, 그때그때 필요한 개념을 찾아서 볼 책이 필요한 사용자에게도 추천한다.
작가 소개
지은이 : 장삼용
서울대학교 지질과학과, 동대학원 지구물리학 석사를 졸업하였으며, 우주항공분야 벤처, 임베디드 소프트웨어, 콘텐츠 전송 네트워크 전문 기업에서 소프트웨어 개발을 담당하였다. 파이썬으로 P2P 기반 하이브리드 콘텐츠 전송 시스템을 개발하여 실서비스에 적용하였고, 티맥스소프트에서 기업용 솔루션 전문 컨설턴트로 활동하였다. 파이썬을 활용한 기업 정보 보안, 컴퓨터 비전, 머신러닝/딥러닝/AI에 대한 기술을 연구하였고, 현재는 효성인포메이션시스템 솔루션 개발 팀장으로 근무하고 있다. 저서로는 ‘화이트 해커를 위한 암호와 해킹’이 있다.
목차
1장 파이썬 코딩 도구
001 대화식 모드로 프로그래밍 하기
002 IDLE 에디터로 프로그래밍 하기
003 주피터 노트북으로 프로그래밍 하기
2장 기초 구문
004 변수
005 주석 처리하기
006 자료형 개념
007 자료형 출력: print()
008 자료형 크기: len()
009 자료형 확인: type()
010 타입 어노테이션(Type Annotation)
011 사용자 입력: input()
012 들여쓰기
013 None 상수
014 True, False
3장 제어문
015 if문: if~elif~else
016 for문: for~continue~break
017 for문: for~else
018 while문: while~continue~break
019 pass문
020 match문: match~case
4장 연산자
021 수치연산자: +, -, *, /, **, //, %
022 연산자 축약: +=, -=, *=, /=
023 비교연산자: ==, !=, <, <=, >, >=
024 논리연산자: and, or, not
025 비트연산자: &, |, ^, >>, <<
5장 수치 자료형(Numerical Types)
026 정수, 실수: int, float
027 복소수: complex
028 절대값 구하기: abs()
029 몫과 나머지 구하기: divmod()
030 반올림 수 구하기: round()
031 수치 자료형 변환: int(), float(), str()
032 10진수를 16진수로 변환: hex()
033 10진수를 2진수로 변환: bin()
6장 반복 자료형(Iterator Types)
034 반복 가능(Iterable) 이해하기
035 이터레이터(Iterator), iter(), next() 이해하기
036 사용자 정의 이터레이터 만들기
037 제너레이터(Generator) 이해하기
038 특정 조건을 만족하는 요소만 추출하기: filter()
039 모든 요소 총합 구하기: sum( )
040 반복 가능 자료를 리스트로 변환: list( )
041 모든 요소들에 대해 함수 리턴값 얻기: map()
042 인덱스가 같은 요소끼리 짝짓기: zip()
043 모든 요소가 참인지 확인하기: all(), any()
044 요소 정렬: sorted()
7장 시퀀스 자료형(Sequence Types)
045 시퀀스 자료형 종류 및 특성
046 순차적 정수열 만들기: range()
047 시퀀스 자료 인덱싱: s[i]
048 시퀀스 자료 슬라이싱: s[i:j]
049 시퀀스 자료 연결/반복: +, *
050 시퀀스 자료에서 최대/최소 요소 구하기: max(), min()
051 시퀀스 자료에서 특정 요소 개수: s.count()
052 시퀀스 자료에서 요소 체크: in, not in
053 시퀀스 자료의 특정 요소 인덱스 구하기: s.index()
054 (인덱스, 요소) 생성: enumerate()
055 시퀀스 자료 역순 만들기: reversed()
8장 리스트와 튜플
056 리스트의 요소값 변경: list[i] = x
057 리스트에서 요소 삭제하기 ①: del list[i]
058 리스트에서 요소 삭제하기 ②: list.remove()
059 리스트의 모든 요소 삭제하기: list.clear()
060 리스트 복사하기: list.copy()
061 리스트 확장하기: list.extend()
062 리스트에 요소 삽입하기: list.insert()
063 리스트 맨 마지막에 요소 추가하기: list.append()
064 리스트에서 특정 위치 요소 추출 후 삭제: list.pop()
065 리스트 요소를 역순으로 만들기: list.reverse()
066 리스트 요소 정렬: list.sort()
067 리스트 요소 무작위로 섞기: random.shuffle()
068 리스트로 스택 구현하기
069 리스트로 큐 구현하기
070 튜플 이해하기
9장 문자열
071 문자열(String) 객체
072 유니코드 문자열
073 문자 코드값 구하기: ord()
074 코드값에 대응하는 문자 얻기: chr()
075 이스케이프 문자
076 문자열 포맷팅 방법 ①: f‘ ’
077 문자열 포맷팅 방법 ②: str.format()
078 문자열에서 특정 문자열 위치 찾기: str.find()
079 문자열이 언어 문자로만 구성되었는지 확인: str.isalpha()
080 문자열이 숫자로만 구성되었는지 확인: str.isdecimal(), str.isdigit(), str.isnumeric()
081 문자열로 리스트 요소 연결하기: str.join()
082 문자열을 구분자로 분리하기: str.split()
083 문자열에서 좌우 문자/공백 제거하기: str.strip(), str.lstrip(), str.rstrip()
084 문자열에서 특정 문자열을 다른 문자열로 바꾸기: str.replace()
085 문자열의 왼쪽을 0으로 채우기: str.zfill()
086 숫자 왼쪽에 0을 채워서 문자열로 만들기: format()
087 문자열에서 대소문자 변환하기: str.upper(), str.lower()
088 문자열 정렬하기: sorted(), ‘’.join()
089 문자열로 된 식 실행하기: eval()
090 문자열에서 주어진 접두어/접미어 제거하기: str.removeprefix(), str.removesuffix()
091 문자열을 바이트 문자열로 변환하기: str.encode()
10장 바이트(Bytes) 문자열
092 바이트 문자열 이해하기
093 16진수 표시 문자열을 바이트 문자열로 변환: bytes.fromhex()
094 바이트 문자열을 16진수 표시 문자열로 변환: bytes.hex()
095 바이트 문자열을 유니코드 문자열로 변환: bytes.decode()
096 바이트 문자열 주요 메서드들
11장 set(집합) 자료형
097 set 자료 이해하기
098 set 연산: |, &, -, ^
099 set에 요소 추가: set.add()
100 set에서 요소 제거 ①: set.remove()
101 set에서 요소 제거 ②: set.discard()
102 set에서 랜덤 요소 추출: set.pop()
103 set의 모든 요소 제거: set.clear()
12장 딕셔너리(Dictionary)
104 딕셔너리 객체: dict()
105 딕셔너리에서 값 추출하기 ①: d[key]
106 딕셔너리에서 값 추출하기 ②: d.get()
107 딕셔너리의 모든 키를 리스트로 만들기: list(d)
108 딕셔너리에 요소 추가하기: d[key]=val
109 딕셔너리에 요소를 추가하고 값을 얻기: d.setdefault()
110 딕셔너리의 특정 요소 제거하기: del d[key]
111 딕셔너리에 특정 키가 존재하는지 확인: key in d
112 딕셔너리에 특정 키가 없는지 확인: key not in d
113 딕셔너리의 모든 키로 이터레이터 생성: iter(d)
114 딕셔너리의 모든 요소 삭제: d.clear()
115 딕셔너리의 모든 요소 복제: d.copy()
116 딕셔너리의 모든 요소 조회하기: d.items()
117 딕셔너리의 모든 키 조회하기: d.keys()
118 딕셔너리의 모든 값 조회하기: d.values()
119 딕셔너리에서 모든 키의 순서를 거꾸로 하기: reversed(d)
120 딕셔너리에서 요소를 제거한 후 값 또는 요소 얻기: d.pop(), d.popitem()
121 딕셔너리 갱신하기 ①: d.update()
122 딕셔너리 갱신하기 ②: d1 | d2, d1 |= d2
123 딕셔너리 요소 정렬하기: sorted()
13장 함수(Function)
124 함수 정의: def
125 함수의 매개변수와 인자
126 지역변수와 전역변수: global
127 함수 처리 결과 리턴: return
128 이름없는 한 줄짜리 함수 만들기: lambda
129 함수의 타입 어노테이션
130 데코레이터: @
14장 클래스(Class)
131 클래스 개념
132 클래스 변수와 인스턴스 변수
133 메서드(Method)
134 클래스 생성자(Constructor)
135 클래스 소멸자(Destructor)
136 클래스 상속
15장 예외처리
137 예외처리 ①: try~except
138 예외처리 ②: try~except~else
139 예외처리 ③: try~except~finally
140 예외처리 ④: try~except Exception as e
141 예외처리 ⑤: try~except 특정예외
142 예외 발생시키기 ①: assert
143 예외 발생시키기 ②: raise
16장 파이썬 모듈과 패키지
144 모듈 이해하기
145 패키지 이해하기
146 모듈 임포트: import, import~as, from~import
147 파이썬 내장 모듈 vs. 외부 모듈
148 외부 모듈/패키지 설치 도구: pip
149 if __name__ == ‘__main__’:
17장 파일/디렉토리
150 파일 열고 닫기: f.open(), f.close()
151 파일을 열고 자동으로 닫기: with open() as f
152 파일 읽기: f.read()
153 파일 쓰기: f.write()
154 파일의 특정 부분만 읽고 복사: f.seek()
155 텍스트 파일 한 라인씩 읽기: f.readline(), f.readlines()
156 텍스트 파일 저장하기: f.writelines()
157 바이너리 파일 복사하기: f.read(), f.write()
158 파일 크기 구하기: os.path.getsize()
159 파일 삭제하기: os.remove()
160 파일 이름 변경/파일 이동: os.rename()
161 디렉토리에 존재하는 파일 목록 얻기: os.listdir(), glob.glob()
162 현재 작업 디렉토리 확인, 작업 디렉토리 변경: os.getcwd(), os.chdir()
163 디렉토리 생성 및 제거: os.mkdir(), os.rmdir()
164 하위 디렉토리 및 파일 전체 삭제: shutil.rmtree()
165 파일이 존재하는지 체크: os.path.exists()
166 파일인지 디렉토리인지 체크: os.path.isfile(), os.path.isdir()
167 JSON 파일 다루기 2
18장 시간/날짜
168 프로그램 실행 소요 시간 계산: time.time()
169 주어진 시간동안 일시정지: time.sleep()
170 현재 시간을 연-월-일 시: 분:초로 출력하기: time.localtime(), time.strftime()
171 올해의 경과된 날짜 수 계산: time.localtime()
172 오늘의 요일 계산하기: time.localtime()
19장 정규표현식
173 정규표현식 개념
174 정규표현식 응용
20장 네트워크
175 에코 서버 만들기: socket
176 에코 클라이언트 만들기: socket
177 향상된 에코 서버 만들기: socketserver
178 향상된 에코 클라이언트 만들기: socket
179 웹사이트에 접속하여 HTML 페이지를 파일로 저장: urllib.request.urlopen()
180 HTTP 헤더 조작하기: requests
181 인터넷에 있는 이미지를 내 PC에 저장하기
21장 동시 실행 프로그래밍
182 동시 실행(Concurrent Execution) 개념
183 멀티스레드 프로그래밍: threading
184 멀티프로세스 프로그래밍: multiprocessing
185 비동기 호출 인터페이스: concurrent.futures
186 비동기 함수 구현하기: asyncio, async, await
22장 프로그래밍 실습
187 opencv를 활용하여 마우스로 도형 그리기 ①
188 opencv를 활용하여 마우스로 도형 그리기 ②
189 matplotlib을 활용한 데이터 시각화 실습 ①
190 matplotlib을 활용한 데이터 시각화 실습 ②
191 Basemap을 활용하여 지도 출력하기
192 지진 발생 지역 지도에 표시하기
193 기상 정보 지도에 표시하기
194 웹 기반 로또 번호 추출기 만들기
195 웹 기반으로 지진 발생 지역 보기
196 파일 전송 서버 만들기
197 파일 수신 클라이언트 만들기
198 채팅 서버 만들기
199 채팅 클라이언트 만들기
200 ChatGPT API를 활용해서 간단한 챗봇 만들기