注意: 雖然 JavaScript 對於本網站不是必需的,但您與內容的互動將受到限制。請開啟 JavaScript 以獲得完整的體驗。

EDU-SIG: Python 教育

EDU-SIG: Python 教育

Python 在教育的各個層面越來越普及。Python 提供了一個互動式環境,可用於探索解決問題的過程式、函式式和麵向物件方法。其高階資料結構和清晰的語法使其成為理想的第一門語言,而大量現有庫使其適合處理幾乎所有程式設計任務。

Edu-sig 透過其郵件列表,提供了一個非正式的場所,用於交流經驗和討論 Python 在教育領域的未來可能性。其起源可追溯到 Guido van Rossum 開創性的全民計算機程式設計 (CP4E),這是一項獲得 DARPA 資助的提案,並在 1999 年獲得了一筆少量資金。

成員包括但不限於在課程中使用 Python 的教育工作者、獨立開發者以及教育材料作者。討論的重點是 Python 在各個層面的使用,從入門到高階應用。

Python 2 還是 Python 3?

幾年前,釋出了新版本的 Python (3)。這個新版本與之前的版本有一些細微但重要的變化。對於初學者來說,最明顯的變化是 print 以前是一個 Python 關鍵字

>>> print "Hello World!"   # for Python 2

現在是一個函式

>>> print("Hello World!")   # for Python 3

由於這些變化,為 Python 2 編寫的程式很可能與 Python 3 不相容(反之亦然)。你們中的一些人可能無法控制學生可以使用哪個 Python 版本。如果遇到這種情況,如果你們和學生無法訪問最好/最新版本的 Python,也不必過於沮喪:Python 仍然是作為第一門語言的絕佳選擇,版本之間相對較小的變化並不會改變這一事實。

如果您可以控制學生可以使用哪個 Python 版本,那麼您需要做出選擇。在這種情況下,我們想提供以下建議

  • 如果可以,請使用 Python 3,特別是 3.4 版本,並利用其日益增長的第三方庫。如果您計劃將 Python 作為入門語言(例如在 CS-1 課程中)教授,尤其如此,因為 Python 3 是 Python 的未來。此外,如果您用英語以外的語言教授 Python,並且可以在編寫識別符號時充分利用非 ASCII 字元,那麼 Python 3 絕對是您的選擇。
  • 如果您需要尚未移植到 Python 3 的第三方模組,請使用 Python 2,特別是 2.7 版本。

郵件列表等

如上所述,Edu-Sig 社群擁有自己的郵件列表。另外兩個郵件列表可能對教育工作者感興趣:python tutor 和通用的python-list。這三個列表都可以在 ActiveState 網站上的可搜尋檔案中找到,該網站也託管了著名的Python Cookbookpython tutor 郵件列表對學習該語言並尋找程式設計問題答案的初學者很有用;歡迎教育工作者作為志願者加入;edu-sig 郵件列表更多用於討論 Python 在教育環境中的使用。

教育工作者免費書籍和教程

有許多免費的 Python 教程。例如,Python wiki 上有一系列Python 初學者指南。此外,以下內容可能特別引起教育工作者的興趣

教科書和其他非免費書籍

雖然有許多免費書籍和教程,但有些人更喜歡擁有實際的紙質版。如果您屬於這一類,您可能會驚訝地發現已經編寫了近一百本關於 Python 程式設計的書籍。在這裡,我們將只關注其中一部分,這些書籍可能對教授程式設計入門課程的教育工作者感興趣。更多書籍可以在此處此處找到,或者透過網際網路搜尋。

獻給孩子,無論老少

大學教材也已上市

系統訊息:警告/2 (<字串>,第 208 行);反向連結

重複的顯式目標名稱:“python 科學程式設計入門”。

學習環境

由於 Python 是一種解釋型語言,因此開始程式設計所需的一切只是一個終端視窗。但是,對於您的學生來說,這並不是最友好的環境;相反,我們建議您使用像 IDLE(代表整合開發環境)這樣的工具,它包含在支援 Tcl 的任何平臺(包括 Windows)上的 Python 安裝檔案中。

至於您自己,如果您喜歡直接從終端視窗程式設計,那麼比預設直譯器更好的選擇可能是 IPython

除了 IDLE,還有許多第三方工具,您可以透過參考 Python 編輯器 WikiPython 整合開發環境 Wiki 找到它們。

學習資源

