《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap2_第1頁(yè)
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap2_第2頁(yè)
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap2_第3頁(yè)
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap2_第4頁(yè)
《Python工程應(yīng)用-網(wǎng)絡(luò)信息安全》課件-chap2_第5頁(yè)
已閱讀5頁(yè),還剩137頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

chap.2Python語(yǔ)言基礎(chǔ)知識(shí)網(wǎng)絡(luò)信息安全本章內(nèi)容要點(diǎn)Python開(kāi)發(fā)環(huán)境構(gòu)建數(shù)據(jù)類型與變量控制語(yǔ)句函數(shù)模塊文件操作異常處理面向?qū)ο缶幊陶齽t表達(dá)式張量計(jì)算1.Python的下載和安裝在Python的官方網(wǎng)站/downloads/下載Python安裝包2.1Python開(kāi)發(fā)環(huán)境構(gòu)建2.Python開(kāi)發(fā)環(huán)境的配置假設(shè)Python系統(tǒng)安裝在“C:\Python\”目錄下。在Window操作系統(tǒng)下,右擊桌面上“計(jì)算機(jī)”圖標(biāo)→選擇“屬性”菜單項(xiàng)→選擇“高級(jí)系統(tǒng)設(shè)置”項(xiàng)→選擇“高級(jí)”選項(xiàng)卡→單擊“環(huán)境變量”按鈕,→選擇“系統(tǒng)變量”的“Path”變量,雙擊該項(xiàng),→在彈出的“編輯系統(tǒng)變量”對(duì)話框中其變量值填寫Python的安裝路徑,本例其變量值為:“C:\Python\”。3.Python在線幫助文檔python幫助文檔在python安裝目錄的doc文件夾下,雙擊即可打開(kāi)。Python定義了6組標(biāo)準(zhǔn)數(shù)據(jù)類型:Number(數(shù)字)String(字符串)List(列表)Tuple(元組)Sets(集合)Dictionary(字典)2.2數(shù)據(jù)類型與變量1.數(shù)字類型數(shù)字類型包括整數(shù)(int)、浮點(diǎn)數(shù)(float)、復(fù)數(shù)(complex)、布爾值(bool)類型。Python的數(shù)據(jù)類型在使用時(shí),不需要先聲明,可以直接使用。例如:

x=13x為整數(shù)r=3.14r為浮點(diǎn)數(shù)a=3+4ja為復(fù)數(shù)【課堂練習(xí)】編寫實(shí)踐參數(shù)賦值。2.字符串

用單引號(hào)、雙引號(hào)括起來(lái)的字符序列稱為字符串。例如:

‘a(chǎn)bc’,‘123’,“Hello”,“你好”都是字符串。字符串的幾個(gè)常用函數(shù)和方法:(1)str()函數(shù)str()函數(shù)可以將數(shù)字、列表、元組等轉(zhuǎn)換成字符串。

例如:輸出用單引號(hào)括起來(lái)的字符>>>str(1+2)

‘3’#為什么不是1+2?>>>str([1,2,3,4])‘1,2,3,4’【課堂練習(xí)】

(2)find()方法find()方法可以查找字符子串在原字符串中首次出現(xiàn)的位置,如果沒(méi)有找到,則返回-1。例如:

>>>s=“ABCDE12345” >>>s.find(“CD”)

2【課堂練習(xí)】

(3)

lower()方法

lower()方法可以將字符串中的大寫字母轉(zhuǎn)換為小寫字母。例如:

>>>s=“ABCDE12345”

>>>s1=s.lower() >>>s1

abcde12345【課堂練習(xí)】

(4)

split()方法

split()方法按指定的分隔符將字符串拆分成多個(gè)字符子串,返回值為列表。例如:

>>>s=‘AB,CD,123,xyz’

>>>s.split(sep=’,’)

[‘AB’,’CD’,’123’,’xyz’]【課堂練習(xí)】

(5)

strip()方法strip()方法用于刪除字符串頭尾指定的字符(默認(rèn)為空格)。例如:

>>>str="*****thisisstringexample....wow!!!*****"

>>>print(str.strip('*'))thisisstringexample....wow!!!【課堂練習(xí)】3.轉(zhuǎn)義符str=‘Python語(yǔ)言入門很簡(jiǎn)單。\n明白了嗎?’列表定義與列表元素1.列表的定義

列表名=[元素0,元素1,……,元素n]說(shuō)明:(1) 列表名的命名規(guī)則跟變量名一樣,不能用數(shù)字開(kāi)頭。(2) 方括號(hào)中的元素之間用逗號(hào)分隔。(3) 當(dāng)列表增加或刪除元素時(shí),內(nèi)存空間自動(dòng)擴(kuò)展或收縮。(4) 列表中元素的類型可以不相同,它支持?jǐn)?shù)字,字符串甚至可以包含列表(稱為列表嵌套)。例如:a1=[]#定義空列表a2=[1,2,3]#定義3個(gè)整數(shù)的列表a3=[‘red’,‘green’,‘blue’]#定義3個(gè)字符串的列表a4=[5,‘blue’,[3,4]]#定義元素類型不相同的嵌套列表2.列表中元素的訪問(wèn)(1)列表元素用“列表名[下標(biāo)]”表示例如:有列表a=[0,1,2,3,4,5,6,7,8,9]其元素分別為a[0]=0;a[1]=1;...;a[9]=9;(2)用“列表名[起始下標(biāo):結(jié)束下標(biāo)+1]”表示列表的片段(列表的部分元素)例如:設(shè)有列表a=[0,1,2,3,'red','green','blue']用交互方式訪問(wèn)其列表的部分元素?!菊n堂練習(xí)】

