作者ming1053 (ming)
看板b97902HW
标题[计概] Python 入门
时间Mon Nov 3 21:50:25 2008
相信有上今天的计概的各位单班同学都开始接触 Python 了,TA 在 lab 快速 view 过
一堆语法和 sample code ,如果有当场记起来的那真的是非常厉害,不过搞不太清楚的同
学也不要太担心,我今天找到一份还算可以的入门放在这里,除了课程网上公布的 slide
以外,也可以参考一下这份教学,其实语法和 C 比起来应该是和善多了啦XD 用相同的观
念应该很容易可以把作业解决的。
另外建议大家可以开始养成查官方 library & document 的习惯了,这对学习一种新的语
言有很大的帮助。
The Python Standard Library
http://docs.python.org/library/
Python Libray Reference
http://www.python.org/doc/2.5.2/lib/lib.html
Python Taiwan
http://www.python.tw/
Python Tutorial
Chinese
http://www.freebsd.org.hk/html/python/tut_tw/tut.html
Origin
http://www.python.org/doc/2.5.2/tut/tut.html
------------------------------------------------------------------------------
使用Python
* 有两种主要使用python的方法
o 使用互动式命令列
+ e.q. 直接键入python就会进入python的互动式命令列
o 将程式写成档案,再由python执行
+ 直在将程式码写在档案内,然後再执行python去读取该档案
# Ex: python hello.py
+ 或是在档案的第一个行写着 #!/usr/bin/env python,然後在第二行
\
之後输入程式码,如此可以直接执行该档案
# Ex: ./hello.py
* 作业平台
o Linux、FreeBSD …
o Windows
第一个python程式 - Hello World
* 使用互动式命令列
>>> print “Hello World”
>>>
* 放在档案里
#!/usr/bin/env python
print “Hello World”
基本概念
* 语法特色
o 以冒号(:)做为叙述的开始
o 不必使用分号(;)做为结尾
o 井字号(#)做为注解符号,同行井字号後的任何字将被忽略
o 使用tab键做为缩排区块的依据
o 不必指定变数型态 (runtime时才会进行binding)
变数(Variables)和 表示式(Expressions)
* 表示式
3 + 5
3 + (5 * 4)
3 ** 2
‘Hello’ + ‘World’
* 变数指定
a = 4 << 3
b = a * 4.5
c = (a+b)/2.5
a = “Hello World”
o 型别是动态的,会根据指定时的物件来决定型别
o 变数单纯只是物件的名称,并不会和记忆体绑在一起。
e.q.和记忆体绑在一起的是物件,而不是物件名称。
条件式叙述
(Conditional Statements) Part I
* if-else
if a < b:
z = b
else:
z = a
* pass 叙述 - 不做任何事时使用
if a < b:
pass
else:
z = a
条件式叙述
(Conditional Statements) Part II
* elif叙述
if a == ‘+’:
op = PLUS
elif a == ‘-’:
op = MINUS
else:
op = UNKNOWN
o 没有像C语言一样,有switch的语法
* 布林表示式 - and, or, not
if b >= a and b <= c:
print ‘b is between a and c’
if not (b < a or c > c):
print ‘b is still between a and c’
基本型态 (Numbers and String)
* Numbers (数)
a = 3 # Integer (整数)
b = 4.5 # Float point (浮点数)
c = 51728888333L # Long Integer (精准度无限)
d = 4 + 3j # Complex number (复数)
* Strings (字串)
a = 'Hello' # Single quotes
b = 'World' # Double quotes
c = "Bob said 'hey there.'" # A mix of both
d = '''A triple qouted string
can span multiple lines
like this'''
e = """Also works for double quotes"""
基本型态 - 串列(Lists)
* 任意物件的串列
a = [2, 3, 4] # A list of integer
b = [2, 7, 3.5, “Hello”] # A mixed list
c = [] # An empty list
d = [2, [a, b]] # A list containing a list
e = a + b # Join two lists
* 串列的操作
x = a[1] # Get 2nd element (0 is first)
y = b[1:3] # Return a sub-list
z = d[1][0][2] # Nested lists
b[0] = 42 # Change an element
基本型态 - 固定有序列(Tuples)
* Tuples
f = (2,3,4,5) # A tuple of integers
g = (,) # An empty tuple
h = (2, [3,4], (10,11,12)) # A tuple containing mixed objects
* Tuples的操作
x = f[1] # Element access. x = 3
y = f[1:3] # Slices. y = (3,4)
z = h[1][1] # Nesting. z = 4
* 特色
o 与list类似,最大的不同tuple是一种唯读且不可变更的资料结构
o 不可取代tuple中的任意一个元素,因为它是唯读不可变更的
基本型态 - 字典 (Dictionaries)
* Dictionaries (关联阵列)
a = { } # An empty dictionary
b = { ’x’: 3, ’y’: 4 }
c = { ’uid’: 105,
’login’: ’beazley’,
’name’ : ’David Beazley’
}
* Dictionaries的存取
u = c[’uid’] # Get an element
c[’shell’] = "/bin/sh" # Set an element
if c.has_key("directory"): # Check for presence of an member
d = c[’directory’]
else:
d = None
d = c.get("directory",None) # Same thing, more compact
回圈 (Loops)
* while叙述
while a < b:
# Do something
a = a + 1
* for叙述 (走访序列的元素)
for i in [3, 4, 10, 25]:
print i
# Print characters one at a time
for c in "Hello World":
print c
# Loop over a range of numbers
for i in range(0,100):
print i
函式 (Functions)
* def叙述
# Return the remainder of a/b
def remainder(a,b):
q = a/b
r = a - q*b
return r
# Now use it
a = remainder(42,5) # a = 2
* 回传一个以上的值
def divide(a,b):
q = a/b
r = a - q*b
return q,r
x,y = divide(42,5) # x = 8, y = 2
类别 (Classes)
* class叙述
class Account:
def __init__(self, initial):
self.balance = initial
def deposit(self, amt):
self.balance = self.balance + amt
def withdraw(self,amt):
self.balance = self.balance - amt
def getbalance(self):
return self.balance
* 使用定义好的class
a = Account(1000.00)
a.deposit(550.23)
a.deposit(100)
a.withdraw(50)
print a.getbalance()
例外处理 (Exceptions)
* try叙述
try:
f = open("foo")
except IOError:
print "Couldn’t open ’foo’. Sorry."
* raise叙述
def factorial(n):
if n < 0:
raise ValueError,"Expected non-negative number"
if (n <= 1): return 1
else: return n*factorial(n-1)
* 没有处理的例外
>>> factorial(-1)
Traceback (innermost last):
File "<stdin>", line 1, in ?
File "<stdin>", line 3, in factorial
ValueError: Expected non-negative number
>>>
档案处理
* open()函式
f = open("foo","w") # Open a file for writing
g = open("bar","r") # Open a file for reading
* 档案的读取/写入
f.write("Hello World")
data = g.read() # Read all data
line = g.readline() # Read a single line
lines = g.readlines() # Read data as a list of lines
* 格式化的输入输出
o 使用%来格式化字串
for i in range(0,10):
f.write("2 times %d = %d\n" % (i, 2*i))
模组 (Modules)
* 程式可分成好几个模组
# numbers.py
def divide(a,b):
q = a/b
r = a - q*b
return q,r
def gcd(x,y):
g = y
while x > 0:
g = x
x = y % x
y = g
return g
* import叙述
import numbers
x,y = numbers.divide(42,5)
n = numbers.gcd(7291823, 5683)
Python的标准模组函式库
* Python本身就包含了大量的模组提供使用
o String processing
o Operating system interfaces
o Networking
o Threads
o GUI
o Database
o Language services
o Security.
* 使用模组
import string
...
a = string.split(x)
原文转载自
http://www.cdpa.nsysu.edu.tw/wp/wp-content/uploads/2006/07/Python.ppt
--
◢◢◢
▃▃ ▃▂
◢
▃▂
▂┐ ▃ ▂▂▂▃
▆◤◤ ▎
◤▎
◥ ◤◢ │ φ批踢踢兔.itsming
▂▂▂
▄▎
▄▎
◣ ▊◣ └ ▁▁▁▁▁▁▁▁▁
▌▌▌ ▎ ▎
◣◥▎ ┌ ──── ▅▅ ◤
◤◤◤ ▅▅ ▅▅▅▅ ▇▅▆ ▅
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.239.158
1F:推 benck:好长= = 不过还是先推1个 11/03 21:51
2F:推 fishead1116:原po超认真 帮推一个 11/03 23:17
3F:推 Poplarysl: 帮推 照顾长帐号~~ 11/04 00:05
※ 编辑: ming1053 来自: 140.112.239.158 (11/04 00:47)
4F:→ chenaren:糟糕 不应该贪睡的 11/05 00:13
5F:推 dennis2030:请问 b = 'World' # Double quotes ' 要改成 " 吗? 11/06 14:29
6F:推 jimmyken793:印象中前後一样就可以 11/06 21:14
7F:推 dennis2030:所以那句的意思是 不管'或是"都是指定成字串? 11/07 00:27
8F:→ dennis2030:话说忘了感谢ming同学努力的帮忙蒐集资料!感谢! 11/07 00:28
9F:推 jimmyken793:对 但是引号要成对 也就是说'' 或 "" 11/07 00:55