python對語法格式要求很嚴格,因此,在編寫時一定要注意這些問題,比如下面就是這樣的問題:
traceback (most recent call last):
file "", line 1, in
file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 682, in runfile
execfile(filename, namespace)
file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 71, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
file "c:/users/wt/.spyder2/template.py", line 12
print isinstance(a, int)
^indentationerror: unexpected indent
indentationerror: unexpected indent, 通過這錯誤提示,就可以明白在編寫**時,存在不嚴格的書寫規範,而產生這樣的錯誤。
原因是:可能tab和空格沒有對齊,需要檢查下tab和空格
大部分python物件是可變的,比如列表、字典、陣列以及大部分使用者定義的型別,而其他的如字串和元組則是不可變的
print float((1, 2)),會先如下錯誤
traceback (most recent call last):
file "", line
1, in
file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line
682, in runfile
execfile(filename, namespace)
file "d:\anzhuang\anaconda\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line
71, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
file "c:/users/wt/.spyder2/template.py", line
7, in
print float((1, 2))
typeerror: float() argument must be a
stringora
number
可能需要處理valueerror,因為typeerror可能意味著你的程式中存在合法性bug。要達到這個目的,在except後面加上異常型別即可
def
attempt_float
(x):
try:
return float(x)
except (typeerror, valueerror):
return x
print attempt_float((1, 2))
只需編寫乙個異常處理的元組即可捕獲異常
如果不想處理異常,而只希望有一段**不管try塊**成功與否都能被執行。但最後finaly即可達到目的
def 是定義函式的,如下:菲波那切數列函式
>>> def fib(n): # write fibonacci series up to n
...""
"print a fibonacci series up to n."
""... a, b = 0, 1
...while a < n:
... print(a, end=' ')
... a, b = b, a+b
... print()
...>>> # now call the function we just defined:
... fib(2000)01
1235
8132134
5589
144233
377610
9871597
元組(tuple)是一種一維的、定長的、不可變的python物件序列,最簡單的建立方式是一組以逗號隔開的值。
5.1.1
tuple = 4, 5, 6
print tuple
輸出結果:(4, 5, 6)
5.1.2
tup = tuple('sjkfhvhv')
print tup
輸出結果:(』s』, 『j』, 『k』, 『f』, 『h』, 『v』, 『h』, 『v』)
但在第一次測試時,出現了如下錯誤
python typeerror: 'str'
object
is not callable
不知是什麼原因,在網上找了很多,網上說的有,變數名有python api有重名的,但都不能解決。後來,重啟下就好了,很無語。
由於元組的大小和記憶體是不可修改的,其使用方法很少,用的最多是count方法,用於計算其指定值出現的次數
a = (1, 2 ,2, 3, 5, 6, 2, 2)
print a.count(2)
輸出結果是:4
跟元組相比,列表是可變長的,而且其內容是可以修改的,通過方括號或list函式來定義:
6.1.1
tup = ('foo', 'bar', 'baz')
b_list = list(tup)
b_list[1] = 'jldaj;l'
print b_list
6.1.2tup = ('foo', 'bar', 'baz')
b_list = list(tup)
b_list[1] = 'jldaj;l'
b_list.insert(1, 'hlakhl')
b_list.remove('foo')
print b_list
通過切片標記法,你可以選取序列的型別(陣列,元組,numpy陣列等)的子集,其基本形式由索引運算子以及傳入其中的start:stop構成。
start或stop都是可以省略的,此時分別預設序列的起始和結尾處。
seq = [1, 2, 2, 3, 4, 6]
print seq[:5]
負數索引從索引的末尾開始切片:
seq = [1, 2, 2, 3, 4, 6]
print seq[-4:]
執行結果:[2, 3, 4, 6]
多個冒號的情況
seq = [1, 2, 2, 3, 4, 6]
print seq[::2]
第二冒號後面是步長。
將多個序列(列表)中的元素配對,從而產生乙個新的元素列表
seq = [1, 2, 2]
seq2 = ['one', 'two', 'there']
print zip(seq,seq2)
執行結果:[(1, 『one』), (2, 『two』), (2, 『there』)]
zip可以接受任意數量的序列,最總得到的元組數量由最短的序列決定。
seq = [1, 2, 2, 3]
seq2 = ['one', 'two', 'there']
print zip(seq,seq2)
執行結果:[(1, 『one』), (2, 『two』), (2, 『there』)] Python學習筆記一之基礎語法
python是一種解釋性 意味著開發過程沒有編譯環節,相對於編譯性語言而言 物件導向 動態資料型別的高階程式語言。識別符號 第乙個字元必須是字母表中的字母或下劃線 識別符號的其它部分由字母 數字和下劃線組成。識別符號區分大小寫。python3允許使用中文作為變數名,非ascii碼識別符號也是允許的。...
Python學習筆記 (一)python語法
python識別符號 語法 由字母,數字,下劃線組成 不能以數字開頭 python中的識別符號區分大小寫。行和縮排 python中以縮排作為 塊的標誌,不再採用c語言的 多行語句 python中以新行作為語句的結束符號,如果語句過長需要多行顯示的時候可以使用反斜槓 連線 注意 若語句中包含,或者 就...
Python學習筆記之基本語法
編碼 python 3 原始碼檔案以utf 8編碼,所有字串都是 unicode 字串 識別符號 保留字 關鍵字 false,true,and,as,return,try,while,with,break,class,continue,else,finally,for,if,import,in,no...