Python程序設(shè)計(jì)基礎(chǔ) 課件 項(xiàng)目五編寫基于函數(shù)的學(xué)生管理模塊程序_第1頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 項(xiàng)目五編寫基于函數(shù)的學(xué)生管理模塊程序_第2頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 項(xiàng)目五編寫基于函數(shù)的學(xué)生管理模塊程序_第3頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 項(xiàng)目五編寫基于函數(shù)的學(xué)生管理模塊程序_第4頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 項(xiàng)目五編寫基于函數(shù)的學(xué)生管理模塊程序_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Python程序設(shè)計(jì)

項(xiàng)目5編寫基于函數(shù)的

學(xué)生成績管理系統(tǒng)5.1學(xué)習(xí)目標(biāo)學(xué)習(xí)基礎(chǔ)知識(shí):函數(shù)的定義和調(diào)用函數(shù)的參數(shù)及參數(shù)傳遞變量作用域模塊正則表達(dá)式

通過學(xué)習(xí)編寫基于函數(shù)的學(xué)生成績管理系統(tǒng)這一具體項(xiàng)目,掌握Python中函數(shù)的定義與使用的方法,熟悉函數(shù)的返回值和函數(shù)參數(shù)傳遞的過程、理解函數(shù)的嵌套調(diào)用與遞歸調(diào)用的定義和使用方法,掌握模塊的應(yīng)用和正則表達(dá)式等。5.2基礎(chǔ)知識(shí)5.2.1函數(shù)的定義和調(diào)用5.2.2函數(shù)的參數(shù)5.2.3參數(shù)傳遞5.2.4變量作用域5.2.5模塊5.2.6正則表達(dá)式5.2.1函數(shù)的定義和調(diào)用1.函數(shù)的定義函數(shù)是一段具有特定功能的、可重復(fù)使用的代碼段。能夠分解問題,提高程序的模塊化,實(shí)現(xiàn)代碼的重用。函數(shù)的分類系統(tǒng)內(nèi)置函數(shù):是可以直接使用的函數(shù),如print()函數(shù)。標(biāo)準(zhǔn)庫函數(shù):須import導(dǎo)入后才能使用。第三方庫函數(shù):由Python社區(qū)提供,也需要import導(dǎo)入后使用。用戶自定義函數(shù):根據(jù)程序開發(fā)需要自行編寫。5.2.1函數(shù)的定義和調(diào)用1.函數(shù)的定義用戶自定義函數(shù):【注意】即使該函數(shù)不需要接收任何參數(shù),也必須保留一對(duì)空的圓括號(hào);括號(hào)后面的冒號(hào)不能省略;函數(shù)體相對(duì)于def關(guān)鍵字必須保持一定的空格縮進(jìn)。5.2.1函數(shù)的定義和調(diào)用2.函數(shù)的調(diào)用函數(shù)名只能是在調(diào)用前定義好的函數(shù)的名字。實(shí)際參數(shù)列表是明確了值的列表,多個(gè)實(shí)參用逗號(hào)“,”分隔,與形式參數(shù)列表一一對(duì)應(yīng),明確的值可以是變量、常量、表達(dá)式,甚至是函數(shù)。如果實(shí)際參數(shù)個(gè)數(shù)少于形式參數(shù)的個(gè)數(shù),那么形式參數(shù)需要設(shè)置默認(rèn)值。5.2.1函數(shù)的定義和調(diào)用【例】編寫兩數(shù)相乘函數(shù),并調(diào)用。運(yùn)行結(jié)果:5.2.1函數(shù)的定義和調(diào)用3.函數(shù)的嵌套Python允許函數(shù)嵌套定義,即在函數(shù)體內(nèi)部再定義一個(gè)函數(shù)。Python允許函數(shù)的嵌套調(diào)用,即一個(gè)函數(shù)調(diào)用另一個(gè)函數(shù)時(shí),被調(diào)用的函數(shù)的函數(shù)體內(nèi)包含了對(duì)其它函數(shù)的調(diào)用。一個(gè)復(fù)雜的程序經(jīng)常出現(xiàn)多層的函數(shù)調(diào)用。5.2.1函數(shù)的定義和調(diào)用【例】函數(shù)嵌套調(diào)用。

運(yùn)行結(jié)果:5.2.1函數(shù)的定義和調(diào)用【例】利用函數(shù)遞歸調(diào)用求5!。

運(yùn)行結(jié)果:5.2.2函數(shù)的參數(shù)1.

位置參數(shù)

位置參數(shù),或叫必備參數(shù),調(diào)用函數(shù)時(shí),實(shí)參和形參的順序須嚴(yán)格一致,并且實(shí)參的數(shù)量必須和形參的數(shù)量相同,否則程序提示錯(cuò)誤。