>>>>a=[0,1,2,3,'red','green','blue']列表的操作函數(shù)1.添加元素有3個(gè)函數(shù)可以在列表中添加元素:append()、extend()、insert()。(1)用append()函數(shù)在列表末尾添加元素(2)用extend()函數(shù)將另一個(gè)列表的元素添加到本列表之后(3)用insert()函數(shù)將元素插入到列表中指定的某個(gè)位置使用insert()函數(shù)的格式為:

insert(下標(biāo)位置,插入的元素)2.刪除元素(1)用del命令刪除列表中指定下標(biāo)的元素(2)用pop()函數(shù)刪除列表中指定下標(biāo)的元素(3)用remove(x)函數(shù)刪除列表中所值為‘x’的元素3.查找元素位置用index()函數(shù)可以確定元素在列表中的位置。4.對(duì)列表元素排序用sort()函數(shù)可以對(duì)列表元素進(jìn)行排序。sort()函數(shù)默認(rèn)為按升序(從小到大)排序?!菊n堂練習(xí)】操作列表a=[0,1,2,3,‘red’,‘green’,‘blue’]或其他1、顯示:顯示所有,顯示第3個(gè)之后的元素2、給a添加元素一個(gè)元素:‘hellopython’,第4個(gè)元素插入4。3、刪除元素操作:刪除腳標(biāo)2的元素、刪除‘hellopython’4、查找元素操作:查找‘red’5、排序操作6、清空操作元組

元組是一種元素序列。但元組是不可變的,元組一旦創(chuàng)建,就不能添加或刪除元素,元素的值也不能修改。

1.元組的創(chuàng)建用一對(duì)圓括號(hào)創(chuàng)建元組。2.元組的刪除只能用del命令刪除整個(gè)元組,而不能僅刪除元組中的部分元素,因?yàn)樵M是不可變的?!菊n堂練習(xí)】

1、創(chuàng)建一個(gè)元組:

名字為:yuanzu

值為:3,4,’hellowpython’ 2、刪除元組yuanzu字典Python的字典是包含多個(gè)元素的一種可變數(shù)據(jù)類型,其元素由“鍵:值”對(duì)組成,即每個(gè)元素包含“鍵”和“值”兩部分。1.字典的定義用大括號(hào)“{}”把元素括起來(lái)就構(gòu)成了一個(gè)字典對(duì)象。字典中的元素用“字典名[鍵名]”表示。2.字典元素的修改通過(guò)為鍵名重新賦值的方式修改字典元素的值。3.字典元素的添加添加字典元素,也是使用賦值方式。4.字典元素的刪除用del命令可以刪除字典中的元素。【課堂練習(xí)】操作字典c={'name':'Tom','age':21,'hometown':'Tokoy'}1、修改:name改為Bob2、增加字典元素:添加鍵gender,值為:male3、刪除字典元素:刪除age集合集合是一個(gè)無(wú)序不可重復(fù)的序列,是一種基本數(shù)據(jù)類型。集合分為可變集合(set)和不可變集合(frozenset)兩種類型??勺兗系脑厥强梢蕴砑印h除的,而不可變集合的元素不可添加、不可刪除。1.集合的定義集合用一對(duì)大括號(hào)“{}”把元素括起來(lái),元素之間用逗號(hào)“,”分隔。例如:s1={1,2,3,4,5}s2={‘a(chǎn)’,’b’,’c’,’d’}上述s1和s2都是集合。2.集合的創(chuàng)建使用set()函數(shù)創(chuàng)建一個(gè)集合。3.集合元素的添加

python集合有兩種方法用于添加元素,分別是add()和update()。4.集合元素的刪除用remove()可以刪除集合中的元素。例如:>>>a=set(‘boy’)>>>a.remove(‘y’)>>>a{‘o’,’b’}【課堂練習(xí)】操作集合e={‘a(chǎn)‘,‘b’,‘c‘,‘d‘,’e’}1、創(chuàng)建結(jié)合:分別用兩種方法創(chuàng)建上述集合2、添加元素:添加book到集合,采用add和update分別添加并比較。3、刪除字典元素:刪除元素a5.集合的專用操作符集合有4個(gè)專用操作符:

&(交集)、|(并集)、-(差集,又稱為“相對(duì)補(bǔ)集”)、^(對(duì)稱差分)。設(shè)有兩個(gè)集合a、b,其關(guān)系如下:a&b表示兩個(gè)集合的共同元素;a|b表示兩個(gè)集合的所有元素;a-b表示只屬于集合a,不屬于集合b的元素;a^b表示兩個(gè)集合的非共同元素;【課堂練習(xí)】集合p={'p','y','t','o','n','h'} q={'p','e','g','o','n','i'} 1、求交集2、求并集3、求差集4、求對(duì)稱差分集在Python中使用print()函數(shù)輸出數(shù)據(jù)。(1)直接輸出2.3控制語(yǔ)句(2)格式化輸出print()函數(shù)可以使用%格式化輸出數(shù)據(jù)。常用的格式化輸出符號(hào)如表2-1所示?!纠扛袷交敵黾翱刂茡Q行輸出示例。

