【Python簡介】
* python:
http://www.python.org
* 目前的語法還不算完全符合 python 精神,
python 3 系列會大幅更動,因此不向前相容於 python 1 & 2
為了因應這個問題, python 2.6 引入一個警告機制,
若不符合 python 3 的形式會出現警告
* 安裝 python 2.5.2:
python 官網左邊的 quick links
有 windows installer,點下去就可以開始下載
* 批踢踢的 python 板建議的編輯器是 eclipse 加上 python 模組
不過 python shell 也很好用
windows 版本安裝完成後會在程式集出現 python 資料夾
執行 "IDLE (python GUI)" ,就可以開啟 python shell
(在 linux 下可以直接打 python 就進入同樣的模式)
離開互動式介面請按 ctrl-D ,
在 windows 的命令提示字元下則以 ctrl-Z 結束離開
* 今天的投影片是賓州大學的 introduction to python
www.cis.upenn.edu/~cse391/cis391_2007_fall/Python1-2007-fall.ppt
www.cis.upenn.edu/~cse391/cis391_2007_fall/Python2-2007-fall.ppt
www.cis.upenn.edu/~cse391/cis391_2007_fall/Python3-2007-fall.ppt
* script language 中,
目前有 interactive interface 的只有 Ruby 和 python 等少數
* 在 IDLE 下可以直接做運算,例如 3*(7+2)
而且也可以做大數運算,不會破錶
* python 適合作快速的開發,
效能若有瓶頸可以在之後再以 C 修改實作
【程式開發】
* 縮排在 python 中是有意義的,若不縮排程式會不能跑
* 副檔名若為 *.py,點兩下檔案會直接執行
在 UNIX 要在第一行加上
#!/usr/bin/python
建議在 windows 上也養成習慣加上這一行
因為 windows 會略過這行,這樣若日後有需求可以直接移植
* 在 python 中,變數是沒有型態的
例如 x = 100
x 是沒有型態的,而 100 本身則會自動指為 int
若宣告 z = x,則是指到同一個物件內容
我們可以使用 id 指令觀察是否指到同一個物件內容
id(x)
id(z)
可以看到同樣的位址
* 在 python 中,雙引號和單引號的意義是一樣的
若要 \n 等保持原形(例如想直接印出字串內容,不想要讓 \n 變成換行)
可以在字串前加上 r (=raw)
y = r"World\n"
* python 會自動在印出不同變數時換行
若要強制不換行,可以加上逗點(,)
x = 34 - 23
y = "Hello"
print x,
print y
* python 3 中有 end="" (或者可以寫成 end=''←end、等號、一組引號)
可運用來作為變數印出的後置字元
預設是 \n (換行),也可以改成分隔符號、tab 等等
* 在 python 中每一句行尾不加分號
在 C language / php 下的 if
$Z = 3.45;
$y = "Hello";
if ($Z == 3.45 && $y == "Hello"){
}
在 python 下不加分號、if 後也可以不加括號
python 中的 if 使用縮排來辨識其內容
因此縮排要一致,四格空白鍵和 tab 的意義不同
else if 寫成 elif
if 判斷式:
執行內容
elif 判斷式:
執行內容
else:
* C language 使用 &&、||、!,
在 python 中,直接表示成 and、or、not,
若不等於可以用以下兩種方式表示:
if a != b
if not a == b
* 對字串使用的運算子:加號(+)和乘號(*)
加號表示字串相連,乘號表示字串重複出現的次數
"abc" + "def"
"abc" * 5
要運算時,運算元必須使用一樣的型態
所以若有需要可以使用str()函數將數值轉字串,
或用int()函數將字串轉整數
* 在 python 中,求餘數一樣是 %,求冪次則是 **
例如要得到三的平方
3 ** 2
//為去除餘數,例如:5/2.0 的結果為 2.5,5//2.0 的結果為 2
* 百分比(%) 除了求餘數外,也可以代換字串
name = "life"
"%s is easy" %name
* 當字串需要換行,又必須儲存換行符號,可以把字串存在三個引號內
a = """123
123
123
123"""
儲存的結果即為123\n123\n123\n123
* 較長的敘述句若要折行,要加上小括號
if (z == 3.45 and
y == "Hello")
在此例中,多餘的換行與空白都會被省略
* 註解符號為 #
* 對 python 來說,開頭是底線的變數通常用來宣告建構子用
【Sequence types: tuple, list, string】
* Tuple:
可以取出部分字串,
a = "Hello"
a[1]
#字串視為陣列,從0開始,因此 a[0] 取出的是 e
a[1:4]
#取「至」a[4],因此不取a[4],取出的是 ell
a[:3]
#啟始省略表示從頭開始取到 a[3],取出 Hel
a[2:]
#結尾省略表示從 a[2] 取到尾,取出 llo
* Tuple 也可以給多組值,
tu = (23, 'abc', 4.56, (2,3), 'def')
tu[1] #取出 abc
tu[1][1] #取出 abc 中的 b
* Tuple 和 list 的差別: list 可變更值、tuple 不可
tu = [23, 'abc', 4.56, (2,3), 'def'] #中括號為 list 的表示方式
tu = (23, 'abc', 4.56, (2,3), 'def') #小括號為 tuple 的表示方式
tu[0] = 100
#list 時可將 23 改為 100,但 tuple 時會出現錯誤訊息
但因 tuple 的不可更動,可使它有較好的取用效率,
或存放的資料希望不被更動,則可使用 tuple
* dir()可以用來查詢可使用的函式
a = "abc"
dir(a)
#會列出所有可用的函式
例如要取 IP 分辨 netblock 範圍,
IP = "140.117.11.2 "
IP.strip().split('.')[0:2]
strip()會消除多餘的空白,split()可依指定字元分割
* help()可用來查詢函式的用途
help("abc".isdigit)
#可用來查 isdigit() 函式對字串 abc 的作用
* python 中的真假值是以 True 和 False (首字要大寫)
例如查詢字串 abc 是否是字母
"abc".isalpha() #回傳 True
* len() 求長度
a = [1, 2, 3]
len("abc")
#求字串 abc 的長度,答案為 3
len(a)
#求 list 的長度,答案為 3
* list 中有個方法叫 append,可以直接修改物件加入新元素
a = [1,2,3]
b = a
a.append(4)
# a 就變成 '1,2,3,4',和 a 指向同一物件的 b 也是
若希望 a.append 後的結果不影響 b,可以複製整個 a 給 b
a = [1,2,3]
b = a[:]
a.append(4)
# 此時 b 的值仍是 '1,2,3'
* in 可以用來檢視是否字串或 list, tuple 中是否有需要的內容
t = (1, 2, 3)
1 in t
# tuple t 中有 1,return true
u = "abc"
"a" in u
# 字串中有 a,return true
* 除了 int 和 str 這類的轉換, tuple 和 list 也可以互轉
(1,2,3) + tuple([4,5,6])
[1,2,3] + list((4,5,6))
【實作練習一:抓取網站資料】
1. 到 python 官網,點左側選單的 documentation ,
再選取 Module Index。
2. 操作 urllib 的 example:
import urllib
#匯入 urllib 函式庫
dir(urllib)
#可以看有哪些函式可用
wretch = urlllib.urlopen("http://www.wretch.cc")
#抓取無名首頁
wretch.read()
#將抓取到的無名首頁的 html 印出
【實作練習二:迴圈】
1. 印出 list
a = [1,2,3]
for i in a
print(i)
#不設初值和終值,會依序從頭至尾走訪
2. 反序印出上例內容
a = [1,2,3]
a.reverse()
for i in a
print(i)
3. 印出字串內容
a = "Hello"
for i in a
print(i)
#會分行印出H,e,l,l,o
【實作練習三:檔案讀寫、備份練習】
1.
import os
os.chdir(r'C:\Documents and Settings\username\桌面')
#切換資料夾,r 表示不要讓路徑中的斜線被判斷為特殊字元
print os.getcwd()
#印出我們目前在哪個目錄下,檢視是否切換成功
f = open('abc.txt', 'r')
#讀檔,和 C 一樣,a = append,w = write,r = read
for i in f:
print i,
#印出檔案內容
2.
import tarfile, os
os.chdir(r"C:\Documents and Settings\veronica\桌面")
tar = tarfile.open("icon.tar.gz", "w:gz")
#指定壓縮檔案名稱,並壓縮成 *.gz 檔
tar.add("icon")
#將要壓縮的資料夾拉進來
tar.close()
#壓縮完成後要 close 免得佔資源
留言列表