5.2.2函數(shù)的參數(shù)【例】位置參數(shù)調(diào)用。

運(yùn)行結(jié)果:5.2.2函數(shù)的參數(shù)2.關(guān)鍵字參數(shù)關(guān)鍵字參數(shù)是指調(diào)用函數(shù)時(shí)的參數(shù)傳遞方式,是一種按參數(shù)名字傳遞值的方式。使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與定義時(shí)不一致,Python解釋器能夠用參數(shù)名匹配參數(shù)值。關(guān)鍵字參數(shù)的形式如下:形參名=實(shí)參值5.2.2函數(shù)的參數(shù)【例】關(guān)鍵字參數(shù)調(diào)用。

運(yùn)行結(jié)果:5.2.2函數(shù)的參數(shù)3.默認(rèn)值參數(shù)

調(diào)用帶有默認(rèn)值參數(shù)的函數(shù)時(shí),可以不用為設(shè)置了默認(rèn)值的形參進(jìn)行傳值,此時(shí)函數(shù)將會(huì)直接使用函數(shù)定義時(shí)設(shè)置的默認(rèn)值,也可以通過顯式賦值來替換其默認(rèn)值。在定義帶有默認(rèn)值參數(shù)的函數(shù)時(shí),默認(rèn)值參數(shù)必須出現(xiàn)在函數(shù)形參列表的最右端,否則會(huì)提示語法錯(cuò)誤。5.2.2函數(shù)的參數(shù)【例】默認(rèn)值參數(shù)調(diào)用。

運(yùn)行結(jié)果:5.2.2函數(shù)的參數(shù)4.不定長參數(shù)

其中,*args用來接收任意多個(gè)實(shí)參并將其放在一個(gè)元組中,**kwargs用來接收類似于關(guān)鍵字參數(shù)一樣顯式賦值形式的多個(gè)實(shí)參并將其放入字典中。5.2.2函數(shù)的參數(shù)【例】不定長參數(shù)調(diào)用。

運(yùn)行結(jié)果:5.2.3參數(shù)傳遞參數(shù)傳遞方式是指實(shí)參向形參傳遞參數(shù)的方式,參數(shù)傳遞的實(shí)質(zhì)是形參引用傳入實(shí)參的名稱。包含值傳遞和引用傳遞兩種方式:值傳遞:實(shí)參的數(shù)據(jù)類型是固定數(shù)據(jù)類型(如整數(shù)、浮點(diǎn)數(shù)、字符串、元組等)。其實(shí)質(zhì)是將實(shí)參的值復(fù)制一份(副本)傳給形參,而實(shí)參本身不會(huì)因形參是否變化而受到任何影響。引用傳遞:實(shí)參的數(shù)據(jù)類型是可變對(duì)象(列表、字典)。其實(shí)質(zhì)是形參和實(shí)參采用相同的引用。如果函數(shù)中修改了形參的值時(shí),實(shí)參的值將隨之發(fā)生變化。5.2.3參數(shù)傳遞【例】值傳遞方式參數(shù)傳遞。

運(yùn)行結(jié)果:5.2.3參數(shù)傳遞【例】可變對(duì)象參數(shù)傳遞。

運(yùn)行結(jié)果:5.2.4變量作用域1.局部變量和全局變量局部變量,即定義在函數(shù)內(nèi)的變量,只能在函數(shù)內(nèi)使用。即使函數(shù)外具有相同名稱的變量,也與其也沒有任何關(guān)系。不同函數(shù)中,可使用相同名字的局部變量,它們代表不同對(duì)象,互不干擾。此外,函數(shù)的形式參數(shù)也屬于局部變量,作用范圍僅限于函數(shù)內(nèi)部。全局變量是指在函數(shù)之外定義的變量。全局變量可以在整個(gè)程序范圍內(nèi)有效,但不能在函數(shù)體內(nèi)直接被賦值,否則會(huì)報(bào)錯(cuò)。5.2.4變量作用域【例】變量的作用域。

運(yùn)行結(jié)果:5.2.4變量作用域2.global和nonlocal關(guān)鍵字global全局變量不能在函數(shù)體內(nèi)直接被賦值。如果程序中定義了全局變量,在函數(shù)內(nèi)部需要使用該全局變量,可在函數(shù)定義時(shí),使用global關(guān)鍵字明確聲明該變量,經(jīng)過聲明后,函數(shù)體內(nèi)對(duì)該變量進(jìn)行操作后,結(jié)果可以反映到函數(shù)外。如果程序沒有定義全局變量,而是在函數(shù)內(nèi)部直接使用global關(guān)鍵字聲明了一個(gè)變量為全局變量,那么在調(diào)用該函數(shù)后,會(huì)創(chuàng)建一個(gè)新的全局變量。nonlocal如果要在一個(gè)嵌套的函數(shù)中修改嵌套作用域中的變量,則須使用nonlocal關(guān)鍵字。5.2.4變量作用域【例】global聲明變量。

