【譯】Python 是解決任何問題的完美工具

Python 是解決任何問題的完美工具

關於我第一個 Python 程序的反思前端

反思一直是一個有幫助的(有時是頗有趣的)訓練。出於懷舊的目的 —— 若是一我的可以對某件事念念不忘兩年 —— 我想要分享一下個人第一個 Python 程序。當時做爲一名航天工程專業的學生,爲了從那堆數據表中脫身,我開始用起了 Python,我當時並不知道這個決定會變得這麼好。python

個人 Python 自學是從由 Al Sweigart 寫的 Automate the Boring Stuff with Python這本書開始的,這是一個本出色的基於應用程序開發的書,裏面有一些簡單的程序例子,但這些程序執行了一些頗有用的任務。當我學習新東西時,我會尋找任何機會來使用它,所以我須要一些能夠用 Python 解決的問題。幸運的是,我找到了學以至用的例子。這個課程須要 $200 的教科書,而我只想爲這本書花 $20 (Automate the Boring Stuff 在網上是免費的),我甚至拒絕去借這本書。在第一個做業以前基本是不可能獲得這本書了,我發如今 Amazon 上新開一個帳戶,能夠有一個星期的免費試看。我得到了這本書的一個星期使用權限而且能夠完成個人第一個做業。雖然我能夠繼續一個星期建立一個新帳戶,但我須要一個更好的解決辦法。這就進入了 Python 和個人第一個應用程序。android

Automate the Boring Stuff 中有不少有用的庫,其中一個是 pyautogui,它容許我用 Python 控制鍵盤和鼠標。俗話說,當你有一個錘子的時候,任何問題看起來都像是一顆釘子, 這句話絕對適合如今這個情景。Python 和 pyautogui 容許我按下方向鍵而且對屏幕截圖,我把它們兩個放到一塊兒,一個針對書本的解決方案就出來了。我寫的第一個程序就是自動地翻過電子書的每一頁而且進行截圖。最終的程序只有 10 行代碼長,但個人自豪感超過了我在航天工程作的全部事情!下面是程序的完整代碼:ios

import pyautogui
import time

# Sleep for 5 seconds to allow me to open book
time.sleep(5)

# Range can be changed depending on the number of pages
for i in range(1000):

 # Turn page
 pyautogui.keyDown('right')
 pyautogui.keyUp('right')

 # Take and save a screenshot
 pyautogui.screenshot('images/page_%d.pdf' % i)
 time.sleep(0.05)
複製代碼

運行這個程序很簡單(我推薦每個人都試一試)。我保存這個腳本名字叫 book_screenshot.py,而後我打開控制檯,切換到同一個文件目錄下,輸入:git

python book_screenshot.py
複製代碼

而後我有 5 秒時間翻到這本書而且進入全屏模式。 程序會先休息 5 秒,而後自動翻過每一頁而且截屏,最後保存爲一個 pdf 文件。我接下來能夠把全部 pdf 文件彙總起來到一個 pdf 文件, 這樣我了這本書的一個復件(不知是否合法)!誠然,因爲不支持檢索,這種複製方式很爛。但我仍是會義無反顧地使用個人「書」。github

我能夠看上幾個小時。編程

這個例子展現了兩個在我數據科學學習中,一直困擾個人兩個關鍵點:後端

  1. 最好的學習新技能的方式就是找到一個你須要解決的問題
  2. 在一項技能有用以前,你不須要徹底掌握它。

用簡單幾行代碼和一本免費的電子書,我寫了一個我會真實使用的程序。學習基礎知識是單調乏味的,我學習 Python 的第一次嘗試在幾個小時後就失敗了, 我陷入了那些數據結構和循環方法中。改變戰略,我從開發解決真實問題的方案開始而且最終真的在過程當中學會了這些基礎知識。編程和數據科學有太多須要掌握的東西,但你不須要一次就學習全部的東西。挑一個你須要解決的問題而且直接開始!bash

從那之後,我作了幾個更精細的程序,但我始終記着我第作一個腳本時的樂趣!數據結構

分享你的第一個程序!我歡迎你們的討論,反饋和建設性的批評建議。你能夠在 Twitter @koehrsen_will 上找到我。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索