2.輸入語(yǔ)句在Python中,使用input()函數(shù)輸入數(shù)據(jù)。input()函數(shù)只能輸入字符數(shù)據(jù),當(dāng)需要輸入數(shù)值型數(shù)據(jù)時(shí),可以使用eval()函數(shù)將字符轉(zhuǎn)換為數(shù)值。【例2-2】從鍵盤上輸入二個(gè)數(shù),計(jì)算這二數(shù)之和。編寫源程序如下:print("輸入一個(gè)整數(shù):")a=eval(input())print("輸入一個(gè)實(shí)數(shù):")b=eval(input())str=input()print(str)c=a+bprint("c=",a,"+",b,"=",c)【例】交換兩個(gè)變量的值。在編寫程序時(shí),有時(shí)需要把兩個(gè)變量的值互換,Python在交換值的運(yùn)算不需要用中間變量。交換兩個(gè)變量的值if選擇語(yǔ)句語(yǔ)法格式為:【例2-4】從鍵盤任意輸入兩個(gè)整數(shù),按從小到大的順序依次輸出這兩個(gè)數(shù)。源程序如下:【例】對(duì)給定的三個(gè)數(shù),求最大數(shù)的平方。2.雙分支選擇結(jié)構(gòu)if條件表達(dá)式:程序段1else:程序段23.多分支選擇結(jié)構(gòu)【例】將百分制轉(zhuǎn)換為五級(jí)記分制。if條件表達(dá)式1:程序段1elif條件表達(dá)式2:程序段2

……elif條件表達(dá)式n:程序段nelse:

程序段n+1循環(huán)語(yǔ)句1.for循環(huán)語(yǔ)句當(dāng)循環(huán)變量的步長(zhǎng)值為1時(shí),可以省略,即可寫成:【例】求從1加到9的和?!纠吭谘h(huán)體內(nèi)發(fā)生循環(huán)變量的值,觀察循環(huán)次數(shù)。For循環(huán)變量的值在循環(huán)體內(nèi)部發(fā)生改變,不會(huì)影響循環(huán)次數(shù)?。。?/p>

在for循環(huán)中,可以使用continue語(yǔ)句來(lái)結(jié)束本次循環(huán),也可以使用break語(yǔ)句跳出循環(huán)體,從而結(jié)束整個(gè)循環(huán)。【例】計(jì)算10以內(nèi)的偶數(shù)和。2.while語(yǔ)句while循環(huán)語(yǔ)句一般形式的語(yǔ)法結(jié)構(gòu)如下:【例】求10!?!舅伎碱}】用for循環(huán)計(jì)算上題(計(jì)算10?。?。n=1p=1forninrange(1,11): p=p*n print('n=',n,'p=',p)

3.循環(huán)嵌套循環(huán)可以嵌套,在一個(gè)循環(huán)體內(nèi)包含另一個(gè)完整的循環(huán),叫做循環(huán)嵌套。循環(huán)嵌套運(yùn)行時(shí),外循環(huán)每執(zhí)行一次,內(nèi)層循環(huán)要執(zhí)行一個(gè)周期?!纠繎?yīng)用循環(huán)嵌套,編寫一個(gè)按9行9列排列輸出的乘法九九表程序?!纠繎?yīng)用循環(huán)嵌套打印出由“*”組成的直角三角形圖形。

內(nèi)循環(huán)控制列外循環(huán)控制行流程圖流程圖(程序框圖)是一種用程序框、流程線及文字說(shuō)明來(lái)表示算法的圖。算法的基本邏輯結(jié)構(gòu)

順序結(jié)構(gòu)由若干個(gè)依次執(zhí)行的步驟組成。條件結(jié)構(gòu)需要經(jīng)過(guò)條件判斷后,才能決定執(zhí)行哪個(gè)操作。循環(huán)結(jié)構(gòu)從某處開(kāi)始,按照一定的條件反復(fù)執(zhí)行某些步驟。

可以證明:任何一個(gè)算法都可以由這三種結(jié)構(gòu)組合而成。算法的基本結(jié)構(gòu)就是構(gòu)成算法的積木,這一點(diǎn)在程序框圖中可以清楚看到。