運(yùn)行結(jié)果:

5.2.4變量作用域【例】nonlocal聲明變量。

運(yùn)行結(jié)果:

5.2.4變量作用域3.匿名函數(shù)可以用lambda關(guān)鍵字創(chuàng)建小型匿名函數(shù),省去了定義函數(shù)的過程,減少了函數(shù)重名的可能性。匿名函數(shù)并非沒有名字,只是將函數(shù)名作為函數(shù)結(jié)果返回,其語法格式如下:函數(shù)名=lambda[參數(shù)列表]:表達(dá)式lambda函數(shù)冒號(hào)前面是函數(shù)的參數(shù)列表,列表如果有多個(gè)參數(shù)須用逗號(hào)分隔,冒號(hào)后面是表達(dá)式,表達(dá)式的結(jié)果就是該匿名函數(shù)的返回值。5.2.4變量作用域【例】lambda函數(shù)應(yīng)用。

運(yùn)行結(jié)果:5.2.5模塊模塊是一個(gè)保存了Python程序代碼的文件。其名字為模塊名加上擴(kuò)展名.py,一般來說,模塊名盡量使用小寫字母命名。在模塊中,能定義函數(shù)、類和變量,也可以包含可執(zhí)行的代碼。程序中通過import導(dǎo)入模塊后,可以使用其中的函數(shù)和變量。5.2.5模塊1.模塊的導(dǎo)入模塊使用前需要進(jìn)行導(dǎo)入。導(dǎo)入后方可使用。導(dǎo)入格式如下:5.2.5模塊1.模塊的導(dǎo)入import語句,其作用是導(dǎo)入整個(gè)模塊,語法為:導(dǎo)入模塊后,必須通過<模塊名>.<函數(shù)名>來調(diào)用模塊中的函數(shù)。運(yùn)行結(jié)果:5.2.5模塊1.模塊的導(dǎo)入import…as…,其作用是給模塊取別名后導(dǎo)入,語法為:導(dǎo)入模塊后,必須通過<別名>.<函數(shù)名>來調(diào)用模塊中的函數(shù)。運(yùn)行結(jié)果:5.2.5模塊1.模塊的導(dǎo)入from…import,其作用是導(dǎo)入需要的指定函數(shù),語法為:導(dǎo)入模塊后,直接用<函數(shù)名>來調(diào)用模塊中的函數(shù)。運(yùn)行結(jié)果:5.2.5模塊2.模塊的創(chuàng)建每個(gè)Python文件都可以作為一個(gè)模塊,模塊的名字就是文件名。可以自行創(chuàng)建如,創(chuàng)建一個(gè)名為compthree.py的文件,其中定義了求三個(gè)數(shù)中最大值的函數(shù)maxthree()。5.2.5模塊【例】編寫程序,調(diào)用自定義模塊compthree中的maxthree函數(shù),比較并輸出三個(gè)數(shù)中的最大值。

