1. 程式人生 > >python語法要素

python語法要素

中間 同時 final 刪除 方式 fin some int() 浮點

0.python大小寫敏感

1.輸入:變量=input(“提示性文字”)

2.輸出:print

3.以縮進(四個空格)表示代碼層次和框架,每條語句後沒有;

4.註釋:#表示單行註釋,‘‘‘三單引號多行註釋‘‘‘,"""三雙引號多行註釋"""

5.命名規則:大小寫字母、數字和下劃線的組合,但首字母只能是大小寫字母或下劃線,不能使用空格。中文等非字母符號也可以作為名字

6.同步賦值語句:同時給多個變量賦值(先運算右側N個表達式,然後同時將表達式結果賦給左側)例 x,y=y,x

7.數據類型6種:數字類型、字符串類型,元組類型、列表類型,文件類型、字典類型;函數:type(x),返回x的類型,適用於所有類型的判斷

1.三種數字類型:

1.關系:

三種類型存在一種逐漸“擴展”的關系:整數 -> 浮點數 -> 復數

不同數字類型之間可以進行混合運算,運算後生成結果為最寬類型

函數:int(), float(), complex()

2.整數類型:

0x, 0X開頭表示16進制數
0b, 0B開頭表示2進制數
0o, 0O開頭表示8進制數

3.浮點數類型:

Python語言中浮點數的數值範圍存在限制,小數精度也存在限制。這種限制與在不同計算機系統有關。

科學計數法使用字母“e”或者“E”作為冪的符號,以10為基數。科學計數法含義如下:<a>e<b> = a * 10 b

4.復數類型:

與數學中的復數概念一致, z = a + bj, a是實數部分,b是虛數部分,a和b都是浮點類型,虛數部分用j或者J標識

對於復數z,可以用z.real獲得實數部分z.imag獲得虛數部分

5.數字類型的運算:

運算符和運算函數 操作含義
x+y x與y之和
x-y x與y之差
x*y x與y之積
x/y x與y之商
x//y 不大於x與y之商的最大整數
x%y x與y之商的余數
+x x
-x x的負值
x**y x的y次冪
abs(x) x的絕對值
divmod(x,y) (x//y,x%y)
pow(x,y) x的y次冪

2.字符串類型:

1.字符串是用雙引號""或者單引號‘‘括起來的一個或多個字符。

2.字符串可以保存在變量中,也可以單獨存在

3.字符串是一個字符序列:字符串最左端位置標記為0,依次增加。

4.字符串中的編號叫做“索引”單個索引輔助訪問字符串中的特定位置格式為<string>[<索引>]

5.Python中字符串索引從0開始,一個長度為L的字符串最後一個字符的位置是L-1,Python同時允許使用負數從字符串右邊末尾向左邊進行反向索引,最右側索引值是-1

6.可以通過兩個索引值確定一個位置範圍,返回這個範圍的子串格式: <string>[<start>:<end>],start和end都是整數型數值,這個子序列從索引start開始直到索引end結束,但不包括end位置。

7.大多數數據類型都可以通過str()函數轉換為字符串

8.字符串的操作:

+ 連接
* 重復
<string>[ ] 索引
<string>[ : ] 剪切
len(<string>) 長度
<string>.upper() 字符串中字母大寫
<string>.lower() 字符串中字母小寫
<string>.strip() 去兩邊空格及去指定字符
<string>.split() 按指定字符分割字符串為數組
<string>.join() 連接兩個字符串序列
<string>.find() 搜索指定字符串
<string>.replace() 字符串替換
for <var> in <string> 字符串叠代

3.元組類型tuple:

1.概念:

? 元組是包含多個元素的類型,元素之間用逗號分割。例如:t1 = 123,456, “hello”

? 元組可以是空的,t2=()

? 元組包含一個元素時:t3=123,

? 元組外側可以使用括號,也可以不使用

?與字符串類型類似,可以通過索引區間來訪問元組中部分元素。元組之間可以使用+號和*號進行運算

2.特點:

? 元組中元素可以是不同類型;一個元組也可以作為另一個元組的元素,此時,作為元素的元組需要增加括號,從而避免歧義

? 元組中各元素存在先後關系,可以通過索引訪問元組中元素

? 元組定義後不能更改,也不能刪除。代碼更安全。

4.列表list類型:

1.基本概念:
? 列表(list)是有序的元素集合;

? 列表元素可以通過索引訪問單個元素;

?列表大小沒有限制,可以隨時修改

2.列表的操作:

< list1 > + < list2> 連接兩個列表
< list > * < 整數類型 > 對列表進行整數次重復
< list > [< 整數類型 >] 索引列表中的元素
len( < seq > ) 列表中元素個數
< list >[ < 整數類型 > : < 整數類型 >] 取列表的一個子序列
for < var > in < list > : 對列表進行循環列舉
< expr > in < list > 成員檢查,判斷<expr>是否在列表中

< list > . append ( x ) 將元素x增加到列表的最後
< list > . sort ( ) 將列表元素排序
< list > . reverse ( ) 將序列元素反轉
< list > . index ( ) 返回第一次出現元素x的索引值
< list > . insert ( i, x ) 在位置i處插入新元素x
< list > . count ( x ) 返回元素x在列表中的數量
< list > . remove ( x ) 刪除列表中第一次出現的元素x
< list > . pop ( i ) 取出列表中位置i的元素,並刪除它

字符串,可以通過split()函數,將字符串拆分成一個列表,默認以空格分割

5.文件類型

1.編碼

? ASCII碼:

文本文件,單字節,7位,一般表示英文,數字,以及一些控制字符

? Unicode:
對每種語言中字符設定統一且唯一的二進制編碼
每個字符兩個字節長
65536 個字符的編碼空間

UTF-8編碼
? 可變長度的Unicode的實現方式
? 中文三字節表示

GBK編碼
? 雙字節編碼

2.文件基本處理

? 打開文件

建立磁盤上的文件與程序中的對象相關聯,通過相關的文件對象獲得

Open()

<variable> = open (<name>, <mode>)
<name>磁盤文件名
<mode>打開模式

打開模式:

r
只讀。如果文件不存在,則輸出錯誤
w
為只寫(如果文件不存在,則自動創建文件)
a
表示附加到文件末尾
rb
只讀二進制文件。如果文件不存在,則輸出
錯誤
wb
只寫二進制文件,如果文件不存在,則自動
創建文件。
ab
附加到二進制文件末尾
r+
讀寫

? 文件操作

讀取,寫入,定位,追加、計算等

read() 返回值為包含整個文件內容的一個字符串

readline() 返回值為文件下一行內容的字符串。

readlines() 返回值為整個文件內容的列表,每項是以換行符為結尾的一行字符串。

write():把含有本文數據或二進制數據塊的字符串寫入文件中。

writelines():針對列表操作,接受一個字符串列表作為參數,將它們寫入文件。

遍歷文件模板:

file = open (someFile, "r")

For line in file[.readlines]():

#處理一行文件內容

file.close()

? 關閉文件

切斷文件與程序的聯系,寫入磁盤,並釋放文件緩沖區

close()

6.字典類型

? 字典的概念
映射: 通過任意鍵值查找集合中值信息的過程
python中通過字典實現映射
字典是鍵值對的集合, 該集合以鍵為索引,同一個鍵信息對應一個值
字典類型可以用其他對象類型作鍵,字典中的數據是無序排列的,字典類型通過鍵直接映射到值

? 字典的操作

為字典增加一項
dictionaryName[key] = value

訪問字典中的值
dictionaryName[key] 返回鍵key對應的值value

刪除字典中的一項
del dictionaryName[key]

字典的遍歷
for key in students:
print (key + “:”+ str(stuendents[key]))

遍歷字典的鍵key
for key in dictionaryName.keys(): print.(key)
遍歷字典的值value
for value in dictionaryName.values(): print.(value)
遍歷字典的項
for item in dicitonaryName.items(): print.(item)
遍歷字典的key-value
for item,value in adict.items(): print(item, value)

是否一個鍵在字典中 in 或者 not in

keys():tuple 返回一個包含字典所有Key的列表
values():tuple 返回一個包含字典所有value的列表
Items():tuple 返回一一個包含所有鍵值的列表
clear():None 刪除字典中的所有項目
get(key):value 返回字典中key對應的值
pop(key):val 刪除並返回字典中key對應的值
update(字典) 將字典中的鍵值添加到字典中

8.Turtle庫math庫和random庫:

1.函數庫引用的方式:1.第一種方式:import <庫名>例如:import turtle如果需要用到函數庫中函數,需要使用:<庫名>.<函數名>,2.第二種方式:from <庫名> import <函數名>或from <庫名> import *調用函數不需要<庫名>,直接使用<函數名>

2.Turtle庫:是Python語言中一個很流行的繪制圖像的函數庫

?forward(distance) #將箭頭移到某一指定坐標
?left(angel) right(angel)
?penup() #提起筆,用於另起一個地方繪制時用,
與pendown()配對使用
?goto(x,y)
?home()
?circle(radius)
?speed()

3.math庫:

函數 含義
圓周率pi π的近似值,15位小數
自然常數e e的近似值,15位小數
ceil(x) 對浮點數向上取整
floor(x) 對浮點數向下取整
pow(x,y) 計算x的y次方
log(x) 以e為基的對數,
log10(x) 以10為基的對數,
sqrt(x) 平方根

exp(x) e的x次冪,
degrees(x) 將弧度值轉換成角度
radians(x) 將角度值轉換成弧度
sin(x) 正弦函數
cos(x) 余弦函數
tan(x) 正切函數
asin(x) 反正弦函數,x?[-1.0,1.0]
acos(x) 反余弦函數,x?[-1.0,1.0]

4.random庫:

函數 含義
seed(x) 給隨機數一個種子值,默認隨機種子是系統時鐘,當設定相同的種子後,每次調用隨機函數後生成的隨機數都是相同的。這就是隨機種子的作用

random() 生成一個[0, 1.0)之間的隨機小數
uniform(a,b) 生成一個a到b之間的隨機小數
randint(a,b) 生成一個a到b之間的隨機整數
randrange(a,b,c) 隨機生成一個從a開始到b以c遞增的數
choice(<list>) 從列表中隨機返回一個元素
shuffle(<list>) 將列表中元素隨機打亂
sample(<list>,k) 從指定列表隨機獲取k個元素

5.蒙特卡洛(Monte Carlo)方法:

又稱隨機抽樣或統計試驗方法。當所求解問題是某種事件出現的概率,或某隨機變量期望值時,可以通過某種“試驗”的方法求解。

蒙特卡洛是利用隨機試驗求解問題的方法,提供了一個利用計算機中隨機數和隨機試驗解決現實中無法通過公式求解問題的思路

9.控制結構:

三種基本結構:順序結構、選擇結構和循環結構

1.選擇結構:

1.if語句格式: 語句格式如下if <condition>:

<body>

? 其中<condition>是條件表達式,<body>是一個或多個語個或多個語句序列。? 先判斷<condition>條件: true,則執行<body>,再轉向下一條語句; false,則直接跳過<body>,轉向下一條語句;

2.二分支語法結構如下:

if <condition>:

<statements>
else:
<statements>
? Python解釋器首先評估<condition>,如果<condition>是真的,if下面的語句被執行,如果<condition>是假的,else下面的語句被執行;
3.多分支決策:

使用if-elif-else描述多分支決策:? Python輪流評估每個條件,來尋找條件為True的分支,並執行該分支下的語句;如果沒有任何條件成立,else下面的語句被進行,else子句是可選的。

2.異常處理:

try:

<body>

except <ErrerType1>:

<handler1>

except <ErrerType2>:

<handler2>

[else:

<handler3>

finally:

<handler4>]

當Python解釋器遇到一個try語句,它會嘗試執行try語句體<body>內的語句

?如果沒有錯誤,控制轉到try-except後面的語句,執行else語句

?如果發生錯誤,Python解釋器會尋找一個符合該錯誤的異常語句,然後執行處理代碼

?無論是否發生錯誤,都執行finally語句

?else和finally是可選的

3.循環結構:

1.for循環
? Python可以使用for語句循環遍歷整個序列的值
for <var> in <sequence>:
<body>

? 在for循環中,循環變量var遍歷了隊列中的每一個值,循
環的語句體為每個值執行一次。

?range:range(<結束數>) range(<開始數>,< 結束數>[,< 公比>])

range函數是一個用來創建等比數列的通用函數

range函數具有一些特性:

.如果<開始數>參數缺省,默認1;如果< 公比數>參數缺省,默認0。

.不包括< 結束數>,range函數返回一個左閉右開([left,right))的序列數

.step參數必須是非零整數,否則拋出VauleError異常。

?for循環是需要提供固定循環次數的循環方式

2.while循環(無限循環,當型循環,條件循環,前測循環):

語法:while語句
while <condition>:
<body>
3. 註意:

使用<Ctrl>-c來終止一個程序

Break 語句- 跳出最內層for/while 循環

continue語句, 其作用為結束本次循環

<for… else: …> <while… else: …>語句與循環的搭配使用,else:後的表達式在for循環列表遍歷完畢後或while 條件語句不滿足的情況下執行
4.循環構造方法

?交互式循環

moredate="yes"

while moredate[0]="y":

<body>

moredate=input("yes or no?")

?哨兵循環

空字符串以””(引號中間沒有空格)代表,可以作為哨兵,用戶輸入回車Python就返回空字符串

執行循環直到遇到特定的值,循環語句才終止執行的循環結構設計方法

xstr=input("xxx")

while xstr!="<哨兵>"

<body,對哨兵的操作>

xstr=input("xxx")

?文件循環

line=file.readline()

while line!="":

<body,處理每一行>

line=file.readline()

5.死循環:

後測循環實現
? Python沒有後測循環語句,但可以通過while間接實現
? 思想是設計一個循環條件,直接進入循環體,循環至少執行一次,相當於後測循環

break語句也可以用來實現後測循環
? while語句體永遠執行,if條件決定循環退出
? 另外:if語句體只包含一個語句時,break可以跟if在同一行

半路循環
? 運用break中途退出循環,循環出口在循環體中部,被稱為半路循環

6.布爾表達式:

not>and>or

? Python的布爾運算符是短路運算符

? 對於數字(整型和浮點型)的零值被認為是false,任何非零值都是true

? bool類型僅僅是一個特殊的整數

? 對於序列類型來說,一個空序列被解釋為假,而任何非空序列被指示為真

運算符的特性

x and y if x is false,return x,else,return y

x or y if x is true,return x,else,return y

not x if x is true,return false,else,return true

10.函數

1.函數定義:使用def語句
def <name>(<parameters>):
<body>

def所定義的函數在程序中未經調用不能直接執行,需要通過函數名調用才能夠執行

2.返回:可以返回任意類型,一個或多個。也可以不返回,相當於返回none

return語句:結束函數調用,並將結果返回給調用者
? return語句是可選的,可出現在函數體的任意位置
? 沒有return語句,函數在函數體結束位置將控制權返回給調用方
3.參數值

函數的形參只接收了實參的值,給形參賦值並不影響實參

函數不能修改變量本身,如果變量是可變對象(如列表或者圖形對象),返回到調用程序後,該對象會呈現被修改後的狀態

4.遞歸

遞歸定義特征 :
? 有一個或多個基例是不需要再次遞歸的;

? 所有的遞歸鏈都要以一個基例結尾

?900余次調用之後,到達默認的“遞歸深度的最大值”,終止調用

5.實例 turtle畫樹:http://www.cnblogs.com/Wang-Y/p/8444889.html



python語法要素