畫程序框圖的規(guī)則1)框圖一般按從上到下、從左到右的方向畫。2)使用標(biāo)準(zhǔn)的圖形符號(hào)。3)程序框一般只有一個(gè)進(jìn)入點(diǎn)和一個(gè)退出點(diǎn)。4)判斷框有兩個(gè)退出點(diǎn),用“是”與“否”或“Y”與“N”表示判斷的兩種結(jié)果。5)在圖形符號(hào)內(nèi)描述的語(yǔ)言要簡(jiǎn)練清楚。構(gòu)成流程圖的圖形符號(hào)及其作用程序框名稱功能起止框(終端框)表示一個(gè)算法的起始和結(jié)束,是任何流程圖不可少的.輸入、輸出框表示一個(gè)算法輸入和輸出的信息,可用在算法中任何需要輸入、輸出的位置.處理框(執(zhí)行框)賦值、計(jì)算,算法中處理數(shù)據(jù)需要的算式、公式等分別寫在不同的用以處理數(shù)據(jù)的處理框內(nèi).判斷框判斷某一條件是否成立,成立時(shí)在出口處標(biāo)明“是”或“Y”;不成立時(shí)標(biāo)明“否”或“N”.流程線連接程序框連接點(diǎn)連接程序框圖的兩部分順序結(jié)構(gòu)順序結(jié)構(gòu)在程序框圖中的體現(xiàn)就是用流程線將程序框自上而下地連接起來(lái),按順序執(zhí)行算法步驟。如在示意圖中,A框和B框是依次執(zhí)行的,只有在執(zhí)行完A框指定的操作后,才能接著執(zhí)行B框所指定的操作。AB例1:計(jì)算以任意正實(shí)數(shù)為半徑的圓的面積。算法:S1,輸入r.S2,S=π*r*rS3,輸出S.開(kāi)始結(jié)束輸入r輸出SS=π*r*r條件結(jié)構(gòu)條件結(jié)構(gòu)是指在算法中通過(guò)對(duì)條件的判斷,根據(jù)條件是否成立而選擇不同流向的算法結(jié)構(gòu)。滿足條件?語(yǔ)句是否滿足條件?語(yǔ)句語(yǔ)句是否判斷符號(hào):>、<、==、!=、>=、<=。邏輯符號(hào):and、or

例2:設(shè)計(jì)求任意3個(gè)整數(shù)a,b,c的最大值的算法。算法:令max代表三個(gè)數(shù)中的最大值S1,輸入a、b、c三個(gè)數(shù);S2,令max=a;S3,如果b>max,則max=b;S4,如果c>max,則max=c;S5,輸出maxmax=a輸入a,b,c結(jié)束輸出max開(kāi)始b>max?c>max?max=bmax=c是否否是開(kāi)始結(jié)束輸入a,b,c輸出max

b>max?是否max=amax=bmax=cc>max?否是不止一種框圖:程序框圖2循環(huán)結(jié)構(gòu)循環(huán)結(jié)構(gòu):從某處開(kāi)始,按照一定的條件反復(fù)執(zhí)行某些步驟。循環(huán)體:復(fù)執(zhí)行的步驟稱為循環(huán)體。循環(huán)條件:控制反復(fù)執(zhí)行的條件稱為循環(huán)條件。每次執(zhí)行循環(huán)體前,對(duì)條件進(jìn)行判斷;當(dāng)條件滿足時(shí),執(zhí)行循環(huán)體,否則終止循環(huán)。滿足條件?循環(huán)體是否滿足條件?循環(huán)體是否例3:設(shè)計(jì)一個(gè)算法1+2+…+100的值的算法,并畫出程序框圖.算法:

S1:S=0,i=1,S2:若i>100,則輸出S,算法結(jié)束.S3:S=S+i.S4:i=i+1,

S5:轉(zhuǎn)到S2.s=0foriinrange(1,101): s=s+iprint(”答案是:”,s)

開(kāi)始

結(jié)束i=1輸出Si>100?否是S=0i=i+1S=S+i【例】求50以內(nèi)能被7整除,但不能同時(shí)被5整除的所有整數(shù)。修改:

150以內(nèi)能被8整除,但同時(shí)被5整除的所有整數(shù)?!纠咳绻粋€(gè)3位數(shù)的各位數(shù)字的立方和等于該數(shù)自身,則該數(shù)稱為“水仙花數(shù)”。例如,153=13+53+33,所以153是一個(gè)水仙花數(shù)。求100~1000以內(nèi)所有“水仙花數(shù)”。

修改:求1234~54321以內(nèi)所有“水仙花數(shù)”。除10求余數(shù),相當(dāng)于提取出個(gè)位縮小10倍【例】設(shè)有一份某地連續(xù)10年內(nèi)6月1日的氣溫記錄,其數(shù)據(jù)為(0C):31、30、33、31、28、32、29、33、35、31,試計(jì)算其平均氣溫。修改:求該范圍內(nèi)的最高溫度。a的元素個(gè)數(shù)【例】雞兔同籠問(wèn)題。雞和兔在一個(gè)籠子里,從上面數(shù),有35個(gè)頭;從下面數(shù),有94只腳。問(wèn)籠中雞和兔各有多少只?36注意編程解題的思路并不完全與我們?nèi)私忸}的思路一樣?。?!【例】百錢買百雞問(wèn)題。公雞5文錢一只,母雞3文錢一只,小雞3只一文錢,用100文錢買100只雞,如何買?

設(shè)公雞x只,母雞y只,小雞z只,則:

x+y+z=1005x+3y+z/3=100題目:求100之內(nèi)的素?cái)?shù)。程序分析:素?cái)?shù)只有1和它自己可以被除盡(余數(shù)為0)。fornuminrange(2,100+1):#素?cái)?shù)大于1

