羅德興老師的教學歷程檔案 - 104-2 資訊技術 - 第一課: Basics
 

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


歷程檔案 Portfolio

    第一課: Basics


    第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





    << 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

    全部共 5則留言
    02-24 10:49:hello.py # 此為單行註解 ''' 此為多行註解 (3個單引號) This is the First program by L.D.S. on 2016/02/24 #C:\Python31\python.exe # -*- coding:utf-8 -*- ''' print ("Hello! 10114DXXX 羅德興") input ("Please Key in Any Key to Continue ...")
    03-02 09:55:# hello2.py # 此為單行註解 ''' 此為多行註解 (3個單引號) This is the Variable, Decision & Loop program by L.D.S. on 2016/03/02 #C:\Python31\python.exe # -*- coding:utf-8 -*- ''' Student = input ("Please Key in Your 姓名, then press ENTER to Continue ...") print ("Hi!, ", Student, "同學,您好") x= 3 y = 5 # while True: + break while True: print ("請問", x, "+", y, "= ?") ans = input () print ("Your 輸入的 answer 是字串 ",ans) if (int(ans) == (x+y)): print ("Good!") break else: print ("Wrong, 再試試")
    03-09 09:45:# datatype.py a='3' b = 3 c=3.14156 print ("The Type of a ", a, " is",type(a)) print ("The Type of b ", b, " is",type(b)) print ("The Type of c ", c, " is",type(c)) li0 = [3, 3.14, "春", "秋"] print ("List Type") for i in range(0, 4): print ("串列 li0 [", i, "] 是 ", li0[i]) print ("Loop 應用1") for i in range(1, 11): print ("i = ", i) print ("Loop 應用2") for i in range(10, 1, -2): print ("i = ", i)
    03-09 10:22:# loop2.py # This is double loop by L.D.S on 2016/03/08 # \t Tab 印出,\n 跳行 印出, end= "" 接續印出 print ("雙層 Loop 應用1") for i in range(1, 11): for j in range(10, 0,-1): print (i, "*", j, "=", i*j, "\t", end= " ") print ("\n")
    03-09 11:06:# quick.py # This is a quick explanation by L.D.S on 2016/03/08 # import os def main(): print ('Hello! World') def foo (param1, secondparam): res = param1 + secondparam print (param1, "+", secondparam, " 是 ", res) if res < 50: print ('foo') elif (res>=50) and ((param1 == 42) or (secondparam == 24)): print ('bar') else: print ('moo') return res if __name__ == '__main__': print (__name__ , "is Running") foo (5,10) input("Press any to Continue")
    登入帳號密碼代表遵守學術網路規範


    文章分類 Labels


    最新文章 Top10

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