標籤:重複 進階語言 inpu mos raw_input for迴圈 分析 his split
[TOC]#1 程式之道
##1.1 Python程式語言- 有兩種程式可以讓進階語言轉換為低級語言,分別是直譯器和編譯器.- 有兩種方式使用python的直譯器:shell模式和指令碼模式.##1.8 形式語言和自然語言- 自然語言是人們所說的語言。- 形式語言是人們為特定的應用設計的語言*<b>程式語言是設計來呈現計算的形式語言</b>*文法規則分為兩種,分別屬於標記和結構。標記是程式語言的基本組件,就像字詞、數字和化學元素一樣;結構是標記的排列方法。> 當你閱讀英文句子或者是形式語言的陳述,你必須理解句子的結構是什麼,這種過程叫分析。
**歧義性:**自然語言充滿了歧義
**冗贅性:**自然語言為了彌補歧義以及減少誤解,使用了大量的贅詞。**字面性:**自然語言充滿成語和隱喻。
***#2 變數、運算式以及陳述(print)##2.1 數值和型態- 2是數值, "chess"是字串.```python>>> print ‘chess‘chess>>> type(3.2)<type ‘float‘>```##2.3 變數名稱與關鍵字- **變數名稱**可以為任意長度,也可以同時包含字母與數字. 但是必須以字母開頭python有`31`個關鍵字<b><font color=blue>|and|del|from|not|while||:----|:---|:----|:---|:----||as|elif|global|or|with|
|assert|else|if|pass|yield|
|break|except|import|print|class|
|exec|in|raise|continue|finally|
|is|return|def|for|lambda|
|try|</font></b>##2.5 運算式求值令人迷惑的是,求取運算式的值和列印一個數值不完全相等```python>>> message="oh, shit">>> message‘oh, shit‘>>> print messageoh, shit>>> ```##2.9 輸入Python有兩個內建函數可以取得鍵盤的輸入資料:```python>>> n=raw_input(‘請輸入你的姓名:‘)請輸入你的姓名:lifeng>>> print nlifeng>>> n=input(‘請輸入一個數字運算式:‘)請輸入一個數字運算式:3*9>>> print n27>>> n=raw_input(‘請輸入一個運算式:‘)請輸入一個運算式:3*8>>> print n3*8```input輸入的是運算式***#3 函數## 3.1 函數的定義及用法- 在程式設計的範疇內,函數是一個有名稱的語句序列,用來執行所需的運算。在python中,函數定義的文法為:```pythondef name(List of PARAMETERS): STATEMENTS
```##3.3 參數、自變數以及import語句- 另一個接受一個以上自變數的內建函數是max```python>>> max(7,11,4,23,93)93```- import關鍵字我們可以使用import語句來將我們在指令碼中定義的函數匯入直譯式程式中。我們先假設print_twice函數被定義在chap03.py中```python>>> from chap03 import *>>> print_twice(‘lifeng‘)
lifeng lifeng>>> print_twice(5)5 5>>>
```***#4 條件運算式##4.2 布爾值與運算式布爾值只有兩種True和False```python>>> type(True)<type ‘bool‘>>>> type(False)<type ‘bool‘>>>> type(true)Traceback (most recent call last): File "<stdin>", line 1, in <module>NameError: name ‘true‘ is not defined```##4.3 邏輯運算子- 邏輯運算子有三個and、or、not##4.4 條件執行if語句```pythonif x > 0: print "x is positive"```##4.10 類型轉換```python>>> int(-2.33)-2>>> int(-2.5)-2>>> int(-2.6)-2>>> int(3.6)3>>> str(32)‘32‘>>> bool(1)True>>> bool("!no")True>>> bool("")False```***# 5 多效函數## 5.1 傳回值有傳回值的函數, 我們稱之為多效函數(fruitful function)##5.5 函數的型態```python>>> def funcccc(): ... return "this is a function"... >>> type(funcccc)<type ‘function‘>>>> ```##5.7 三引號字串```python>>> print ‘‘‘mariy said:"you are so fool", maria replyed:"you know‘function‘"‘‘‘mariy said:"you are so fool", maria replyed:"you know‘function‘">>> print ‘‘‘mariy said:"you are so fool",... maria replyed:"you... know‘function‘"‘‘‘mariy said:"you are so fool",maria replyed:"youknow‘function‘">>> print """mary you said:"you nothing", maria replyed:... "so you know"."""mary you said:"you nothing", maria replyed:"so you know".```三引號字串,可以在其中輸入雙引號以及單引號。
##5.8 使用doctest做單元測試***#6 重複##6.1 多重指派```pythona=5b=a #a和b現在相等a=3 #a和b現在不相等了```##6.2 更新變數##6.3 while語句```pythondef coutdown(n): while n > 0:
print n
n = n -1
print "Blastoff!"```##6.9 封裝與一般化封裝是將一段程式碼包裹進函數的過程,這讓你可以充分利用函數的所有優點。一般化就是加參數。***#7. 字串##7.1 複合資料型態到目前為止我們已經看過五種型態:<font color=blue> `int`、`float`、`bool`、`NoneType`、以及`str`</font>.```python>>> fruit="banana">>> letter=fruit[1]>>> print lettera>>> len(fruit)6```##7.3 走訪以及for迴圈```pythonindex=0while index < len(fruit): letter = fruit[index]
print letter
index += 1
```##7.4 字串切片```>>> s="Peter jackson, all you done is great">>> print s[0:5]Peter>>> print s[6:13]jackson```如果你省略了第一個索引,切片將會在字串的起點開始,如果你省略了第二個索引,切片將會以字串的末端作為結束。##7.5 字串比較比較子一樣可以運用在字串上,為了確認兩個字串是否相等。```pythonif word == "banana": print "Yes, we have no bananas!"
if word < "banana": print "Your word, " + word + ", comes before banana."
elif word > "banana": print "Your word, " + word + ", comes after banana"
else: print "Yes, we have no bananas"```##7.7 in運算子```python>>> ‘p‘ in ‘person‘True>>> ‘a‘ in ‘person‘False>>> ‘er‘ in ‘person‘True```##7.10 選擇性參數```pythondef find(string, ch, start=0)```##7.11 string模組```python>>> import string>>> dir(string)[‘Formatter‘, ‘Template‘, ‘_TemplateMetaclass‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘_float‘, ‘_idmap‘, ‘_idmapL‘, ‘_int‘, ‘_long‘, ‘_multimap‘, ‘_re‘, ‘ascii_letters‘, ‘ascii_lowercase‘, ‘ascii_uppercase‘, ‘atof‘, ‘atof_error‘, ‘atoi‘, ‘atoi_error‘, ‘atol‘, ‘atol_error‘, ‘capitalize‘, ‘capwords‘, ‘center‘, ‘count‘, ‘digits‘, ‘expandtabs‘, ‘find‘, ‘hexdigits‘, ‘index‘, ‘index_error‘, ‘join‘, ‘joinfields‘, ‘letters‘, ‘ljust‘, ‘lower‘, ‘lowercase‘, ‘lstrip‘, ‘maketrans‘, ‘octdigits‘, ‘printable‘, ‘punctuation‘, ‘replace‘, ‘rfind‘, ‘rindex‘, ‘rjust‘, ‘rsplit‘, ‘rstrip‘, ‘split‘, ‘splitfields‘, ‘strip‘, ‘swapcase‘, ‘translate‘, ‘upper‘, ‘uppercase‘, ‘whitespace‘, ‘zfill‘]>>> type(string.digits)<type ‘str‘>>>> type(string.find)<type ‘function‘>>>> print string.digits0123456789>>> print string.find.__doc__find(s, sub [,start [,end]]) -> in
Return the lowest index in s where substring sub is found, such that sub is contained within s[start,end]. Optional arguments start and end are interpreted as in slice notation.
Return -1 on failure.
>>> string.find("banana","na")2>>> string.find("bob","b", 1,2)-1```##7.12 字元的分類```python>>> print string.lowercaseabcdefghijklmnopqrstuvwxyz>>> print string.uppercaseABCDEFGHIJKLMNOPQRSTUVWXYZ>>> print string.whitespace
>>> ```string.whitespace中包含空格、tab(\t)、新行(\n)##7.13 字串的格式化```>>> "His name is %s." % "Arthur"‘His name is Arthur.‘>>> name="lifeng">>> age=30>>> "I am %s and I am %d years old" % (name,age)‘I am lifeng and I am 30 years old‘```***#9 tuple(元組)##9.1 可變性與tuple字串是不可變型的, 但是列表是可變型的。python還有一個稱謂tuple的型態。它和列表非常相似,只不過它是不可變的。從文法上說tuple是一系列用逗號分隔的值, 一個元素的tuple必須在最後加上一個逗號,否則會被當成字串:```>>> tuple=‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘
>>> type(tuple)<type ‘tuple‘>>>> t1=(‘a‘, ‘b‘)>>> t2=(‘a‘,)>>> type(t2)<type ‘tuple‘>>>> t3=(‘a‘)>>> type(t3)<type ‘str‘>>>> tuple[0]‘a‘>>> tuple[1:3](‘b‘, ‘c‘)```##9.2 tuple指派數值交換,傳統的寫法```>>> a=10>>> b=20>>> temp=a>>> a=b>>> b=temp>>> a20>>> b10```
tuple指派的寫法```>>> a=10>>> b=20>>> a,b=b,a>>> a20>>> b10```三值互換:```>>> a,b,c=10,20,30>>> a,b,c=c,a,b>>> a30>>> b10>>> c20```##9.4 隨機數字random在數學上說並不是真正隨機的。但是可以滿足我們日常的要求:```>>> import random>>> for i in range(10):... x = random.random()... print x... 0.6847199296120.04643629298740.3953767674280.8006374569940.990663611060.7657169071620.9898605846570.4133980957960.9351614338050.0607366842634```***#10. 字典***#11. 檔案和異常當一個程式運作的時候,它的資料會在記憶體中,當這個程式結束的時候,資料就會丟失,要儲存就應該將這些放入一個檔案中。```>>> f=open("test.dat", "w")>>> print f<open file ‘test.dat‘, mode ‘w‘ at 0x7f706b603d20>>>> ```寫檔案```>>> f.write("now learning python")>>> f.write("now stop writing python")>>> f.close()```讀檔案。 f.read()會讀取檔案的全部內容```>>> f=open("test.dat", "r")>>> text = f.read()>>> print text
new line
>>> ```
像電腦科學家一樣思考python筆記