foriinrange(2,num): if(num%i)==0: break ifi==num-1: print(num)題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同。程序分析:學(xué)會(huì)使用布爾值判斷。a=int(input("請(qǐng)輸入一個(gè)五位數(shù)字:\n"))x=str(a)flag=Trueforiinrange(0,3): ifx[i]!=x[-i-1]: flag=False breakifflag: print("%d是一個(gè)回文數(shù)!"%a)else: print("%d不是一個(gè)回文數(shù)!"%a)1.函數(shù)定義的一般形式【例2-15】創(chuàng)建一個(gè)名為Hello的函數(shù),其作用為輸出“歡迎進(jìn)入Python世界”的字符內(nèi)容。創(chuàng)建該函數(shù)的程序段如下:

defHello():

print("歡迎進(jìn)入Python世界")

在程序中調(diào)用Hello()函數(shù),將顯示“歡迎進(jìn)入Python世界”的字符內(nèi)容。2.4函數(shù)【例】創(chuàng)建一個(gè)名為sum()的函數(shù),其作用為計(jì)算n以內(nèi)的整數(shù)之和(包含n)。

下面為實(shí)現(xiàn)計(jì)算n以內(nèi)的整數(shù)之和的函數(shù)程序段:defsum(n): s=0 foriinrange(1,n+1): s=s+i returns2.函數(shù)的調(diào)用在Python中,直接使用函數(shù)名調(diào)用函數(shù)。如果定義的函數(shù)包含有參數(shù),則調(diào)用函數(shù)時(shí)也必須使用參數(shù)?!纠?-17】創(chuàng)建顯示如下排列字符的函數(shù),并編寫程序調(diào)用該函數(shù)。

**********************************

*歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)*

**********************************程序代碼如下:defstar(): str="*****************************"returnstrdefprn():print("*歡迎進(jìn)入學(xué)生成績(jī)管理系統(tǒng)*")print(star())prn()print(star())【例2-18】應(yīng)用函數(shù),計(jì)算1~100的和。程序的運(yùn)行結(jié)果如下:

5050局部變量與全局變量在函數(shù)體內(nèi)部定義的變量或函數(shù)參數(shù)稱為局部變量,該變量只在該函數(shù)內(nèi)部有效。在函數(shù)體外部定義的變量稱為全局變量,在變量定義后的代碼中都有效。當(dāng)全局變量與局部變量同名時(shí),則在定義局部變量的函數(shù)中,全局變量被屏蔽,只有局部變量有效。全局變量在使用前要先用關(guān)鍵字global聲明?!纠咳肿兞颗c局部變量同名的示例。常用內(nèi)置函數(shù)Python內(nèi)置函數(shù)是python系統(tǒng)內(nèi)部創(chuàng)建的,在Python的程序中,可以隨時(shí)調(diào)用這些函數(shù),不需要另外定義。例如,最常見(jiàn)的print()是內(nèi)置函數(shù),在程序中直接使用: print("HelloWorld!")而平方根函數(shù)sqrt()不是內(nèi)置函數(shù),使用該函數(shù)時(shí)需要引用math模塊: importmath y=math.sqrt(25)匿名函數(shù)lambda在Python中可以使用匿名函數(shù)。匿名函數(shù)即沒(méi)有函數(shù)名的函數(shù)。通常用lambda聲明匿名函數(shù)。例如,計(jì)算二個(gè)數(shù)的和,可以寫成: add=lambdax,y:x+y print(add(1,2))輸出的結(jié)果為3。從上面示例可以看到,lambda表達(dá)式的計(jì)算結(jié)果相當(dāng)于函數(shù)的返回值?!纠坑胠ambda表達(dá)式,求三個(gè)數(shù)的和?!纠烤帉懹?jì)算n!的函數(shù)。

計(jì)算n!,應(yīng)先計(jì)算(n-1)!,而計(jì)算(n-1)!,需要先計(jì)算(n-2)!,......,如此遞推,直到最后變成計(jì)算1!的問(wèn)題。

根據(jù)公式,1!=1,這是本問(wèn)題的遞歸終止條件。由終止條件得到1!的結(jié)果后,再反來(lái)依次計(jì)算出2!,3!,......,直到最后計(jì)算出n!。

設(shè)計(jì)算n!的函數(shù)為fun(n),當(dāng)n>1時(shí),fun(n)=n*fun(n-1)。即在fun(n)函數(shù)體內(nèi)將遞歸調(diào)用fun()自身?!纠烤帉懞瘮?shù),從鍵盤輸入?yún)?shù)n,計(jì)算斐波那契數(shù)列中第一個(gè)大于n的項(xiàng)。

斐波那契數(shù)列為:1,1,2,3,5,8,13,......。即從第3項(xiàng)開(kāi)始,每一項(xiàng)是前二項(xiàng)之和。

模塊的導(dǎo)入

在Python中用關(guān)鍵字import來(lái)導(dǎo)入某個(gè)模塊,其導(dǎo)入模塊的形式有兩種。1.用import形式導(dǎo)入模塊用import導(dǎo)入模塊的一般形式為:import模塊名

在調(diào)用import導(dǎo)入模塊的函數(shù)時(shí),必須使用以下形式來(lái)調(diào)用:模塊名.函數(shù)名2.5模塊2.用

from....import....形式導(dǎo)入模塊用from....import....導(dǎo)入模塊的一般形式為:

from模塊名import函數(shù)名或變量名

