版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
chap.2Python語言基礎知識網絡信息安全本章內容要點Python開發(fā)環(huán)境構建數據類型與變量控制語句函數模塊文件操作異常處理面向對象編程正則表達式張量計算1.Python的下載和安裝在Python的官方網站/downloads/下載Python安裝包2.1Python開發(fā)環(huán)境構建2.Python開發(fā)環(huán)境的配置假設Python系統(tǒng)安裝在“C:\Python\”目錄下。在Window操作系統(tǒng)下,右擊桌面上“計算機”圖標→選擇“屬性”菜單項→選擇“高級系統(tǒng)設置”項→選擇“高級”選項卡→單擊“環(huán)境變量”按鈕,→選擇“系統(tǒng)變量”的“Path”變量,雙擊該項,→在彈出的“編輯系統(tǒng)變量”對話框中其變量值填寫Python的安裝路徑,本例其變量值為:“C:\Python\”。3.Python在線幫助文檔python幫助文檔在python安裝目錄的doc文件夾下,雙擊即可打開。Python定義了6組標準數據類型:Number(數字)String(字符串)List(列表)Tuple(元組)Sets(集合)Dictionary(字典)2.2數據類型與變量1.數字類型數字類型包括整數(int)、浮點數(float)、復數(complex)、布爾值(bool)類型。Python的數據類型在使用時,不需要先聲明,可以直接使用。例如:
x=13x為整數r=3.14r為浮點數a=3+4ja為復數【課堂練習】編寫實踐參數賦值。2.字符串
用單引號、雙引號括起來的字符序列稱為字符串。例如:
‘abc’,‘123’,“Hello”,“你好”都是字符串。字符串的幾個常用函數和方法:(1)str()函數str()函數可以將數字、列表、元組等轉換成字符串。
例如:輸出用單引號括起來的字符>>>str(1+2)
‘3’#為什么不是1+2?>>>str([1,2,3,4])‘1,2,3,4’【課堂練習】
(2)find()方法find()方法可以查找字符子串在原字符串中首次出現的位置,如果沒有找到,則返回-1。例如:
>>>s=“ABCDE12345” >>>s.find(“CD”)
2【課堂練習】
(3)
lower()方法
lower()方法可以將字符串中的大寫字母轉換為小寫字母。例如:
>>>s=“ABCDE12345”
>>>s1=s.lower() >>>s1
abcde12345【課堂練習】
(4)
split()方法
split()方法按指定的分隔符將字符串拆分成多個字符子串,返回值為列表。例如:
>>>s=‘AB,CD,123,xyz’
>>>s.split(sep=’,’)
[‘AB’,’CD’,’123’,’xyz’]【課堂練習】
(5)
strip()方法strip()方法用于刪除字符串頭尾指定的字符(默認為空格)。例如:
>>>str="*****thisisstringexample....wow!!!*****"
>>>print(str.strip('*'))thisisstringexample....wow!!!【課堂練習】3.轉義符str=‘Python語言入門很簡單。\n明白了嗎?’列表定義與列表元素1.列表的定義
列表名=[元素0,元素1,……,元素n]說明:(1) 列表名的命名規(guī)則跟變量名一樣,不能用數字開頭。(2) 方括號中的元素之間用逗號分隔。(3) 當列表增加或刪除元素時,內存空間自動擴展或收縮。(4) 列表中元素的類型可以不相同,它支持數字,字符串甚至可以包含列表(稱為列表嵌套)。例如:a1=[]#定義空列表a2=[1,2,3]#定義3個整數的列表a3=[‘red’,‘green’,‘blue’]#定義3個字符串的列表a4=[5,‘blue’,[3,4]]#定義元素類型不相同的嵌套列表2.列表中元素的訪問(1)列表元素用“列表名[下標]”表示例如:有列表a=[0,1,2,3,4,5,6,7,8,9]其元素分別為a[0]=0;a[1]=1;...;a[9]=9;(2)用“列表名[起始下標:結束下標+1]”表示列表的片段(列表的部分元素)例如:設有列表a=[0,1,2,3,'red','green','blue']用交互方式訪問其列表的部分元素?!菊n堂練習】
>>>>a=[0,1,2,3,'red','green','blue']列表的操作函數1.添加元素有3個函數可以在列表中添加元素:append()、extend()、insert()。(1)用append()函數在列表末尾添加元素(2)用extend()函數將另一個列表的元素添加到本列表之后(3)用insert()函數將元素插入到列表中指定的某個位置使用insert()函數的格式為:
insert(下標位置,插入的元素)2.刪除元素(1)用del命令刪除列表中指定下標的元素(2)用pop()函數刪除列表中指定下標的元素(3)用remove(x)函數刪除列表中所值為‘x’的元素3.查找元素位置用index()函數可以確定元素在列表中的位置。4.對列表元素排序用sort()函數可以對列表元素進行排序。sort()函數默認為按升序(從小到大)排序?!菊n堂練習】操作列表a=[0,1,2,3,‘red’,‘green’,‘blue’]或其他1、顯示:顯示所有,顯示第3個之后的元素2、給a添加元素一個元素:‘hellopython’,第4個元素插入4。3、刪除元素操作:刪除腳標2的元素、刪除‘hellopython’4、查找元素操作:查找‘red’5、排序操作6、清空操作元組
元組是一種元素序列。但元組是不可變的,元組一旦創(chuàng)建,就不能添加或刪除元素,元素的值也不能修改。
1.元組的創(chuàng)建用一對圓括號創(chuàng)建元組。2.元組的刪除只能用del命令刪除整個元組,而不能僅刪除元組中的部分元素,因為元組是不可變的?!菊n堂練習】
1、創(chuàng)建一個元組:
名字為:yuanzu
值為:3,4,’hellowpython’ 2、刪除元組yuanzu字典Python的字典是包含多個元素的一種可變數據類型,其元素由“鍵:值”對組成,即每個元素包含“鍵”和“值”兩部分。1.字典的定義用大括號“{}”把元素括起來就構成了一個字典對象。字典中的元素用“字典名[鍵名]”表示。2.字典元素的修改通過為鍵名重新賦值的方式修改字典元素的值。3.字典元素的添加添加字典元素,也是使用賦值方式。4.字典元素的刪除用del命令可以刪除字典中的元素?!菊n堂練習】操作字典c={'name':'Tom','age':21,'hometown':'Tokoy'}1、修改:name改為Bob2、增加字典元素:添加鍵gender,值為:male3、刪除字典元素:刪除age集合集合是一個無序不可重復的序列,是一種基本數據類型。集合分為可變集合(set)和不可變集合(frozenset)兩種類型??勺兗系脑厥强梢蕴砑印h除的,而不可變集合的元素不可添加、不可刪除。1.集合的定義集合用一對大括號“{}”把元素括起來,元素之間用逗號“,”分隔。例如:s1={1,2,3,4,5}s2={‘a’,’b’,’c’,’d’}上述s1和s2都是集合。2.集合的創(chuàng)建使用set()函數創(chuàng)建一個集合。3.集合元素的添加
python集合有兩種方法用于添加元素,分別是add()和update()。4.集合元素的刪除用remove()可以刪除集合中的元素。例如:>>>a=set(‘boy’)>>>a.remove(‘y’)>>>a{‘o’,’b’}【課堂練習】操作集合e={‘a‘,‘b’,‘c‘,‘d‘,’e’}1、創(chuàng)建結合:分別用兩種方法創(chuàng)建上述集合2、添加元素:添加book到集合,采用add和update分別添加并比較。3、刪除字典元素:刪除元素a5.集合的專用操作符集合有4個專用操作符:
&(交集)、|(并集)、-(差集,又稱為“相對補集”)、^(對稱差分)。設有兩個集合a、b,其關系如下:a&b表示兩個集合的共同元素;a|b表示兩個集合的所有元素;a-b表示只屬于集合a,不屬于集合b的元素;a^b表示兩個集合的非共同元素;【課堂練習】集合p={'p','y','t','o','n','h'} q={'p','e','g','o','n','i'} 1、求交集2、求并集3、求差集4、求對稱差分集在Python中使用print()函數輸出數據。(1)直接輸出2.3控制語句(2)格式化輸出print()函數可以使用%格式化輸出數據。常用的格式化輸出符號如表2-1所示?!纠扛袷交敵黾翱刂茡Q行輸出示例。
2.輸入語句在Python中,使用input()函數輸入數據。input()函數只能輸入字符數據,當需要輸入數值型數據時,可以使用eval()函數將字符轉換為數值?!纠?-2】從鍵盤上輸入二個數,計算這二數之和。編寫源程序如下:print("輸入一個整數:")a=eval(input())print("輸入一個實數:")b=eval(input())str=input()print(str)c=a+bprint("c=",a,"+",b,"=",c)【例】交換兩個變量的值。在編寫程序時,有時需要把兩個變量的值互換,Python在交換值的運算不需要用中間變量。交換兩個變量的值if選擇語句語法格式為:【例2-4】從鍵盤任意輸入兩個整數,按從小到大的順序依次輸出這兩個數。源程序如下:【例】對給定的三個數,求最大數的平方。2.雙分支選擇結構if條件表達式:程序段1else:程序段23.多分支選擇結構【例】將百分制轉換為五級記分制。if條件表達式1:程序段1elif條件表達式2:程序段2
……elif條件表達式n:程序段nelse:
程序段n+1循環(huán)語句1.for循環(huán)語句當循環(huán)變量的步長值為1時,可以省略,即可寫成:【例】求從1加到9的和?!纠吭谘h(huán)體內發(fā)生循環(huán)變量的值,觀察循環(huán)次數。For循環(huán)變量的值在循環(huán)體內部發(fā)生改變,不會影響循環(huán)次數?。?!
在for循環(huán)中,可以使用continue語句來結束本次循環(huán),也可以使用break語句跳出循環(huán)體,從而結束整個循環(huán)?!纠坑嬎?0以內的偶數和。2.while語句while循環(huán)語句一般形式的語法結構如下:【例】求10!。【思考題】用for循環(huán)計算上題(計算10?。=1p=1forninrange(1,11): p=p*n print('n=',n,'p=',p)
3.循環(huán)嵌套循環(huán)可以嵌套,在一個循環(huán)體內包含另一個完整的循環(huán),叫做循環(huán)嵌套。循環(huán)嵌套運行時,外循環(huán)每執(zhí)行一次,內層循環(huán)要執(zhí)行一個周期。【例】應用循環(huán)嵌套,編寫一個按9行9列排列輸出的乘法九九表程序?!纠繎醚h(huán)嵌套打印出由“*”組成的直角三角形圖形。
內循環(huán)控制列外循環(huán)控制行流程圖流程圖(程序框圖)是一種用程序框、流程線及文字說明來表示算法的圖。算法的基本邏輯結構
順序結構由若干個依次執(zhí)行的步驟組成。條件結構需要經過條件判斷后,才能決定執(zhí)行哪個操作。循環(huán)結構從某處開始,按照一定的條件反復執(zhí)行某些步驟。
可以證明:任何一個算法都可以由這三種結構組合而成。算法的基本結構就是構成算法的積木,這一點在程序框圖中可以清楚看到。
畫程序框圖的規(guī)則1)框圖一般按從上到下、從左到右的方向畫。2)使用標準的圖形符號。3)程序框一般只有一個進入點和一個退出點。4)判斷框有兩個退出點,用“是”與“否”或“Y”與“N”表示判斷的兩種結果。5)在圖形符號內描述的語言要簡練清楚。構成流程圖的圖形符號及其作用程序框名稱功能起止框(終端框)表示一個算法的起始和結束,是任何流程圖不可少的.輸入、輸出框表示一個算法輸入和輸出的信息,可用在算法中任何需要輸入、輸出的位置.處理框(執(zhí)行框)賦值、計算,算法中處理數據需要的算式、公式等分別寫在不同的用以處理數據的處理框內.判斷框判斷某一條件是否成立,成立時在出口處標明“是”或“Y”;不成立時標明“否”或“N”.流程線連接程序框連接點連接程序框圖的兩部分順序結構順序結構在程序框圖中的體現就是用流程線將程序框自上而下地連接起來,按順序執(zhí)行算法步驟。如在示意圖中,A框和B框是依次執(zhí)行的,只有在執(zhí)行完A框指定的操作后,才能接著執(zhí)行B框所指定的操作。AB例1:計算以任意正實數為半徑的圓的面積。算法:S1,輸入r.S2,S=π*r*rS3,輸出S.開始結束輸入r輸出SS=π*r*r條件結構條件結構是指在算法中通過對條件的判斷,根據條件是否成立而選擇不同流向的算法結構。滿足條件?語句是否滿足條件?語句語句是否判斷符號:>、<、==、!=、>=、<=。邏輯符號:and、or
例2:設計求任意3個整數a,b,c的最大值的算法。算法:令max代表三個數中的最大值S1,輸入a、b、c三個數;S2,令max=a;S3,如果b>max,則max=b;S4,如果c>max,則max=c;S5,輸出maxmax=a輸入a,b,c結束輸出max開始b>max?c>max?max=bmax=c是否否是開始結束輸入a,b,c輸出max
b>max?是否max=amax=bmax=cc>max?否是不止一種框圖:程序框圖2循環(huán)結構循環(huán)結構:從某處開始,按照一定的條件反復執(zhí)行某些步驟。循環(huán)體:復執(zhí)行的步驟稱為循環(huán)體。循環(huán)條件:控制反復執(zhí)行的條件稱為循環(huán)條件。每次執(zhí)行循環(huán)體前,對條件進行判斷;當條件滿足時,執(zhí)行循環(huán)體,否則終止循環(huán)。滿足條件?循環(huán)體是否滿足條件?循環(huán)體是否例3:設計一個算法1+2+…+100的值的算法,并畫出程序框圖.算法:
S1:S=0,i=1,S2:若i>100,則輸出S,算法結束.S3:S=S+i.S4:i=i+1,
S5:轉到S2.s=0foriinrange(1,101): s=s+iprint(”答案是:”,s)
開始
結束i=1輸出Si>100?否是S=0i=i+1S=S+i【例】求50以內能被7整除,但不能同時被5整除的所有整數。修改:
150以內能被8整除,但同時被5整除的所有整數?!纠咳绻粋€3位數的各位數字的立方和等于該數自身,則該數稱為“水仙花數”。例如,153=13+53+33,所以153是一個水仙花數。求100~1000以內所有“水仙花數”。
修改:求1234~54321以內所有“水仙花數”。除10求余數,相當于提取出個位縮小10倍【例】設有一份某地連續(xù)10年內6月1日的氣溫記錄,其數據為(0C):31、30、33、31、28、32、29、33、35、31,試計算其平均氣溫。修改:求該范圍內的最高溫度。a的元素個數【例】雞兔同籠問題。雞和兔在一個籠子里,從上面數,有35個頭;從下面數,有94只腳。問籠中雞和兔各有多少只?36注意編程解題的思路并不完全與我們人解題的思路一樣?。?!【例】百錢買百雞問題。公雞5文錢一只,母雞3文錢一只,小雞3只一文錢,用100文錢買100只雞,如何買?
設公雞x只,母雞y只,小雞z只,則:
x+y+z=1005x+3y+z/3=100題目:求100之內的素數。程序分析:素數只有1和它自己可以被除盡(余數為0)。fornuminrange(2,100+1):#素數大于1
foriinrange(2,num): if(num%i)==0: break ifi==num-1: print(num)題目:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。程序分析:學會使用布爾值判斷。a=int(input("請輸入一個五位數字:\n"))x=str(a)flag=Trueforiinrange(0,3): ifx[i]!=x[-i-1]: flag=False breakifflag: print("%d是一個回文數!"%a)else: print("%d不是一個回文數!"%a)1.函數定義的一般形式【例2-15】創(chuàng)建一個名為Hello的函數,其作用為輸出“歡迎進入Python世界”的字符內容。創(chuàng)建該函數的程序段如下:
defHello():
print("歡迎進入Python世界")
在程序中調用Hello()函數,將顯示“歡迎進入Python世界”的字符內容。2.4函數【例】創(chuàng)建一個名為sum()的函數,其作用為計算n以內的整數之和(包含n)。
下面為實現計算n以內的整數之和的函數程序段:defsum(n): s=0 foriinrange(1,n+1): s=s+i returns2.函數的調用在Python中,直接使用函數名調用函數。如果定義的函數包含有參數,則調用函數時也必須使用參數?!纠?-17】創(chuàng)建顯示如下排列字符的函數,并編寫程序調用該函數。
**********************************
*歡迎進入學生成績管理系統(tǒng)*
**********************************程序代碼如下:defstar(): str="*****************************"returnstrdefprn():print("*歡迎進入學生成績管理系統(tǒng)*")print(star())prn()print(star())【例2-18】應用函數,計算1~100的和。程序的運行結果如下:
5050局部變量與全局變量在函數體內部定義的變量或函數參數稱為局部變量,該變量只在該函數內部有效。在函數體外部定義的變量稱為全局變量,在變量定義后的代碼中都有效。當全局變量與局部變量同名時,則在定義局部變量的函數中,全局變量被屏蔽,只有局部變量有效。全局變量在使用前要先用關鍵字global聲明?!纠咳肿兞颗c局部變量同名的示例。常用內置函數Python內置函數是python系統(tǒng)內部創(chuàng)建的,在Python的程序中,可以隨時調用這些函數,不需要另外定義。例如,最常見的print()是內置函數,在程序中直接使用: print("HelloWorld!")而平方根函數sqrt()不是內置函數,使用該函數時需要引用math模塊: importmath y=math.sqrt(25)匿名函數lambda在Python中可以使用匿名函數。匿名函數即沒有函數名的函數。通常用lambda聲明匿名函數。例如,計算二個數的和,可以寫成: add=lambdax,y:x+y print(add(1,2))輸出的結果為3。從上面示例可以看到,lambda表達式的計算結果相當于函數的返回值?!纠坑胠ambda表達式,求三個數的和。【例】編寫計算n!的函數。
計算n!,應先計算(n-1)!,而計算(n-1)!,需要先計算(n-2)!,......,如此遞推,直到最后變成計算1!的問題。
根據公式,1!=1,這是本問題的遞歸終止條件。由終止條件得到1!的結果后,再反來依次計算出2!,3!,......,直到最后計算出n!。
設計算n!的函數為fun(n),當n>1時,fun(n)=n*fun(n-1)。即在fun(n)函數體內將遞歸調用fun()自身?!纠烤帉懞瘮?,從鍵盤輸入參數n,計算斐波那契數列中第一個大于n的項。
斐波那契數列為:1,1,2,3,5,8,13,......。即從第3項開始,每一項是前二項之和。
模塊的導入
在Python中用關鍵字import來導入某個模塊,其導入模塊的形式有兩種。1.用import形式導入模塊用import導入模塊的一般形式為:import模塊名
在調用import導入模塊的函數時,必須使用以下形式來調用:模塊名.函數名2.5模塊2.用
from....import....形式導入模塊用from....import....導入模塊的一般形式為:
from模塊名import函數名或變量名
比如要引用模塊math中的sqrt()函數,可以用frommathimportsqrt()語句來導入。在調用from....import....導入模塊的函數時,直接使用函數名來調用模塊中的函數,而不需要在函數的前面加上模塊名。3.導入模塊的順序
當需要導入多個模塊時,應按照下面的順序依次導入模塊:
(1)導入Python系統(tǒng)的標準庫模塊,如os、sys等;
(2)導入第三方擴展庫模塊,如pygame、mp3play等;
(3)導入自己定義和開發(fā)的本地模塊。自定義模塊
在Python中,每個包含有函數的Python文件都可以作為一個模塊來使用,其模塊名就是文件名?!纠孔远x模塊使用示例。(1)設有Python文件hello.py,其中包含hh()函數,代碼如下:(2)調用模塊hello中hh()函數的程序ex3_8.py代碼如下:【例】編寫一個計算二數和的模塊,再在另一個程序中調用該模塊。
(1)編寫模塊代碼,其中包含有計算二數之和的函數sum(),保存為ex3_9_1.py。(2)編寫調用模塊程序ex3_9_2.py,其代碼如下:使用pip安裝和管理擴展模塊
1.安裝pipPython安裝第三方的模塊,大多使用包管理工具pip進行安裝。Python包管理工具pip提供了對Python包的查找、下載、安裝、卸載的功能。下載pip下載地址是:
https:///pypi/pip#downloads下載完成之后,解壓到一個文件夾,使用控制臺命令窗口進入解壓目錄,輸入安裝命令:
pythonsetup.pyinstall
安裝pip完后還需要配置環(huán)境變量,pip指令才能生效。
2.通過pip安裝擴展模塊例如:(1)安裝MySQL數據庫管理模塊:pipinstallpymysql
(2)安裝圖形處理庫模塊:pipinstallpillow
(3)安裝SomePackage模塊:
pipinstallSomePackage
(4)卸載SomePackage模塊:
pipuninstallSomePackage
(5)查看當前已經安裝的模塊:
piplist2.6文件操作Python的os模塊提供對文件的操作函數,常用操作函數如下表2-7所示:函數說明os.rmdir(path)創(chuàng)建一個文件夾os.mknod(“test.txt”)創(chuàng)建空文件open(“test.txt”,w)以w模式打開一個文件,如果文件不存在則創(chuàng)建文件os.rename(“oldfile”,”newfile”)文件重命名os.remove(“file”)刪除文件os.path.exists(“goal”)判斷文件是否存在文件操作函數
打開和關閉文件1.打開文件在python中,使用open函數,可以打開一個已經存在的文件,或者創(chuàng)建一個新文件。打開文件時將創(chuàng)建一個文件對象。其一般格式為:f=open(文件名,訪問模式)
其中,f為創(chuàng)建的文件對象,參數“訪問模式”見表6-3。2.關閉文件
文件操作完成之后,需要將文件對象關閉,其一般格式為:f.close()1.read()函數
使用read()函數可以讀取文件內容,其一般格式為:str=f.read([b])其中:f為文件對象;參數b為指定讀取的字節(jié)數,如果不指定,則讀取全部內容;str為字符串,存放讀取的內容。讀取文件操作【例】設有文件a.txt,其文件內容為“HelloPython”,編寫程序讀取該文件中的內容,并顯示到屏幕上。編寫程序代碼如下:importosf=open("a.txt","r")str=f.read()print(str)f.close()2.readline()函數
使用readline()函數可以逐行讀取文件的內容,其一般形式如下:str=f.readline()【例】設有文件“荷塘月色.txt”,其文件內容為:荷塘月色剪一段時光緩緩流淌,流進了月色中微微蕩漾,彈一首小荷淡淡的香,美麗的琴音就落在我身旁。編寫程序,用readline()函數逐行讀取文件的內容。編寫程序代碼如下:importosf=open("荷塘月色.txt","r")whileTrue: str=f.readline() print(str) ifnotstr: breakf.close()3.readlines()函數
使用readlines()函數可以一次讀取文件中所有行的內容,其一般形式如下:str=f.readlines()
【例】編寫程序,用readlines()函數讀取上例的“荷塘月色.txt”文件內容。編寫程序代碼如下:importosf=open("荷塘月色.txt","r")str=f.readlines()print(str)f.close()寫入文件操作
Python通過函數write()向文件寫入數據,其一般格式為:
f.write(content)【例】編寫程序,新建文本文件ex6_8.txt,并向其寫入文本數據。編寫程序代碼如下:importosstr="HelloPython\n向文件寫入數據"f=open("ex6_8.txt","w")f.write(str)f.close()
將程序保存為ex6_8.py,運行程序后,在當前目錄下生成一個名為“ex6_8.txt”的文本文件,其內容為:HelloPython向文件寫入數據【例】編寫程序,在文件ex6_8.txt原數據內容之后,添加“我對學習Python很癡迷!”。
當以w模式為參數調用open()函數打開文件時,如果寫入數據到文件中,新內容將覆蓋文件中原有數據內容。若要在文件中追加數據,可以以a或a+模式為參數調用open()函數打開文件。
編寫程序代碼如下:importosf1=open("ex6_8.txt","a+")f1.write("\n我對學習Python很癡迷!")f1.close()f2=open("ex6_8.txt","r")str=f2.read()print(str)
運行程序,其結果如下:HelloPython向文件寫入數據我對學習Python很癡迷!python中的常見標準異常2.7異常處理異常的捕捉與處理1.使用try...except語句try...except語句的語法格式為:
try: <被檢測的語句塊>except<異常類型名稱>: <處理異常的語句塊>
【例】元組下標越界引發(fā)異常。
編寫程序代碼如下:s=[1,2,3,4,5]try: print(s[5])exceptIndexError: print("發(fā)生異常原因:索引出界")
運行程序結果為:發(fā)生異常原因:索引出界
2.使用try...except...else語句try...except...else語句的語法格式為:
try: <被檢測的語句塊>except<異常類型名稱>: <處理異常的語句塊>
else: <無異常時執(zhí)行的語句塊>【例】編寫一個把字符串寫入到一個文件的程序。若寫入成功,則提示“內容寫入文件成功”,否則提示“Error:沒有找到文件或讀取文件失敗”。
try:
fh=open("testfile.txt","w")
fh.write("這是一個測試文件,用于測試異常!!")exceptIOError:
print("Error:沒有找到文件或讀取文件失敗")else:
print("內容寫入文件成功")
fh.close()3.帶有多個except子句的try語句【例】編寫程序,從鍵盤輸入1,2,……,5中的一個數字,否則,當輸入其他數字或字符則提示為異常。4.帶有finally子句的try語句【例】帶有finally子句的try語句示例。1.類的一般形式
在類聲明中,class是聲明類的關鍵字,表示類聲明的開始,類聲明后面跟著類名,按習慣類名要用大寫字母開頭,并且類名不能用阿拉伯數字開頭。
類中的self在調用時代表類的實例,與c++或Java中的this作用類似。
2.8面向對象編程2.創(chuàng)建對象類在使用時,必須創(chuàng)建類的對象,再通過類的對象來操作類中的成員變量和成員方法。創(chuàng)建類對象的格式為:對象名=類名()3.調用成員方法調用類的方法時,需要通過類對象調用,其調用格式如下:
對象名.方法名(self)【例】編寫一個計算二數之和的類。方法sum(self,x,y)的參數self代表類對象自身,self.x=x即把賦值語句右邊的參數x值賦值給左邊類成員變量x。為了區(qū)分參數及成員變量,在成員變量x前面添加self。
4.類的公有成員和私有成員
在Python程序中定義的成員變量和方法默認都是公有成員,類之外的任何代碼都可以隨意訪問這些成員。如果在成員變量和方法名之前加上兩個下劃線“__”作前綴,則該變量或方法就是類的私有成員。私有成員只能在類的內部調用,類外的任何代碼都無法訪問這些成員。
【例】私有成員示例。5.類的構造方法在Python中,類的構造方法為__init__(),其中方法名開始和結束的下劃線是雙下劃線。構造方法屬于對象,每個對象都有自己的構造方法。如果一個類在程序中沒有定義__init__()方法,則系統(tǒng)會自動建立一個方法體為空的__init__()方法。如果一個類的構造方法帶有參數,則在創(chuàng)建類對象時需要賦實參給對象。在程序運行時,構造方法在創(chuàng)建對象時由系統(tǒng)自動調用,不需要用調用方法的語句顯式調用。
【例】設計一個類Person。該類有Name(姓名)、Age(年齡)兩個變量,可以從鍵盤輸入雇員姓名、年齡等信息。
6.析構方法
在Python中,析構方法為__del__(),其中開始和結束的下劃線是雙下劃線。析構方法用于釋放對象所占用的資源,在Python系統(tǒng)銷毀對象之前自動執(zhí)行。析構方法屬于對象,每個對象都有自己的析構方法。如果類中沒有定義__del__()方法,則系統(tǒng)會自動提供默認的析構方法?!纠课鰳嫹椒ㄊ纠n惖睦^承1.類的單繼承
類的單繼承的一般形式為:
class子類名(父類名):
子類的類體語句
【例3-5】定義一個父類Person,再定義一個子類Sunny繼承Person,并在子類中調用父類的方法。2.類的多繼承Python在多繼承時,如果這些父類中有相同的方法名,面在子類中使用時沒有指定父類名,則Python系統(tǒng)將從左往右按順序搜索。Python支持多繼承,多繼承的一般形式為:class子類名(父類名1,父類名2,....,父類n):
子類的類體語句【例】多繼承示例。
2.9正則表達式正則表達式是一個特殊的字符序列,或是一種可以用于模式匹配和替換的一種邏輯公式。通過正則表達式,可以用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。它能幫助程序員方便的檢查一個字符串是否與某種模式匹配,這在后續(xù)編程過程中非常有用。Python自1.5版本起增加了re模塊,re模塊使Python語言擁有全部的正則表達式功能。re模塊定義了一系列函數、常量以及異常,下面介紹常用的幾個。字符匹配與匹配模式
1.字符匹配我們先從簡單的問題開始。假設要搜索一個包含字符“cat”的字符串,搜索用的子字符串就是“cat”。如果搜索對大小寫不敏感,單詞“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是說:子字符串:cat匹配:catalog、Catherine、sophisticated2.匹配模式例如,使用‘?’和‘*’通配符來查找硬盤上的文件?!?’通配符匹配文件名中的1個字符,而‘*’通配符匹配多個字符。這時,‘?’和‘*’通配符就是一種匹配模式。
比如,“data?.dat”這樣的模式將查找下列文件:data.datdata1.datdata2.datdatax.datdataN.dat
若使用‘*’字符代替‘?’字符擴大了找到的文件的數量?!癲ata*.dat”匹配下列所有文件:data.datdata1.datdata2.datdata12.datdatax.datdataXYZ.dat正則表達式的規(guī)則1.構建正則表達式規(guī)則的特殊字符正則表達式是一種可以用于模式匹配和替換的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一種過濾邏輯。一個正則表達式就是由普通的字符(例如字符‘a’~‘z’)以及特殊字符(稱為“元字符”)組成的文字模式。該模式用以描述在查找文字主體時待匹配的一個或多個字符串。正則表達式的使用,可以通過簡單的辦法來實現強大的功能。下面先看一個簡單的用特殊字符(元字符)表示正則表達式規(guī)則的示例:
^[0–9]+abc$其中:^匹配字符串的開始位置。[0-9]+匹配多個數字,‘[0-9]’匹配單個數字,‘+’匹配
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年甲乙丙丁四方關于建立物流通道的合同
- 2024年北師大新版九年級化學上冊月考試卷
- 2025年人教五四新版高一數學上冊月考試卷
- 兒童心理視角下的消費習慣養(yǎng)成
- 農業(yè)金融科技小微企業(yè)的金融創(chuàng)新機會探討
- 辦公環(huán)境下的學生德育游戲體驗設計
- 企業(yè)培訓中員工激勵機制設計策略
- 辦公室環(huán)境中的創(chuàng)新能力培育方案
- 2025中國鐵路烏魯木齊局集團限公司招聘1007人(二)高頻重點提升(共500題)附帶答案詳解
- 2025中國郵政莆田市分公司招聘員工30人高頻重點提升(共500題)附帶答案詳解
- 工行個人小額貸款合同樣本
- 【8歷期末】安徽省合肥市包河區(qū)智育聯盟校2023-2024學年八年級上學期1月期末歷史試題
- 學校2025元旦假期安全教育宣傳課件
- 2024年地理知識競賽試題200題及答案
- 2020 新ACLS-PCSA課前自我測試-翻譯版玉二醫(yī)【復制】附有答案
- 電瓶車供貨服務方案(完整版)
- 常用儀表縮寫字母
- 政工干部年度述職報告
- 1000MW電廠水處理DCS控制系統(tǒng)設計
- 灌溉渠施工方案
- 藍田股份會計造假案例
評論
0/150
提交評論