運(yùn)行結(jié)果:5.2.5模塊3.__name__屬性__name__屬性是模塊在創(chuàng)建之初就自動(dòng)加載的內(nèi)建變量之一。每個(gè)Python模塊在運(yùn)行時(shí)都有會(huì)一個(gè)__name__屬性,通過__name__屬性可以識(shí)別程序的使用方式:當(dāng)作為模塊導(dǎo)入時(shí),則其__name__屬性的值將被自動(dòng)設(shè)置為模塊名;當(dāng)作為程序直接運(yùn)行時(shí),則其__name__屬性會(huì)被自動(dòng)設(shè)置為字符串“__main__”。5.2.5模塊3.__name__屬性修改完善compthree.py:單獨(dú)運(yùn)行該程序時(shí),運(yùn)行結(jié)果為:再次運(yùn)行前面程序,結(jié)果如下。沒有變化,是因?yàn)橹话裞ompthree作為模塊導(dǎo)入,不會(huì)輸出測(cè)試的最大值。5.2.6正則表達(dá)式正則表達(dá)式,簡稱為regex,是文本模式的描述方法。例如,\d是一個(gè)正則表達(dá)式,表示一位數(shù)字字符,即任何一位0到9的數(shù)字。作為處理字符串的強(qiáng)大工具,正則表達(dá)式使用預(yù)定義的特定模式去匹配一類具有共同特征的字符串,主要用于快速、準(zhǔn)確地完成復(fù)雜字符串的查找、替換等。Python中所有正則表達(dá)式的函數(shù)都在re模塊中,使用時(shí)需要導(dǎo)入該模塊。5.2.6正則表達(dá)式1.正則表達(dá)式語法正則表達(dá)式由元字符及其不同的組合來構(gòu)成,通過巧妙的構(gòu)造正則表達(dá)式可以匹配任何字符串,并完成復(fù)雜的字符串處理任務(wù)。表中羅列了一些常見實(shí)例。5.2.6正則表達(dá)式2.re模塊的主要函數(shù)(方法)re模塊主要用來實(shí)現(xiàn)正則表達(dá)式的操作。具體使用時(shí),既可以直接使用re模塊的方法進(jìn)行字符串的處理,也可以將模式編譯為正則表達(dá)式對(duì)象,然后使用正則表達(dá)式來操作對(duì)象。表5-2列出了re模塊常用函數(shù)(方法)。5.2.6正則表達(dá)式2.re模塊的主要函數(shù)(方法)re模塊主要用來實(shí)現(xiàn)正則表達(dá)式的操作。具體使用時(shí),既可以直接使用re模塊的方法進(jìn)行字符串的處理,也可以將模式編譯為正則表達(dá)式對(duì)象,然后使用正則表達(dá)式來操作對(duì)象。表中列出了re模塊常用函數(shù)(方法)。其中,參數(shù)pattern為正則表達(dá)式,參數(shù)string為字符串,參數(shù)flags的值可以是re.I(q忽略大小寫)、re.M(多行匹配模式)等。5.2.6正則表達(dá)式具體使用時(shí),可以直接使用re模塊處理字符串,如:importrelanguage='C.Java.Python.SQL'print(re.split('[\.]+',text))運(yùn)行結(jié)果為:['C','Java','Python','SQL']也可以將模式編譯為正則表達(dá)式對(duì)象,然后使用正則表達(dá)式對(duì)象的方法操作字符串,如:importrelanguage='C.Python.Java.SQL'pattern=pile(r'[a-zA-Z]+')print(re.findall(pattern,language))5.3典型工作項(xiàng)目本階段是在Python的IDLE開發(fā)環(huán)境下,在前一個(gè)典型工作項(xiàng)目的基礎(chǔ)上,通過編寫若干個(gè)“學(xué)生成績管理系統(tǒng)”程序功能模塊對(duì)應(yīng)的函數(shù),實(shí)現(xiàn)基于函數(shù)的學(xué)生管理模塊程序功能。通過測(cè)試后,提交該程序。

5.3.1需求分析本系統(tǒng)是在前一個(gè)典型項(xiàng)目基礎(chǔ)上,進(jìn)一步完善其功能??梢元?dú)立設(shè)計(jì)菜單功能函數(shù)和錄入、顯示等功能函數(shù),用函數(shù)替換原有輸出語句,優(yōu)化程序結(jié)構(gòu),同時(shí)為下一步擴(kuò)展程序功能奠定基礎(chǔ)。5.3.2程序設(shè)計(jì)1.總體設(shè)計(jì)系統(tǒng)的功能模塊對(duì)應(yīng)的函數(shù)包括:(1)主界面函數(shù)main():顯示系統(tǒng)的功能菜單。(2)錄入函數(shù)insert():錄入增加學(xué)生成績信息,寫入文件。(3)顯示函數(shù)show():從文件中讀出所有學(xué)生成績信息。(4)查詢函數(shù)search():從文件中讀出指定學(xué)生成績信息。(5)修改函數(shù)modify():修改指定學(xué)生成績信息,寫入文件。(6)刪除函數(shù)delete():刪除指定學(xué)生成績信息,更新文件。5.3.2程序設(shè)計(jì)2.主界面設(shè)計(jì)界面使用簡單直觀的布局。可以直接利用前一個(gè)項(xiàng)目的主界面設(shè)計(jì),如圖所示。

5.3.2程序設(shè)計(jì)3.詳細(xì)設(shè)計(jì)

(1)錄入學(xué)生成績信息函數(shù)insert()功能:進(jìn)入系統(tǒng)主界面后,選擇1,調(diào)用“錄入學(xué)生成績信息”函數(shù)。函數(shù)內(nèi)容為提示“系統(tǒng)調(diào)用了錄入學(xué)生成績模塊函數(shù)。”。

(2)顯示學(xué)生成績信息函數(shù)show()功能:進(jìn)入系統(tǒng)主界面后,選擇2,調(diào)用“顯示學(xué)生成績信息”函數(shù)。函數(shù)內(nèi)容為提示“系統(tǒng)調(diào)用了顯示學(xué)生成績模塊函數(shù)。”。

(3)查詢學(xué)生成績信息函數(shù)search()功能:進(jìn)入系統(tǒng)主界面后,選擇3,調(diào)用“查詢學(xué)生成績信息”函數(shù)。函數(shù)內(nèi)容為提示“系統(tǒng)調(diào)用了查詢學(xué)生成績模塊函數(shù)。”。5.3.2程序設(shè)計(jì)3.詳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論