比如要引用模塊math中的sqrt()函數(shù),可以用frommathimportsqrt()語(yǔ)句來(lái)導(dǎo)入。在調(diào)用from....import....導(dǎo)入模塊的函數(shù)時(shí),直接使用函數(shù)名來(lái)調(diào)用模塊中的函數(shù),而不需要在函數(shù)的前面加上模塊名。3.導(dǎo)入模塊的順序

當(dāng)需要導(dǎo)入多個(gè)模塊時(shí),應(yīng)按照下面的順序依次導(dǎo)入模塊:

(1)導(dǎo)入Python系統(tǒng)的標(biāo)準(zhǔn)庫(kù)模塊,如os、sys等;

(2)導(dǎo)入第三方擴(kuò)展庫(kù)模塊,如pygame、mp3play等;

(3)導(dǎo)入自己定義和開(kāi)發(fā)的本地模塊。自定義模塊

在Python中,每個(gè)包含有函數(shù)的Python文件都可以作為一個(gè)模塊來(lái)使用,其模塊名就是文件名?!纠孔远x模塊使用示例。(1)設(shè)有Python文件hello.py,其中包含hh()函數(shù),代碼如下:(2)調(diào)用模塊hello中hh()函數(shù)的程序ex3_8.py代碼如下:【例】編寫一個(gè)計(jì)算二數(shù)和的模塊,再在另一個(gè)程序中調(diào)用該模塊。

(1)編寫模塊代碼,其中包含有計(jì)算二數(shù)之和的函數(shù)sum(),保存為ex3_9_1.py。(2)編寫調(diào)用模塊程序ex3_9_2.py,其代碼如下:使用pip安裝和管理擴(kuò)展模塊

1.安裝pipPython安裝第三方的模塊,大多使用包管理工具pip進(jìn)行安裝。Python包管理工具pip提供了對(duì)Python包的查找、下載、安裝、卸載的功能。下載pip下載地址是:

https:///pypi/pip#downloads下載完成之后,解壓到一個(gè)文件夾,使用控制臺(tái)命令窗口進(jìn)入解壓目錄,輸入安裝命令:

pythonsetup.pyinstall

安裝pip完后還需要配置環(huán)境變量,pip指令才能生效。

2.通過(guò)pip安裝擴(kuò)展模塊例如:(1)安裝MySQL數(shù)據(jù)庫(kù)管理模塊:pipinstallpymysql

(2)安裝圖形處理庫(kù)模塊:pipinstallpillow

(3)安裝SomePackage模塊:

pipinstallSomePackage

(4)卸載SomePackage模塊:

pipuninstallSomePackage

(5)查看當(dāng)前已經(jīng)安裝的模塊:

piplist2.6文件操作Python的os模塊提供對(duì)文件的操作函數(shù),常用操作函數(shù)如下表2-7所示:函數(shù)說(shuō)明os.rmdir(path)創(chuàng)建一個(gè)文件夾os.mknod(“test.txt”)創(chuàng)建空文件open(“test.txt”,w)以w模式打開(kāi)一個(gè)文件,如果文件不存在則創(chuàng)建文件os.rename(“oldfile”,”newfile”)文件重命名os.remove(“file”)刪除文件os.path.exists(“goal”)判斷文件是否存在文件操作函數(shù)

打開(kāi)和關(guān)閉文件1.打開(kāi)文件在python中,使用open函數(shù),可以打開(kāi)一個(gè)已經(jīng)存在的文件,或者創(chuàng)建一個(gè)新文件。打開(kāi)文件時(shí)將創(chuàng)建一個(gè)文件對(duì)象。其一般格式為:f=open(文件名,訪問(wèn)模式)

其中,f為創(chuàng)建的文件對(duì)象,參數(shù)“訪問(wèn)模式”見(jiàn)表6-3。2.關(guān)閉文件

文件操作完成之后,需要將文件對(duì)象關(guān)閉,其一般格式為:f.close()1.read()函數(shù)

使用read()函數(shù)可以讀取文件內(nèi)容,其一般格式為:str=f.read([b])其中:f為文件對(duì)象;參數(shù)b為指定讀取的字節(jié)數(shù),如果不指定,則讀取全部?jī)?nèi)容;str為字符串,存放讀取的內(nèi)容。讀取文件操作【例】設(shè)有文件a.txt,其文件內(nèi)容為“HelloPython”,編寫程序讀取該文件中的內(nèi)容,并顯示到屏幕上。編寫程序代碼如下:importosf=open("a.txt","r")str=f.read()print(str)f.close()2.readline()函數(shù)

使用readline()函數(shù)可以逐行讀取文件的內(nèi)容,其一般形式如下:str=f.readline()【例】設(shè)有文件“荷塘月色.txt”,其文件內(nèi)容為:荷塘月色剪一段時(shí)光緩緩流淌,流進(jìn)了月色中微微蕩漾,彈一首小荷淡淡的香,美麗的琴音就落在我身旁。編寫程序,用readline()函數(shù)逐行讀取文件的內(nèi)容。編寫程序代碼如下:importosf=open("荷塘月色.txt","r")whileTrue: str=f.readline() print(str) ifnotstr: breakf.close()3.readlines()函數(shù)

使用readlines()函數(shù)可以一次讀取文件中所有行的內(nèi)容,其一般形式如下:str=f.readlines()

