파이썬 프로그래밍의 빠른 시작 - 번거로운 작업을 자동화하기 제15장 실천 프로젝트 답안
프로젝트 요구 사항: 간단한 초시계 프로그램을 파이톤으로 직접 쓰기
#! python3
# A simple stopwatch program.
import time
print('Press ENTER to begin. Afterwards, press ENTER to "click" the stopwatch. Press Ctrl-C to quit.')
input()
print('Started.')
startTime = time.time()
lastTime = startTime
lapNum = 1
try:
while True:
input()
laptime = round((time.time() - lastTime), 2)
totalTime = round((time.time() - startTime), 2)
print('Lap: %s; laptime: %s; totalTime: %s' % (lapNum, laptime, totalTime), end=' ')
lapNum += 1
lastTime = time.time()
except KeyboardInterrupt:
print('
DONE!')
input('click any key to exit')
15.7 프로젝트: 멀티스레드 XKCD 다운로드 프로그램
프로젝트 요구: 다중 루틴 프로그램에서 일부 루틴은 만화를 다운로드하고 다른 루틴은 연결을 맺거나 만화 이미지 파일을 하드디스크에 기록합니다.그것은 더욱 효과적으로 인터넷 연결을 사용하고, 더욱 신속하게 이 만화들을 다운로드한다.새 파일 편집기 창을 열고 multidownloadXkcd로 저장합니다.py.너는 이 프로그램을 수정하고 다중 라인을 추가할 것이다.
#! python3
# Downloads XKCD comics using multiple threads.
import os, bs4, requests
urls = 'http://xkcd.com'
os.makedirs('xkcd', exist_ok = True)
def comic_download_kxcd(startComic, endComic):
for num in range(startComic, endComic):
# todo: download the page
url = urls + '/%s/' % num
print('Downloading page %s...' % url)
res = requests.get(url)
try:
res.raise_for_status()
except requests.exceptions.HTTPError:
pass
soup = bs4.BeautifulSoup(res.text, "html.parser")
# todo: find the url of comic page
comicElems = soup.select('#comic img')
if comicElems == []:
print('Could not find comic image!')
else:
comicUrl = 'http:' + comicElems[0].get('src')
# todo: download the jpg
print('Downloading image %s' % comicUrl)
res = requests.get(comicUrl)
res.raise_for_status()
# todo: save jpg to ./xkcd
image_name = os.path.join('xkcd', os.path.basename(comicUrl))
with open(image_name, 'wb') as imageFile:
for chunk in res.iter_content(100000):
imageFile.write(chunk)
# todo: get the prev button's url
prevLink = soup.select('a[rel="prev"]')[0]
# Create and start the Thread objects.
import threading
comic_threads = []
for i in range(1,1400,100): # loops 14 times, creates 14 threads
comic_thread = threading.Thread(target=comic_download_kxcd, args=(i, i+5))
comic_threads.append(comic_thread)
comic_thread.start()
# Wait for all threads to end.
for comic_thread in comic_threads:
comic_thread.join()
print('Done.')
아이디어:
프로젝트 요구: 카운트다운 프로그램을 써서 카운트다운이 끝날 때 경찰에 신고합시다.
#! python3
# A simple countdown script.
import time, subprocess
while True:
try:
time_l = int(input('Please input a time(seconds): '))
except Exception:
print('number please!')
else:
break
while time_l > 0:
print(time_l) # end=" "
time.sleep(1)
time_l = time_l - 1
print('
alert!!')
time.sleep(2)
a = subprocess.Popen(['start','abc001.txt'], shell=True)
15.12.1 실천 프로젝트: 미화의 초시계
프로젝트 요구 사항: rjust () 와 ljust () 문자열 방법으로 '미화' 된 출력을 사용할 수 있도록 이 장의 초시계 항목을 확장합니다.
#! python3
# A simple stopwatch program.
import time
print('Press ENTER to begin. Afterwards, press ENTER to "click" the stopwatch. Press Ctrl-C to quit.')
input()
print('Started.')
startTime = time.time()
lastTime = startTime
lapNum = 1
try:
while True:
input()
laptime = round((time.time() - lastTime), 2)
totalTime = round((time.time() - startTime), 2)
print('Lap #' + str(lapNum).rjust(2) + ':' + ('%.2f'%totalTime).rjust(6) +
' (' + ('%.2f'%laptime).rjust(5) + ')',end=' ')
lapNum += 1
lastTime = time.time()
except KeyboardInterrupt:
print('
DONE!')
input('click any key to exit')
15.12.2 실천 프로젝트: 계획된 웹 만화 다운로드
이 시리즈의 글을 만들고 싶었던 것은 당시 이 책을 읽을 때 인터넷에서 더 좋은 해결책이 있는지 보고 싶었지만 찾기가 어려웠기 때문이다.그래서 자신의 프로젝트 연습을 txt 파일에 넣었습니다. 지금 연습 코드를 여기에 놓았습니다. 부족한 점이 있으면 여러분들이 지도 의견을 제시하고 서로 교류하며 향상시키길 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.