注意: 雖然 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 初學者指南 的集合。此外,以下內容可能對教育工作者特別感興趣

  • Think Python,作者 Allen B. Downey,是 How to Think Like a Computer Scientist Learning with Python 的大幅修訂版。它可以以各種格式免費獲得;也可以購買印刷版。
  • Python for Informatics: Exploring Information,作者 Charles Severance,是另一本從上面提到的免費提供的 How to Think Like a Computer Scientist Learning with Python 中衍生出來的書。截至 2010 年 1 月,這本書僅部分完成,各章節以 pdf 檔案形式免費提供。
  • Dave Kuhlman 的免費書籍 和其他教程集也是教育工作者的一個非常好的資源。
  • Andrew Harrington 的實踐教程 適合高中和大學級別的 CS-0 學生。 Harrington 博士 在芝加哥洛約拉大學任教。

教科書和其他非免費書籍

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

為兒童、年輕人和老年人準備

也提供大學級別的教科書

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

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

學習環境

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

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

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

學習資源

這些資源、互動式線上教程和其他教育資源要麼幫助教授 Python,要麼使用 Python 來教授程式設計。

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

影片

Python 社群的播客、螢幕錄影和影片演示越來越多,其中許多可能對教育工作者感興趣。有關更多詳細資訊,請參閱 Python 的音訊/影片教學材料

專門的軟體包

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

以下只是可用資源的一小部分示例。

  • NumPy 是使用 Python 進行科學計算所需的基本包。它包含
    • 一個強大的 N 維陣列物件
    • 複雜的廣播功能
    • 基本的線性代數函式
    • 基本的傅立葉變換
    • 複雜的隨機數生成能力
    • 用於整合 Fortran 程式碼的工具。
    • 用於整合 C/C++ 程式碼的工具。
  • SciPy(發音為“Sigh Pie”)是用於數學、科學和工程的開源軟體。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 的過渡)。

其他

SIG 管理