【例】編寫程序,用readlines()函數(shù)讀取上例的“荷塘月色.txt”文件內(nèi)容。編寫程序代碼如下:importosf=open("荷塘月色.txt","r")str=f.readlines()print(str)f.close()寫入文件操作

Python通過(guò)函數(shù)write()向文件寫入數(shù)據(jù),其一般格式為:

f.write(content)【例】編寫程序,新建文本文件ex6_8.txt,并向其寫入文本數(shù)據(jù)。編寫程序代碼如下:importosstr="HelloPython\n向文件寫入數(shù)據(jù)"f=open("ex6_8.txt","w")f.write(str)f.close()

將程序保存為ex6_8.py,運(yùn)行程序后,在當(dāng)前目錄下生成一個(gè)名為“ex6_8.txt”的文本文件,其內(nèi)容為:HelloPython向文件寫入數(shù)據(jù)【例】編寫程序,在文件ex6_8.txt原數(shù)據(jù)內(nèi)容之后,添加“我對(duì)學(xué)習(xí)Python很癡迷!”。

當(dāng)以w模式為參數(shù)調(diào)用open()函數(shù)打開(kāi)文件時(shí),如果寫入數(shù)據(jù)到文件中,新內(nèi)容將覆蓋文件中原有數(shù)據(jù)內(nèi)容。若要在文件中追加數(shù)據(jù),可以以a或a+模式為參數(shù)調(diào)用open()函數(shù)打開(kāi)文件。

編寫程序代碼如下:importosf1=open("ex6_8.txt","a+")f1.write("\n我對(duì)學(xué)習(xí)Python很癡迷!")f1.close()f2=open("ex6_8.txt","r")str=f2.read()print(str)

運(yùn)行程序,其結(jié)果如下:HelloPython向文件寫入數(shù)據(jù)我對(duì)學(xué)習(xí)Python很癡迷!python中的常見(jiàn)標(biāo)準(zhǔn)異常2.7異常處理異常的捕捉與處理1.使用try...except語(yǔ)句try...except語(yǔ)句的語(yǔ)法格式為:

try: <被檢測(cè)的語(yǔ)句塊>except<異常類型名稱>: <處理異常的語(yǔ)句塊>

【例】元組下標(biāo)越界引發(fā)異常。

編寫程序代碼如下:s=[1,2,3,4,5]try: print(s[5])exceptIndexError: print("發(fā)生異常原因:索引出界")

運(yùn)行程序結(jié)果為:發(fā)生異常原因:索引出界

2.使用try...except...else語(yǔ)句try...except...else語(yǔ)句的語(yǔ)法格式為:

try: <被檢測(cè)的語(yǔ)句塊>except<異常類型名稱>: <處理異常的語(yǔ)句塊>

else: <無(wú)異常時(shí)執(zhí)行的語(yǔ)句塊>【例】編寫一個(gè)把字符串寫入到一個(gè)文件的程序。若寫入成功,則提示“內(nèi)容寫入文件成功”,否則提示“Error:沒(méi)有找到文件或讀取文件失敗”。

try:

fh=open("testfile.txt","w")

fh.write("這是一個(gè)測(cè)試文件,用于測(cè)試異常!!")exceptIOError:

print("Error:沒(méi)有找到文件或讀取文件失敗")else:

print("內(nèi)容寫入文件成功")

fh.close()3.帶有多個(gè)except子句的try語(yǔ)句【例】編寫程序,從鍵盤輸入1,2,……,5中的一個(gè)數(shù)字,否則,當(dāng)輸入其他數(shù)字或字符則提示為異常。4.帶有finally子句的try語(yǔ)句【例】帶有finally子句的try語(yǔ)句示例。1.類的一般形式

在類聲明中,class是聲明類的關(guān)鍵字,表示類聲明的開(kāi)始,類聲明后面跟著類名,按習(xí)慣類名要用大寫字母開(kāi)頭,并且類名不能用阿拉伯?dāng)?shù)字開(kāi)頭。

類中的self在調(diào)用時(shí)代表類的實(shí)例,與c++或Java中的this作用類似。

2.8面向?qū)ο缶幊?.創(chuàng)建對(duì)象類在使用時(shí),必須創(chuàng)建類的對(duì)象,再通過(guò)類的對(duì)象來(lái)操作類中的成員變量和成員方法。創(chuàng)建類對(duì)象的格式為:對(duì)象名=類名()3.調(diào)用成員方法調(diào)用類的方法時(shí),需要通過(guò)類對(duì)象調(diào)用,其調(diào)用格式如下:

對(duì)象名.方法名(self)【例】編寫一個(gè)計(jì)算二數(shù)之和的類。方法sum(self,x,y)的參數(shù)self代表類對(duì)象自身,self.x=x即把賦值語(yǔ)句右邊的參數(shù)x值賦值給左邊類成員變量x。為了區(qū)分參數(shù)及成員變量,在成員變量x前面添加self。

4.類的公有成員和私有成員

在Python程序中定義的成員變量和方法默認(rèn)都是公有成員,類之外的任何代碼都可以隨意訪問(wèn)這些成員。如果在成員變量和方法名之前加上兩個(gè)下劃線“__”作前綴,則該變量或方法就是類的私有成員。私有成員只能在類的內(nèi)部調(diào)用,類外的任何代碼都無(wú)法訪問(wèn)這些成員。