這些是資源、互動式線上教程以及其他有助於教授 Python 或使用 Python 教授程式設計的教育資源。

  • 線上 Python 導師Philip Guo 建立的免費教育工具,旨在幫助學生克服學習程式設計的一個基本障礙:理解計算機執行程式原始碼每一行時發生的情況。使用此工具,教師或學生可以在 Web 瀏覽器中編寫 Python 程式,並逐步視覺化計算機執行程式時的操作。
  • 互動式 Python 網站提供即時 Python 書籍,讓學習者能夠在瀏覽器中執行 Python 程式碼並檢視其執行程式的視覺效果。
  • Python 趣味程式設計是針對中級程式設計師的一系列小型 Python 程式,探索了廣泛的計算機科學概念——包括邏輯電路和人工智慧。
  • Pynguin 是一個統一的編輯器、互動式控制檯和圖形顯示區域,使用 Python 和 PyQt 工具包編寫。Pynguin 旨在為初學者介紹程式設計概念提供一個簡單的環境。Pynguin 程式生成可儲存為 SVG 或 PNG 檔案的數字影像。
  • Crunchy 是一個 Python 程式,可以將原本靜態的 HTML 教程轉換為瀏覽器中的互動式 Python 會話。早期版本的 Crunchy 的基本功能在此截圖影片中演示。
  • Python 的新“Mathematica-like”環境是 Codenode。您可能想親自嘗試一下
  • PyKata 是一個新穎的線上環境,旨在作為 Python 的教學輔助工具。它包含少量但不斷增長的程式設計練習,學生可以自行嘗試並立即獲得反饋。歡迎教育工作者貢獻自己的練習。
  • Pyro 是一個 Python 程式設計環境,可輕鬆探索人工智慧和機器人學的高階主題。
  • GvR,或 Guido van Robot,旨在模擬 Richard Pattis 建立的原始《卡雷爾機器人》。它使用基於縮排的類 Python 語言和大約 20 節課程,旨在教授程式設計概念。線上演示可用。
  • RUR-PLE 是一個 Python 學習環境,包括一個編輯器、一個 Python shell,更重要的是,一個 Karel the Robot 克隆,它可以使用 Python 語法進行程式設計,無論是使用過程式命令 [例如 move()] 還是面向物件方法 [例如 robot.move()]。它包含大約 40 節課程。一個基於網路的版本 Reeborg's World 提供了比桌面版本更多的教程。
  • Python 的 turtle 模組本身並不是一個學習環境,但它已針對 Python 2.6 及更高版本進行了徹底改造,值得一試。示例包含在原始碼分發中(以及一個 demoViewer 程式,它也作為如何將 turtle 圖形嵌入 Tkinter 應用程式的示例)。對於安裝了舊版本 Python (2.3、2.4 或 2.5) 的使用者,可以在此處找到合適的 turtle 模組版本,其示例在此處。有一個展示 turtle 模組的 Pycon 2009 演講影片可用。

影片

Python 社群的播客、截圖影片和影片演示越來越多,其中許多可能對教育工作者感興趣。有關更多詳細資訊,請查閱Python 視聽教學材料

專業軟體包

鑑於 Python 發行版中包含大量模組,人們常說 Python 是“自帶電池”的。如果標準發行版不包含您需要的內容,您可能需要查閱Python 包索引,這是一個包含近 7000 個額外包的儲存庫。

