Python Lecture 1: Basics
預習問題 第一部分 請登入 study 主機, 完成下列指令練習 : 1. 在自己的 home directory 下, 建立子目錄 work 2. 移動到 work 目錄下 3. 複製檔案 /home/teachers/weitingc/lecture_ex/python/test.py 到你的 work 目錄下 4. 將 test.py 更改名稱為 square.py
python https://www.python.org/ 廣為使用及開源的免費軟體之一 跨平台使用 :Linux, Windows, Mac 可使用別人提供的 library 亦可開放自己整合的 library 貢獻給開源社群 你可以在 study 主機上使用 python, 或在你的筆電上安裝使用 Anaconda ( 整合安裝 編輯 執行 python 程式的介面 )
連到 study 執行 python: 基本指令 先進入 python 互動式環境, 再輸入 python 指令 在 unix/linux 的指令模式, 輸入 python, 按下 enter 進入 python 環境後, 出現 >>> 等待你下 python 指令 在 >>> 後輸入 python 指令, 按下 enter 後馬上執行並顯示結果 結束時, 按下 ctrl + d 跳出 python 環境
The Very Basics of Python: Print Variables Arithmetic Operations Input from keyboard Import module
基本指令 : print( ) 顯示在螢幕上 在 print 函式中放進想要顯示在螢幕上的內容 顯示一串文字 ( 字串, 用單引號 包起來 ) print ( Hello World!! ) 顯示幾個數字, 函式內以逗號分開 print(3.1, 2, 4.5) 顯示幾個變數所儲存的數值 ( 或字串內容 ) x=3 y=2 print(x,y)
基本指令 : 數值計算 在指令列可以輸入運算式進行數值的計算, 類似計算機的功能, 按下 enter 就會顯示結果 加 + 減 - 乘 * 除 / 次方 ** 取餘數 % 整除至無條件捨去的整數 ( 整實數 ) // () 內優先運算
基本指令 : 變數, 以及為變數 賦值 變數就像是一個可以儲存資料的盒子 變數名稱是盒子上的標籤, 例如 x 用 = 把資料存進變數裡, 賦予變數內容, 如 x = 3 口語化的意思就是 令變數 x 為 3 等號左邊是變數名稱, 右邊是資料, 資料的種類可以是字串 數字, 或運算式 y = x + 3.1 z = hello 變數的 型態 就根據賦值的資料種類決定, 可以用 type 查詢
Python 變數型態 : 數值與字串 Number 數值 整數 int : a = 11 實數 float: a = 1.1e-18 ( 科學記號表示法,1.1 x 10-18 ) 複數 complex: a = 4. + 7j String 字串 ( 用 或 夾起 ) x = Hello World! or x = Hello World! 取出字串的局部 :x[0:4] Hell 方括號內填入開始與結束 +1 的 index, 用 : 分開 注意 :index 從 0 開始計算! 一旦賦值後, 不可以對字串的局部做更改,e.g. x[0:3] = Yo! 是錯誤的語法!!
Python 變數的取名規則 變數名稱中的大小寫是有區別的 (a A 會當作不同的變數 ) 變數取名請避開內建函數或指令, 否則會造成錯誤 and, as, assert, break, class, continue, def, del, else, elif, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, with, yield
變數可以進行運算 x = -3.0 y = 3.1 print( x + y ) 0.1 print( x // y ) -1.0 print( x**2 ) 9.0 print( abs(x) ) 3.0 print( max(x,y) ) 3.1 內建的基本數學函數 ( 不用安裝 module) abs(x) : 絕對值 max(x1, x2,...) : 找出最大值 min(x1, x2,...) : 找出最小值 round(x,n): 四捨五入到小數點下第 n 位 (n 若省略, 則使用預設 n = 0)
一些關於變數運算的細節 : 整數與實數混合運算 兩個整數相除, 結果是實數 x = 21 y = 10 z = x / y print(z) 2.1 整除到無條件捨去的最近整數 ( 整實數 ) // 結果的類型取決於兩個變數的類型 : ( 兩個都整數 ) 9//2 4 ( 整數 ) ( 兩個都實數 ) 9.0//2.0 4.0 ( 整實數 ) ( 混型運算 ) 11.0//3 3.0 ( 整實數 )
一些關於變數運算的細節 : 字串的 運算 字串 相加 : 形成新的字串 x = Hello y = World z = x + y print(z) HelloWorld 字串乘一個整數 (int): 字串重複幾次 ( 特例, 其他字串變數與數值變數的混型運算會得到錯誤訊息!) x = Yo! y = x * 3 print(y) Yo!Yo!Yo!
字串變數跟數值進行運算會造成錯誤! 會出現錯誤訊息 ( 不要慌張, 從錯誤訊息判斷可能出錯的原因 )
將變數型態轉換, 再進行運算 可以利用內建函數將不同型態的變數 ( 資料 ) 轉換, 再做運算 int (x) 轉為整數 float (x) 轉為實數 str (x) 轉為字串
變數賦值與移除 python 可以在同一個指令中對多個變數賦值 a, b, c = 2, 1, 0 a = 2, b = 1, c=0 等號左邊是變數名稱清單, 右邊是依序要儲存的資料, 用逗號分開 若想要移除變數, 使用 del del x,y,a,b,c 16
.py 檔 : 串接多個 python 指令的腳本 (script) 先用 nano( 或任何文字檔編輯器 ) 編輯一個純文字檔案, 檔名要是.py 結尾 檔案內容是數個 python 指令串接 ( 一個指令一行 ) 執行.py 檔 : 直接在 unix/linux 指令列, 或使用 spyder ( 後面說明 ) 例子 : 用 nano 看看 square.py 的內容
連到 study 執行 python:.py 檔 不用進入 python 環境, 直接 執行.py 檔 在 unix/linux 的指令模式, 輸入 python xxx.py 按 enter 就可依序執行檔案內的這串指令 (e.g. python square.py)
input 讓使用者輸入字串, 為變數賦值 a = input() 會等使用者輸入 ( 輸入後按 enter), 並以字串型態存入 a 這個變數中 b = input( name: ) 螢幕上顯示訊息 name:, 使用者輸入的內容, 會用字串類型存到 b 變數 就算使用者輸入數字, 仍然是以字串型態儲存 可以之後用 int(a), float(a) 轉換型態
.py 檔基本規則 : # 註解符號 # 符號之後的文字會被判斷為註解, 不會當作指令執行 ( 可以在一行的開頭或中間加入 ) 為什麼要寫註解? 在寫程式的時候先掌握基本架構 ( 程式的草稿 ) 讓寫程式的人可以對程式內容進行口語化的說明 提醒, 幫助自己或他人日後使用 修改時方便參考 回憶 可以考慮寫成註解的事項 在程式開頭, 解釋整個程式的用處 基本架構 版本 更新日期 列出各變數代表的意義, 與相對應的單位 解釋每一段程式要執行的功能 計算相對應的原始方程式 其他對自己或程式讀者重要的提醒
.py 檔基本規則 : 縮排對齊 縮排空格的數量如果不同, 會被判定為不同的段落 ( 主要在 IF 判斷式或迴圈的段落中使用 ) 隨興縮排可能造成執行錯誤 養成每行開頭對齊的習慣!
預習問題 第二部分 用 nano 或其他編輯器打開 square.py 檔案, 瀏覽裡面的程式 (1) 變數 x 是什麼類型? 你是怎麼判斷的? (2) x = input('please input a number:') 這行, 會讓程式執行時發生什麼事情? (3) 第一行開頭的 #, 有甚麼作用?
Modules or package ( 也稱為 library) modules or packages : 通常是其他人寫好的函數或指令, 打包成一個 工具庫 方便分享使用 ( 非 python 內建, 可能會需要下載安裝 ) 本課程會用到的 library: math ( 數學 ), numpy (array), matplotlib ( 基本繪圖 ) 使用方式 :import module_name 在執行工具庫內的指令之前, 就要先把 modules 引進來 ( 不然 python 不會認得非內建的指令 ) 使用工具庫內的指令 :module_name.function (or module_name.constant)
import math 下面函數必須先引入 math 工具才能使用, 在.py 檔開頭先寫入 import math math.sqrt(x) : 平方根 math.ceil(x): 無條件進位 math.floor(x): 無條件捨去 math.exp(x): 指數函數 math.log(x): 自然對數, math.log10(x): 以 10 為底對數 math.cos(x), math.sin(x), math.tan(x), math.acos(x), math.asin(x), math.atan(x): 三角函數 math.degrees(x):converts angle x from radians to degrees. math.radians(x):converts angle x from degrees to radians.
import module with abbreviation 可以使用 import module_name as xxx (xxx 是你自己取的縮寫 ) 使用指令的語法就簡化成 xxx.function, 例如 import math as m x=m.cos(m.pi)
在你的筆電上安裝使用 Anaconda! 1. 已安裝好許多常用的科學 數學 工程 數據分析的 library 2. 完全開源 (open) 和免費 (free) 3. 支持不同版本的 Python (2.7 3.6), 可自由切換 (-> 安裝不同版本即可使用 ) 4. 提供 spyder 視窗介面
下載 Anaconda: https://www.continuum.io/downloads 安裝教學 Windows: https://docs.continuum.io/anaconda/install/windows Mac: https://docs.continuum.io/anaconda/install/mac-os 選擇自己電腦相對應的系統 (Windows/Mac) 選 python3.6 (64-bit) version
安裝 Anaconda 1. 雙擊下載好的程式 2. 可以直接套用預設值 ( 一直 next) 3. 按 Finish 之前, 取消兩個選項
spyder 編輯器 安裝好 Annaconda 之後, 會一併裝好 spyder 1. 在工作開始列搜尋 spyder 2. 點 icon 執行 3. 出現如右畫面 a. 右邊的防火牆設定 允許存取 b. 左邊取消 check for updates, 按 OK
Spyder 介面 點工具列的綠色箭頭依序執行.py 檔的指令 開啟新的.py 檔 開啟存在的.py 檔 存檔 編輯.py 檔 ( 一串 python 的指令 ) 會用不同顏色字體標記註解 特殊函數 括號等 輸入函數名稱的前幾個字母再按下 tab 鍵, 會出現提示 列出已存在的變數清單 help 查詢指令等 即時呈現程式執行結果 print 的輸出 圖形 錯誤訊息
體驗 spyder 介面 用 mobaxterm 從 study 上把 square.py 下載到你的筆電 用 spyder 開啟並執行 square.py 寫一個新的 CtoF.py, 螢幕上顯示字串 please input a temperature in Celcius, 接收使用者輸入一個數值 ( 攝氏溫度 ) 計算出對應的華氏溫度, 將數值顯示在螢幕上 執行並測試結果是否正確 31
Python is an object-oriented programming language 生活中的例子 : 每個人都有自己的特徵以及可以從事的行動 物件 (object): 不同型態的人 特徵 (attribute): 人名 身高 膚色... 工作 (method): 寫作業 批改作業 出作業... 不同型態的 object 有特定的 attribute and method( 例如 : 學生 可 寫作業 但不能 批改作業 ) 推演到 python 不同變數型態視為不同的物件 (object), 譬如 int, string 變數儲存的 數值 ( 或字串 ) 則為其 attribute 不同物件有各自的 methods( 會使用到這個變數數值的函式 ), 要使用物件 x 的 method B, 語法是 : x.b(...) 用 help(x.b) 可以查詢指令用法 (e.g., help(x.bitlength), help(math.atan),)
Online resource 官方教學文 1. https://docs.python.org/3.6/tutorial/index.html 2. https://www.tutorialspoint.com/python3/index.htm 3. https://docs.python.org/3.6/ 其他網路資源 / 線上課程 1. http://tech-marsw.logdown.com/blog/2014/09/03/getting-started-with-pythonin-ten-minute 2. http://blog.techbridge.cc/2016/12/17/python101-tutorial/ 3. coursera: https://www.coursera.org/learn/python
運算式的簡化 如果要進行下面的運算 a= a+b ( 用 a+b 的結果為 a 重新賦值 ) 在 python 可以改寫成 : a += b 所以算術運算符號可以有 += -= *= /= %= **= //=
Python 作業繳交注意事項 所有檔案 ( 程式 圖檔 資料檔 ) 必須上傳到 study 主機上的指定位置 ( 如 ~/home/hw01/ ) 評分是根據程式在 study 上執行的結果, 所以上傳後務必在 study 上測試執行