【例】私有成員示例。5.類的構(gòu)造方法在Python中,類的構(gòu)造方法為_(kāi)_init__(),其中方法名開(kāi)始和結(jié)束的下劃線是雙下劃線。構(gòu)造方法屬于對(duì)象,每個(gè)對(duì)象都有自己的構(gòu)造方法。如果一個(gè)類在程序中沒(méi)有定義__init__()方法,則系統(tǒng)會(huì)自動(dòng)建立一個(gè)方法體為空的__init__()方法。如果一個(gè)類的構(gòu)造方法帶有參數(shù),則在創(chuàng)建類對(duì)象時(shí)需要賦實(shí)參給對(duì)象。在程序運(yùn)行時(shí),構(gòu)造方法在創(chuàng)建對(duì)象時(shí)由系統(tǒng)自動(dòng)調(diào)用,不需要用調(diào)用方法的語(yǔ)句顯式調(diào)用。

【例】設(shè)計(jì)一個(gè)類Person。該類有Name(姓名)、Age(年齡)兩個(gè)變量,可以從鍵盤輸入雇員姓名、年齡等信息。

6.析構(gòu)方法

在Python中,析構(gòu)方法為_(kāi)_del__(),其中開(kāi)始和結(jié)束的下劃線是雙下劃線。析構(gòu)方法用于釋放對(duì)象所占用的資源,在Python系統(tǒng)銷毀對(duì)象之前自動(dòng)執(zhí)行。析構(gòu)方法屬于對(duì)象,每個(gè)對(duì)象都有自己的析構(gòu)方法。如果類中沒(méi)有定義__del__()方法,則系統(tǒng)會(huì)自動(dòng)提供默認(rèn)的析構(gòu)方法?!纠课鰳?gòu)方法示例。類的繼承1.類的單繼承

類的單繼承的一般形式為:

class子類名(父類名):

子類的類體語(yǔ)句

【例3-5】定義一個(gè)父類Person,再定義一個(gè)子類Sunny繼承Person,并在子類中調(diào)用父類的方法。2.類的多繼承Python在多繼承時(shí),如果這些父類中有相同的方法名,面在子類中使用時(shí)沒(méi)有指定父類名,則Python系統(tǒng)將從左往右按順序搜索。Python支持多繼承,多繼承的一般形式為:class子類名(父類名1,父類名2,....,父類n):

子類的類體語(yǔ)句【例】多繼承示例。

2.9正則表達(dá)式正則表達(dá)式是一個(gè)特殊的字符序列,或是一種可以用于模式匹配和替換的一種邏輯公式。通過(guò)正則表達(dá)式,可以用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯。它能幫助程序員方便的檢查一個(gè)字符串是否與某種模式匹配,這在后續(xù)編程過(guò)程中非常有用。Python自1.5版本起增加了re模塊,re模塊使Python語(yǔ)言擁有全部的正則表達(dá)式功能。re模塊定義了一系列函數(shù)、常量以及異常,下面介紹常用的幾個(gè)。字符匹配與匹配模式

1.字符匹配我們先從簡(jiǎn)單的問(wèn)題開(kāi)始。假設(shè)要搜索一個(gè)包含字符“cat”的字符串,搜索用的子字符串就是“cat”。如果搜索對(duì)大小寫不敏感,單詞“catalog”、“Catherine”、“sophisticated”都可以匹配。也就是說(shuō):子字符串:cat匹配:catalog、Catherine、sophisticated2.匹配模式例如,使用‘?’和‘*’通配符來(lái)查找硬盤上的文件?!?’通配符匹配文件名中的1個(gè)字符,而‘*’通配符匹配多個(gè)字符。這時(shí),‘?’和‘*’通配符就是一種匹配模式。

比如,“data?.dat”這樣的模式將查找下列文件:data.datdata1.datdata2.datdatax.datdataN.dat

若使用‘*’字符代替‘?’字符擴(kuò)大了找到的文件的數(shù)量?!癲ata*.dat”匹配下列所有文件:data.datdata1.datdata2.datdata12.datdatax.datdataXYZ.dat正則表達(dá)式的規(guī)則1.構(gòu)建正則表達(dá)式規(guī)則的特殊字符正則表達(dá)式是一種可以用于模式匹配和替換的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個(gè)“規(guī)則字符串”,這個(gè)“規(guī)則字符串”用來(lái)表達(dá)對(duì)字符串的一種過(guò)濾邏輯。一個(gè)正則表達(dá)式就是由普通的字符(例如字符‘a(chǎn)’~‘z’)以及特殊字符(稱為“元字符”)組成的文字模式。該模式用以描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。正則表達(dá)式的使用,可以通過(guò)簡(jiǎn)單的辦法來(lái)實(shí)現(xiàn)強(qiáng)大的功能。下面先看一個(gè)簡(jiǎn)單的用特殊字符(元字符)表示正則表達(dá)式規(guī)則的示例:

^[0–9]+abc$其中:^匹配字符串的開(kāi)始位置。[0-9]+匹配多個(gè)數(shù)字,‘[0-9]’匹配單個(gè)數(shù)字,‘+’匹配

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論