以下僅代表可用內容的一小部分。

  • NumPy 是進行 Python 科學計算所需的基本包。它包含
    • 強大的 N 維陣列物件
    • 複雜的廣播函式
    • 基本的線性代數函式
    • 基本傅立葉變換
    • 複雜的隨機數能力
    • 整合 Fortran 程式碼的工具。
    • 整合 C/C++ 程式碼的工具。
  • SciPy(發音為“賽派”)是用於數學、科學和工程的開源軟體。SciPy 庫依賴於 NumPy,後者提供方便快捷的 N 維陣列操作。SciPy 庫旨在與 NumPy 陣列協同工作,並提供許多使用者友好且高效的數值例程,例如數值積分和最佳化例程。它們一起在所有流行的作業系統上執行,安裝快捷,並且免費。NumPy 和 SciPy 易於使用,但功能強大,足以受到世界領先科學家和工程師的信賴。如果您需要在計算機上處理數字並顯示或釋出結果,請嘗試 SciPy!
  • matplotlib 是一個 Python 2D 繪相簿,可在各種硬複製格式和跨平臺互動式環境中生成出版質量的圖形。matplotlib 可用於 Python 指令碼、Python 和 IPython shell(類似於 matlab 或 mathematica)、Web 應用程式伺服器以及六個圖形使用者介面工具包。matplotlib 試圖讓簡單的事情變得容易,讓困難的事情變得可能。只需幾行程式碼,您就可以生成圖表、直方圖、功率譜、條形圖、誤差圖、散點圖等。
  • PIL,即 Python 影像庫,為您的 Python 直譯器添加了影像處理功能。該庫支援多種檔案格式,並提供強大的影像處理和圖形功能。
  • OpenOpt 是一個免費的最佳化框架,它建立在 Numpy 之上。除了各種數值最佳化包之外,它還包括
    • FuncDesigner - 一種用於快速構建變數/陣列函式並透過自動微分獲取其導數的工具。此外,還可以透過 OpenOpt 在 FuncDesigner 中執行積分、插值、求解線性/非線性/ODE 方程組和數值最佳化問題。
    • DerApproximator - 一種透過有限差分近似獲取(或檢查使用者提供的)導數的工具。
    • SpaceFuncs - 一種用於 2D、3D、N 維幾何建模的工具,具有引數化計算、數值最佳化和求解幾何方程組的可能性。
  • VPython 使建立可導航的 3D 顯示和動畫變得容易,即使對於程式設計經驗有限的人也是如此。它包括 IDLE 的修改版本。
  • ReportLab 賦予 Python 程式直接輸出 Adobe PDF 格式的能力。開源版本在 Python 程式設計師手中功能齊全。可用於釋出課程材料。
  • SymPy 是一個用於符號數學的 Python 庫。它旨在成為一個功能齊全的計算機代數系統 (CAS),同時保持程式碼儘可能簡單,以便易於理解和輕鬆擴充套件。SymPy 完全用 Python 編寫,不需要任何外部庫。
  • Sage 不是一個 Python 包,但提供了一個展示 Python 作為程式語言的環境。它是一個根據 GPL 許可的免費開源數學軟體系統。它將許多現有開源包的功能組合到一個基於 Python 的通用介面中。Sage 的使命是為 Magma、Maple、Mathematica 和 Matlab 建立一個可行的免費開源替代品。
  • Blender 是一款跨平臺 3D 建模套件,提供建模、動畫、互動式建立和回放功能。Blender 並非 Python 包,但它確實使用 Python 提供指令碼支援。
  • Michael H. Goldwasser 和 David Letscher 編寫了一個面向物件圖形包,用於配合他們的教科書(上文提及)。

學術論文

關於使用 Python 作為程式語言,已經撰寫了許多學術論文。其中包括以下內容

最後,雖然這並非一篇學術論文,但 Philip Guo 的《為什麼 Python 是教授程式設計入門課程初學者的絕佳語言》絕對值得一讀。

遊戲時間!

如果沒有遊戲,對程式設計感興趣的人可能會少很多——結果是開發出的免費軟體也會少很多。Python 有兩個著名的遊戲開發框架

  • pygame 是使用 Python 進行遊戲開發的原始且仍然非常活躍的軟體包。它允許 Python 與 SDL(一個跨平臺多媒體庫)進行通訊。由於它需要為每個平臺和每個 Python 版本進行編譯,因此當釋出新的 Python 版本時可能會出現滯後。
  • pyglet 是基於 OpenGL 的後起之秀。由於它是一個純 Python 包,即使釋出了新的 Python 版本,它也可以按原樣使用(Python 2 到 Python 3 的過渡除外)。

雜項

  • Python for secretaries:一個資源網站,旨在向商業使用者展示如何使用少量 Python,完全專注於幫助他們完成日常工作。
  • 可自由重用資料:教師經常需要有意義的資料來構建程式設計練習。為了支援這種用法,許多教育社群成員貢獻了可自由重用資料,以便在此基礎上進行構建。
  • Greg Wilson 的軟體木工是一門針對科學家和工程師的軟體開發技能課程。
  • Kirby Urner 的 CP4E 資源將 Python 程式設計與數學主題相結合。
  • Phil Hugues 為《Linux Journal》採訪的Guido van Rossum 訪談,是與 Python 創始人關於向非計算機科學專業的學生教授 Python 的努力的對話。
  • 駭客與追蹤者:CP4E用 Python 教數學,這兩篇文章都由 Stephen Figgins 撰寫,是關於全民計算機程式設計倡議初期的舊文章。

SIG 管理