- 原文地址:Python is the Perfect Tool for any Problem
- 原文作者:William Koehrsen
- 譯文出自:掘金翻譯計劃
- 本文永久連結:github.com/xitu/gold-m…
- 譯者:Ryden Sun
- 校對者:zephyrJS lampui
Python 是解決任何問題的完美工具
關於我第一個 Python 程式的反思
反思一直是一個有幫助的(有時是很有趣的)訓練。出於懷舊的目的 —— 如果一個人能夠對某件事念念不忘兩年 —— 我想要分享一下我的第一個 Python 程式。當時作為一名航天工程專業的學生,為了從那堆資料表中脫身,我開始用起了 Python,我當時並不知道這個決定會變得這麼好。
我的 Python 自學是從由 Al Sweigart 寫的 Automate the Boring Stuff with Python這本書開始的,這是一個本出色的基於應用程式開發的書,裡面有一些簡單的程式例子,但這些程式執行了一些很有用的任務。當我學習新東西時,我會尋找任何機會來使用它,因此我需要一些可以用 Python 解決的問題。幸運的是,我找到了學以致用的例子。這個課程需要 $200 的教科書,而我只想為這本書花 $20 (Automate the Boring Stuff 在網上是免費的),我甚至拒絕去借這本書。在第一個作業之前基本是不可能得到這本書了,我發現在 Amazon 上新開一個賬戶,可以有一個星期的免費試看。我獲得了這本書的一個星期使用許可權並且可以完成我的第一個作業。雖然我可以繼續一個星期建立一個新賬戶,但我需要一個更好的解決辦法。這就進入了 Python 和我的第一個應用程式。
Automate the Boring Stuff 中有很多有用的庫,其中一個是 pyautogui,它允許我用 Python 控制鍵盤和滑鼠。俗話說,當你有一個錘子的時候,任何問題看起來都像是一顆釘子, 這句話絕對適合現在這個情景。Python 和 pyautogui 允許我按下方向鍵並且對螢幕截圖,我把它們兩個放到一起,一個針對書本的解決方案就出來了。我寫的第一個程式就是自動地翻過電子書的每一頁並且進行截圖。最終的程式只有 10 行程式碼長,但我的自豪感超過了我在航天工程做的所有事情!下面是程式的完整程式碼:
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,然後我開啟控制檯,切換到同一個檔案目錄下,輸入:
python book_screenshot.py
複製程式碼
然後我有 5 秒時間翻到這本書並且進入全屏模式。 程式會先休息 5 秒,然後自動翻過每一頁並且截圖,最後儲存為一個 pdf 檔案。我接下來可以把所有 pdf 檔案彙總起來到一個 pdf 檔案, 這樣我了這本書的一個復件(不知是否合法)!誠然,由於不支援檢索,這種複製方式很爛。但我還是會義無反顧地使用我的“書”。
我可以看上幾個小時。
這個例子展示了兩個在我資料科學學習中,一直困擾我的兩個關鍵點:
- 最好的學習新技能的方式就是找到一個你需要解決的問題!
- 在一項技能有用之前,你不需要完全掌握它。
用簡單幾行程式碼和一本免費的電子書,我寫了一個我會真實使用的程式。學習基礎知識是單調乏味的,我學習 Python 的第一次嘗試在幾個小時後就失敗了, 我陷入了那些資料結構和迴圈方法中。改變戰略,我從開發解決真實問題的方案開始並且最終真的在過程中學會了這些基礎知識。程式設計和資料科學有太多需要掌握的東西,但你不需要一次就學習所有的東西。挑一個你需要解決的問題並且直接開始!
從那以後,我做了幾個更精細的程式,但我始終記著我第做一個指令碼時的樂趣!
分享你的第一個程式!我歡迎大家的討論,反饋和建設性的批評建議。你可以在 Twitter @koehrsen_will 上找到我。
掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。