羅德興老師的教學歷程檔案 - 108-2 資料結構 - Python 學習資源(二)
 

企業資訊與管理系
助理教授/日導
羅德興


歷程檔案 Portfolio

    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
     
    全部共 0則留言
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

    中華科技大學數位化學習歷程 - 意見反應