목차는 총 6 개의 단원으로 구성되어 있습니다.
들어가며 |
Level_1 |
Level_2 |
Level_3 |
Level_4 |
200% 활용하기 |
[들어가며]
// 4차산업혁명 시대
- 아침부터 저녁까지 00씨의 일상에서 AI 스피커, 시장 동향 파악, 자동응답 챗봇을 사용하는 하루 소개
- AI 스피커
“아침에 일찍 회의가 있으니까 평소보다 30분 일찍 깨워줘~”
집을 나서기 전, 비가 오는지 혹은 미세먼지가 어떤지 파악
- 시장분석 도구
정보 수집기를 통해서 평소 1시간 걸리는 뉴스 클리핑 작업을 5분 안에 끝냄.
- 자동응답 챗봇
퇴근 후에 나에게 오는 고객단순문의사항에 대하여 자동응답 챗봇으로 응대.
// 00씨의 하루에서 파이썬은 어디에 있나요?
- AI, 빅데이터, 봇 시장에서 파이썬이 높은 점유율로 사용되고 있습니다.
- 이 책에서는 그 중에서 우리의 하루를 많이 도와줄 조금 똑똑한 챗봇을 만들어 볼 겁니다.
// 왜 파이썬일까요?
파이썬은 쉽기 때문에 빠르게 무언가를 만들어보는데 아주 적합합니다.
이는 프로그래밍 언어의 문법이나 구조적인 부분에 소비하는 시간을 줄이고, 문제 해결 시 핵심적인 부분에 집중할 수 있다는 거죠.
// 파이썬 책이 너무 많아요, 다른 도서와 어떤 차이가 있나요?
가장 큰 차이는 개념에서 실습으로 이어지는 구조이고, 보고 따라하기만 하면 누구나 챗봇을 완성할 수 있다는 점입니다.
이 책은 장황하고 이론적인 설명을 배제하고, 배우자 마자 바로바로 사용할 수 있는 실전 노하우를 집중적으로 다루었습니다.
그러므로 기존의 난해한 프로그래밍 입문서, 또는 기초가 생략된 프로젝트 도서보다 훨씬 더 실용적입니다.
// 개념에서 실습으로 이어지는 구성
개념인 문법적인 부분을 이해하고, 실습 부분인 연습문제를 풀 때 챗봇의 재료가 되는 코드를 접하게 됩니다.
이러한 과정을 통해 코딩에 대한 자신감을 얻고, 동시에 실전에서 즉시 사용할 수 있는 노하우를 빠르게 배울 수 있습니다.
// 이 책의 목표는?
독자가 빠른 기간 안에 업무 혹은 생활에 불편한 부분을 해결할 수 있게 만드는 것입니다.
1. 책을 보면서 달성하는 목표
쉽게 사용할 수 있는 프로그래밍 언어인 파이썬을 이용하여
자동으로 [ 출퇴근 소요시간 ] 을 알려주는 로봇을 만들어보자!
[ 미세먼지 ]
[ 날씨 ]
[ 일출/일몰시간 ]
[ 뉴스 헤드라인 ]
2. 책을 본 이후 달성하는 목표
내 맘대로 로봇을 조립해보자.
// 어떤 분들이 이 책을 접하면 좋을까요?
이 책은 프로그래밍을 전문적으로 공부한 적이 없는 분을 대상으로 합니다.
구체적으로는, 다음과 같은 분들에게 이 책을 권합니다.
- 업무 혹은 생활에 불편한 부분을 해결하고 싶으신 분
- 학원 또는 독학으로 코딩을 배웠으나 어디에 써먹어야 할 지 모르겠는 분
- 뉴스, 날씨, 미세먼지, 출근소요시간 등 단순작업을 매일 직접 반복하는 분
[Level_1]
1. 자료형의 종류와 만드는 방법은?
1. 숫자
- 정수, 실수
2. 불리언
- True, False
3. 문자열
- '', "", '''''', """"""
4. 리스트
- [] 대괄호로 만들기
5. 딕셔너리
- {} 중괄호로 만들기
2. 변수는 자료를 상자에 넣는 겁니다.
- 이름 짓는 방법과 규칙
- 대입연산자에 대해
3. 자료를 읽는 방법은?
1. 숫자와 불리언
- 변수명 호출
2. 문자열과 리스트
- 인덱싱과 슬라이싱
3. 딕셔너리와 다중구조
- 키값 알아보기
- 키값으로 밸류 조회하기
[예제문제]
인터넷의 자료를 내 컴퓨터로 가져오는 첫걸음(웹 자료형 JSON)
JSON - requests 사용하지 않고,
req = '''https://api.sunrise-sunset.org/json?lat=37&lng=126&date=today'''
복붙하여 json.loads(req) 사용
딕셔너리와 JSON은 사실 거의 같은 겁니다.
[도전문제]
일조량 정보를 제공하는 웹 페이지에서 아래 조건으로 정보를 조회하기
딕셔너리.keys() 와 딕셔너리를 키값으로 조회하는 방법으로
day_length 값을 가져오세요.
예제코드:
import json
https://api.sunrise-sunset.org/json?lat=37&lng=126&date=today
접속하여 내용을 복사 / 붙여넣기한다.
json_value = '''여기에 붙여넣기하세요'''
dictionary = json.loads(json_value)
dictionary
[Level_2]
1. 문자열
sunrise 코드를 포매팅으로 개선해보자
2. 제어와 반복문
1. 코드 없이 알아보기
2. 배우지 않고 그냥 읽어보기
3. 공통되는 부분 = 들여쓰기와 콜론
4. if 문의 구조
- if, else, elif
5. for 문의 구조
- in 앞과 뒤에 넣는 것은?
6. while 문의 구조
- 조건과 반복 부분은 어디에?
7. for 와 while 상호비교, 같은 결과이지만 다른 문법?
[예제문제]
네이버에서 뉴스 실시간으로 가져오기 첫걸음(웹 자료형 XML)
우리에게 필요한건 단 하나(RSS)
예제코드:
import requests
import xmltodict
url = ''' 접속할 RSS주소를 입력 '''
req = requests.get(url).text.encode(encoding="ISO-8859-1")
diction = xmltodict.parse(req)
diction['rss']['channel']['item'][0]['title']
XML도 딕셔너리와 사실 거의 같은 겁니다.
[도전문제]
날씨에 대한 예제코드를 보고, 아래 조건대로 개선해보기
- day 에는 오늘(0), 내일(1), 모레(2) 정보가 있습니다.
이를 이용해 오늘의 정보만 출력되게끔 제어 / 반복문을 만들어주세요.
예제코드:
import requests
import xmltodict
url = 'http://www.kma.go.kr/wid/queryDFSRSS.jsp?zone=1117052000'
req = requests.get(url).text
diction = xmltodict.parse(req)
diction['rss']['channel']['item']['description']['body']['data'][0]['wfKor']
[Level_3]
1. 함수
1. 코드 없이 알아보기
- 어릴 적 배운 함수는...
- 들어가는 것과 나오는 것
2. 함수의 구조
- 들여쓰기와 콜론
- 함수를 만들 때 4 가지 경우가 있는데...
- input X / output X
- input X / output O
- input O / output X
- input O / output O
- 기본값 설정하기
3. 변수의 계급에 대하여
[예제문제1]
함수로 묶어보기
기존의 sunrise 예제를 함수로 바꿔보세요.
[예제문제2]
복잡한 구조의 웹 자료를 손쉽게 다루기(bs4)
XML의 태그만 알면 됩니다.
기존의 RSS 뉴스와 날씨 예제를 bs4를 사용해 개선해보세요
[도전문제]
bs4로 미세먼지 정보를 손쉽게 다루는 함수를 만들어보세요
서초구를 함수의 input 기본값으로, return 값으로는 미세먼지 정보를 출력하세요
예제코드:
import requests
from bs4 import BeautifulSoup
def dust_hunter(r_name = "서초구"):
base = 'http://openapi.airkorea.or.kr/openapi/services/rest'
service = '/ArpltnInforInqireSvc/getCtprvnMesureSidoLIst'
key = '?serviceKey=%2FvNQLW62FZQHdzvFTGDTGRNSyckmTODOYb98%2B0jVNVHk0iimUZV%2B5Gik%2FA7QkgsCKFs6l%2BBjWh2IfQyiQLp4TA%3D%3D'
rows = '&numOfRows=25'
page = '&pageNo=1'
sido = '&sidoName=서울'
freq = '&searchCondition=DAILY'
xml = base + service + key + rows + page + sido + freq
req = requests.get(xml).text
bs1 = BeautifulSoup(req, "html.parser")
'''
여기를 채워주세요
'''
return return_text
[Level_4]
1. 클래스, 메소드, 그리고 모듈
1. 만들고 사용해보기
2. import 해서 사용해보기
3. 당신도 모르는 사이에...
4. dir()
5. 정석대로 공부하기 - document
6. 실용적으로 공부하기 - stack overflow
2. selenium
한빛출판사 새로나온 책의 태그정보 전부 가져오기
3. telegram_1 - 봇 준비하기
1. 휴대폰 또는 컴퓨터에서 텔레그램 설치하기
2. BotFather 에게 말을 걸어서 나의 봇을 만들기
3. BotFather 로부터 HTTP API Key 받기
4. 나의 봇을 활성화시키고 말 걸어보기
5. 아무 일도 일어나지 않는 이유는?
4. telegram_2 - 파이썬으로 내 봇 제어하기
1. 파이썬 텔레그램 라이브러리 설치하기
- !pip install python-telegram-bot
2. 내 봇에 접속하기
3. 봇이 나에게 말 걸게 하기
4. 이제는 무엇을 할 수 있을까요?
[예제문제]
RSS 뉴스, 날씨, 미세먼지를 텔레그램 알람 받기
[도전문제]
매일 아침 출근 소요시간을 시간대별로 알려주는 봇을 만들고자 합니다.
셀레늄으로 마우스를 올려놓는 hover 와 키를 보내는 send_keys를 사용하여
내 집에서 출근장소까지의 길찾기 검색을 수행할 수 있는 path_finder 함수를 만들어보세요.
예제코드:
from urllib.request import urlopen
from selenium import webdriver
from bs4 import BeautifulSoup
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.action_chains import ActionChains
import time
def path_finder(fr, to):
path = 'C:/Users/one/Desktop/bot_overall/chromedriver.exe'
driver = webdriver.Chrome(path)
pagestr = "https://map.kakao.com/"
driver.get(pagestr)
'''
이 부분을 채워주세요
'''
[200% 활용하기]
1. interactive bot
1. 질문에 대답하게 만들기
2. 미세먼지 지역 이름 input 으로 받기
2. 관리하기 편하게 만들기
1. 기능별로 묶어서 구성해보기
- 기능들만 모았을 때 - Model
- 기능을 제어하는 부분 - Controller
- 사용자에게 보여질 부분 - View
3. 출근소요시간 데이터 시각화하기
1. 정보 수집하기
- 반복문과 time
- pandas
2. 눈으로 확인하기
- matplotlib
'[일상봇 만들기] 나의 하루하루를 도와줄 친구!' 카테고리의 다른 글
level_03_part_2 (0) | 2019.07.03 |
---|---|
level_03_part_1 (0) | 2019.07.02 |
level_02_part_2 (0) | 2019.06.24 |
level_02_part_1 (0) | 2019.06.20 |
level_00_들어가며 (0) | 2019.06.20 |