羅德興老師的教學歷程檔案 - 108-2 資料結構 - Python 學習資源(二) |
|
|
Python 學習資源(二)第1章 Python 簡介 (1) Python 是一種程式語言 (Programming language) - 程式語言:一連串的命令程序,用來指導電腦如何運作 * 高階語言需轉譯成為機器語言(亦稱為目的程式),以便電腦執行 → 轉譯器依據不同電腦轉譯為不同目的程式,可在不同電腦執行 * 編譯(Compilation):利用編譯器(Compiler)將整個原始程式轉譯為目的程式(機器語 言) # 編譯語言常用來撰寫系統模組,因此常稱為系統語言,執行速度快 * 直譯(Interpretation):利用直譯器(Interpreter)一次將一個指令轉譯為目的指令並執 行,如此持續指令轉譯及執行直到程式結束或發生錯誤,發生錯誤即中斷並顯示 錯誤訊息 # 執行速度較慢,但程式開發較為快速,且因一步一步執行程式(類似互動式模 式),偵錯較為容易 # 直譯語言重要功能:快速將系統模組黏合(Glue),完成系統整合 * 常見高階語言(High-level language) # 編譯語言:COBOL, Pascal, FORTRAN, Ada, C, C++, Java ... # 直譯語言:PHP, Perl, Python, Ruby, MATLAB, Octave, Javascript … # 依不同實作,有些語言可編譯亦可直譯,例如BASIC # 直譯語言有時被稱為非常高階語言(Very high-level language) (2) Python語言特性與資源 - Python沿革 * 1980~1990年代由荷蘭程式設計師Guido van Rossum所研發 - Python特性 * 容易學習、功能強大 * 效率高的高階資料結構 * 簡單且有效的物件導向特性 * 優雅的語法及動態變數型態(變數不必事先宣告) * 適合快速開發應用程式,小系統及大系統均適合 * 自由軟體、開放源碼、跨平台、社群支援完整 * 教材豐富,大部份免費 * 極適合當作第一個學習的程式語言 - 網站 * 官方:http://www.python.org * 台灣:http://wiki.python.org.tw/PythonProjects - Python的禪思:http://www.python.org/dev/peps/pep-0020/ - 安裝Python * Windows:http://www.python.org → download “Python 3.x.x Windows x86 MSI Installer” * Linux:預設已安裝 * Mac:http://www.python.org → download “Python 3.x.x Mac OS X 32-bit i386/PPC Installer” - Python的各類應用 * 網際系統開發 # Django: http://www.djangoproject.com/ # Grok: http://grok.zope.org/ # Pylon: http://pylonshq.com/ # TurboGear: http://www.turbogears.org/ # Zope: http://www.zope.org/ # Plone: http://plone.org/ * 桌面圖形介面(GUI)程式設計 # Tkinter (內建): http://wiki.python.org/moin/TkInter # wxPython: http://www.wxpython.com # PyGTK: http://www.pygtk.org/ # PyQT: http://wiki.python.org/moin/PyQt * 跨平台自然圖形介面(NUI)程式開發架構 # Kivy: http://kivy.org/#home * 網路程式設計 # Twisted Matrix Labs: http://twistedmatrix.com/trac/ * 電腦遊戲設計 # PyGame: http://www.pygame.org * 科學及數值運算 # SciPy: http://www.scipy.org/ # NumPy: http://numpy.scipy.org/ # PyMOL: http://www.pymol.org/ * 資料庫 # Custom and ODBC interfaces: https://wiki.python.org/moin/DatabaseProgramming/ # ZODB: http://www.zodb.org/en/latest/ # Durus: https://www.mems-exchange.org/software/ * 教育 # Python Bibliotheca: http://openbookproject.net/pybiblio/ * 自然語言處理(Natural language processing) # NLTK: http://www.nltk.org/ * 符號數學(Symbolic mathematics) # SymPy: http://sympy.org/ - 開發環境 * Python+Eclipse+PyDev:開放源碼之Python整合開發環境(Integrated development environment, IDE) * 簡易IDE: Eric - 安裝Python - 或 申請 Google 帳號,使用 Google Colab 撰寫 Python 程式 https://colab.research.google.com - 以下以 安裝 Python 為例說明 << Tips>> 為方便作業,請編寫一個 批次檔 (如 p.bat 設定路徑,更換工作目錄)如下 PATH=C:\python34\;c:\python34\Scripts\;c:\python34_x86\Scripts\;%PATH% cd c:\python34\Scripts\ (3) Python初體驗 - 學習程式語言的程序 * 先學各種語法,再學範例,再學問題解決 * 先學範例,再慢慢了解各種語法,再學問題解決 - 簡單範例: 終端機模式或IDLE (“>>>”為Python提示符號,“#”為註解) 要離開終端機模式時,請按 Ctrl+Z * 單行指令 → Python指令結束不需分號 * 多行指令(區塊或函式) # Python以縮排(Indentation)來判斷程式區塊(例如if, else, elif, for, while, def, class等 指令或函式) # 區塊第一行最後必須加冒號(:) # 區塊裡的指令必須縮排(需利用空格來對齊縮排,不可使用定位鍵) # Python縮排格式非常重要,縮排不對齊會造成程式執行錯誤,這強迫程式設計師 必須將程式結構化,以提升閱讀性(Readability),此與其他語言非常不同 # Donald Knuth: Programs are meant to be read by humans and only incidentally for computers to execute. # 註:C或Java等其他語言以大括號{ }標示區塊 # for迴圈 >>> for i in range(5): print(i) 01234 # 無參數(Parameter)的函式 >>> def hello(): print('Hello') print('Computers are fun!') >>> hello() # 呼叫函式 Hello Computers are fun! # 有參數的函式 >>> def greet(person): print('Hello', person) print('How are you?') >>> >>> greet('John') # 呼叫函式,輸入參數'John' Hello John How are you! >>> greet('Emily') # 呼叫函式,輸入參數'Emily' Hello Emily How are you! >>> greet # 輸入沒有括弧的函式名稱:顯示函式存在記憶體的位址 <function greet at 0x0111D078> - 模組(Module)或命令稿(Script ,腳本)模式 * 將多行指令寫入一個文字檔案中,稱為模組或命令稿(腳本) (4) 在Eclipse+PyDev環境下編輯模組 1-6 # 執行Eclipse,設定工作區目錄(Workspace) # Python程式的結構:專案(Project)、套裝(Package,或目錄)、模組(Module,或程 式檔) # 建立專案: - File → New → Project … → PyDev Project,Project name:設定專案名稱(例 如:PythonPrograms),Grammar version:選擇正確版本(3.0),Interpreter:設 定正確直譯器python3 (Click here to configure an interpreter not listed) → Finish - 接著可設定PyDev perspective,或者:Window → Open Perspective → Other… → PyDev → OK # 建立模組:File → PyDev Module - Package: 包裝名稱(即目錄,例如:Ch1) - Name: 模組名稱(即程式檔,例如:chaos) → Finish → (<Empty>) → OK * 於編輯區輸入程式碼: 1 #!/usr/bin/env python3 2 3 # File: chaos.py 4 # A simple program illustrating chaotic behavior. 5 6 def main(): 7 print('This program illustrates a chaotic function') 8 x = eval(input('Enter a number between 0 and 1: ')) 9 for i in range(10): 10 x = 3.9 * x * (1 - x) 11 print(x) 12 13 main() 14 * choas.py的內容 # 第1行:告訴作業系統執行環境是python3 # 第3、4行:註解,以"#"符號開頭 # 第6行:def main():為定義函式(後面須有冒號) # 第7行:print('...')印出訊息 # 第8行:x = eval(input('Enter a number between 0 and 1: ')) - x 為變數(Variable) - input('...')印出訊息,並等待使用者輸入資料 - eval(...)將使用者輸入的資料(Python視為字串)轉為數值 # 第9行:for i in range(10):執行10次之迴圈(後面須有冒號) - range(10): 0, 1, 2, …, 9 (從0開始),因此,i = 0, 1, 2, …, 9 - 屬for迴圈內的指令需縮排 # 第10行:x = 3.9 * x * (1 - x)計算亂數之公式 # 第11行:print(x)印出變數x之值(函式的定義完成) # 第13行:main()呼叫執行main函式 # 嚴格來說,也可以不要定義函式,因為模組裡的執行會依序執行,因此模組亦可 如下設計,但如此設計之缺點為無法使用chaos.main()方式執行模組中的某個函式 (一個模組可以包含許多函式): 1-7 print('This program illustrates a chaotic function') x = eval(input('Enter a number between 0 and 1: ')) for i in range(10): x = 3.9 * x * (1 - x) print(x) * 執行chaos.py # 點選執行按鈕(Run button)的下拉選單: → Run As → Python Run This program illustrates a chaotic function Enter a number between 0 and 1: 0.4 0.9359999999999999 0.2336256000000002 0.6982742481960964 0.8216805577588637 0.5714343131637907 0.9550988417209882 0.16725167263043805 0.5431863474677594 0.9677262636303364 0.12180535501057962 1-8
|
|
中華科技大學數位化學習歷程 - 意見反應 |