項(xiàng)目九 計(jì)算期末成績(jī)_第1頁(yè)
項(xiàng)目九 計(jì)算期末成績(jī)_第2頁(yè)
項(xiàng)目九 計(jì)算期末成績(jī)_第3頁(yè)
項(xiàng)目九 計(jì)算期末成績(jī)_第4頁(yè)
項(xiàng)目九 計(jì)算期末成績(jī)_第5頁(yè)
已閱讀5頁(yè),還剩19頁(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)介

Python程序設(shè)計(jì)項(xiàng)目九定義函數(shù)與調(diào)用——模塊化任務(wù)計(jì)算期末成績(jī)學(xué)校:東莞市電子科技學(xué)校

主講教師:XXXPython程序設(shè)計(jì)職業(yè)素養(yǎng).1.提高學(xué)生良好的審美觀和藝術(shù)欣賞能力;2.增強(qiáng)團(tuán)隊(duì)自主探究的學(xué)習(xí)意識(shí);3.提高學(xué)生感悟生活美的能力;4.增強(qiáng)愛(ài)國(guó)愛(ài)校的情懷。本節(jié)重難點(diǎn).1.掌握函數(shù)的定義;2.掌握函數(shù)的調(diào)用;3.掌握l(shuí)ambda函數(shù)的使用。

目錄/directorys01任務(wù)目標(biāo)0101任務(wù)描述020203任務(wù)分析020205相關(guān)知識(shí)020202任務(wù)小結(jié)020206任務(wù)實(shí)施020204任務(wù)目標(biāo)

本任務(wù)主要通過(guò)期末成績(jī)的計(jì)算任務(wù),理解函數(shù)的作用,掌握函數(shù)的定義、調(diào)用以及l(fā)ambda函數(shù)的使用。Python定義函數(shù)與調(diào)用思維導(dǎo)圖如圖9-1-1所示。Python程序設(shè)計(jì)圖9-1-1Python定義函數(shù)與調(diào)用思維導(dǎo)圖Python程序設(shè)計(jì)任務(wù)描述

任務(wù)描述現(xiàn)X大專Python的期末測(cè)評(píng)成績(jī)出來(lái)了,期末總評(píng)成績(jī)由三個(gè)部分構(gòu)成:平時(shí)出勤成績(jī)、期中和期末成績(jī),每個(gè)部分占不同的比例?,F(xiàn)在,請(qǐng)你設(shè)計(jì)一個(gè)程序,輸入同學(xué)們的Python成績(jī),得到該科目班級(jí)前三名的同學(xué)的名單和成績(jī)。任務(wù)分析根據(jù)描述,我們可以知道,本任務(wù)要計(jì)算每個(gè)同學(xué)的加權(quán)后的總成績(jī),然后根據(jù)成績(jī)高低取前三名。想要計(jì)算同學(xué)們的加權(quán)成績(jī)就需要了解每部分的占比,經(jīng)過(guò)進(jìn)一步的溝通,我們了解到Python的平時(shí)考勤占30%,期中成績(jī)占比30%,期末成績(jī)占比40%。通過(guò)以上信息可以整理得到:首先,我們需要輸入班級(jí)同學(xué)每科的平時(shí)成績(jī)、期中和期末成績(jī);然后,計(jì)算每位同學(xué)Python科目的加權(quán)總成績(jī),接著對(duì)總成績(jī)進(jìn)行排序;最后根據(jù)排序結(jié)果得到班級(jí)排名前三的同學(xué)的成績(jī)。

Python程序設(shè)計(jì)相關(guān)知識(shí)

(1)函數(shù)函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一或相關(guān)聯(lián)某一功能的代碼段。在編寫大型的應(yīng)用程序時(shí),通常有很多的操作或者功能有相同或相似的代碼,如果每次都寫一遍重復(fù)的代碼,不但費(fèi)時(shí)費(fèi)力、容易出錯(cuò),而且交給別人也很麻煩,為了避免代碼冗雜、便于維護(hù),我們將這些重復(fù)使用的代碼以固定的格式組織成一個(gè)單元完成相應(yīng)的功能,這個(gè)單元就稱為“函數(shù)”。通過(guò)函數(shù)名,我們就可以在不同地方多次調(diào)用該函數(shù),而不需要再重復(fù)編寫這些代碼。在Python中,函數(shù)主要分為三類:一類是系統(tǒng)提供的,即Python中的標(biāo)準(zhǔn)函數(shù),也稱“內(nèi)置函數(shù)”,如inPut,Print(),max(),len()等;第二類是由其他程序員編寫的,我們可以直接拿來(lái)用,比如一些開(kāi)源的函數(shù)庫(kù)BeautifulSouP,NumPy等;第三類是由用戶自己編寫的,通常成為自定義函數(shù)。這章我們主要學(xué)習(xí)第三種,自定義函數(shù)的編寫和使用。(2)定義使用def語(yǔ)句來(lái)定義函數(shù)。簡(jiǎn)單函數(shù)的定義語(yǔ)法格式如圖9-1-2所示圖9-1-2簡(jiǎn)單函數(shù)的定義語(yǔ)法格式

Python程序設(shè)計(jì)①函數(shù)名:從語(yǔ)法角度來(lái)看,函數(shù)名只要是一個(gè)合法的標(biāo)識(shí)符即可;從程序的可讀性角度來(lái)看,一般函數(shù)名應(yīng)該由一個(gè)或多個(gè)有意義的單詞連綴而成,每個(gè)單詞的字母全部小寫,單詞與單詞之間使用下畫線分隔。函數(shù)名本質(zhì)上就是函數(shù)的內(nèi)存地址:一是方便被引用,二是可被當(dāng)作容器類型(比如列表)的元素,三是可以當(dāng)作函數(shù)的參數(shù)和返回值。②形參列表:定義該函數(shù)可以接收的參數(shù)。形參列表由多個(gè)形參名組成,多個(gè)形參名之間以英文逗號(hào)“,”隔開(kāi),也叫“形參”。③函數(shù)體,由多條語(yǔ)句組成的代碼塊,在實(shí)際編寫中,要注意有合適的縮進(jìn)。④return語(yǔ)句可以沒(méi)有,若沒(méi)有則返回None。如果有,一旦執(zhí)行,則函數(shù)運(yùn)行結(jié)束,不再執(zhí)行return之后的語(yǔ)句。⑤函數(shù)說(shuō)明文檔,可以沒(méi)有,主要對(duì)函數(shù)的描述,用于日后程序代碼的調(diào)用和維護(hù),內(nèi)容包括函數(shù)的功能、傳遞的參數(shù)的作用,類型等。⑥注意:函數(shù)的定義必須擋在函數(shù)調(diào)用前,否則編譯器會(huì)找不到該函數(shù)報(bào)錯(cuò)?!緦?shí)例9-1-1】定義一個(gè)歡迎新同學(xué)的函數(shù),如圖9-1-3所示。圖9-1-3定義歡迎新同學(xué)的函數(shù)Python程序設(shè)計(jì)(3)調(diào)用調(diào)用函數(shù)也就是執(zhí)行函數(shù)。要調(diào)用一個(gè)函數(shù),必須使用函數(shù)名后跟圓括號(hào)的方式才能調(diào)用函數(shù)。調(diào)用函數(shù)時(shí),按照函數(shù)定義的參數(shù)順序,提供相應(yīng)個(gè)數(shù)和類型的參數(shù),每個(gè)參數(shù)之間用逗號(hào)“,”分隔。需要注意的是,必須定義參數(shù)在前,調(diào)用在后。調(diào)用格式:[返回值]=函數(shù)名([實(shí)參值])形參:定義函數(shù)時(shí),小括號(hào)中的參數(shù)列表,是用來(lái)接收參數(shù)用的,在函數(shù)內(nèi)部作為變量使用。實(shí)參:調(diào)用函數(shù)時(shí),小括號(hào)中的參數(shù),是用來(lái)把數(shù)據(jù)傳遞到函數(shù)內(nèi)部用的。注意:Python在做語(yǔ)法和詞法分析檢查的時(shí)候,并不會(huì)對(duì)參數(shù)類型進(jìn)行檢查,在執(zhí)行過(guò)程中,如果參數(shù)類型不符合函數(shù)內(nèi)部運(yùn)行機(jī)制,才會(huì)彈出相應(yīng)的錯(cuò)誤?!緦?shí)例9-1-2】調(diào)用歡迎新同學(xué)的函數(shù)welcome(),歡迎韓梅梅同學(xué),

如圖9-1-4所示。(4)返回值return語(yǔ)句用于表示函數(shù)執(zhí)行到此結(jié)束,并且返回return后面的數(shù)據(jù)。有時(shí)候,函數(shù)不需要返回任何值,此時(shí)可以不需要return語(yǔ)句,它在后臺(tái)默認(rèn)返回個(gè)None,并且不給任何提示。但是更多的時(shí)候我們還是需要返回一些東西。一旦函數(shù)執(zhí)行過(guò)程遇到return語(yǔ)句,那么return之后函數(shù)體內(nèi)的所有代碼都會(huì)被忽略,直接跳出函數(shù)體。那怕你現(xiàn)在正在一個(gè)循環(huán)內(nèi)。Python程序設(shè)計(jì)【實(shí)例9-1-3】return語(yǔ)句示例,如圖9-1-5所示。return可以返回的數(shù)據(jù)呢包括以下幾種。①什么都不返回,僅僅:return。②數(shù)字/字符串/任意數(shù)據(jù)類型:return'hello'。③一個(gè)表達(dá)式:return1+2。④一個(gè)判斷語(yǔ)句:return100>99。Python程序設(shè)計(jì)⑤一個(gè)變量:returna。⑥一個(gè)函數(shù)調(diào)用:returnfunc()。⑦返回自己?。簉eturnself。⑧多個(gè)返回值,以逗號(hào)分隔:returna,1+2,"hello"。簡(jiǎn)而言之,函數(shù)可以return幾乎任意Python對(duì)象。(5)lambda表達(dá)式lambda表達(dá)式又稱“匿名函數(shù)”,常用來(lái)表示內(nèi)部?jī)H包含1行表達(dá)式的函數(shù)。lambda表達(dá)式的語(yǔ)法格式如下:name=lambda[list]:表達(dá)式其中,定義lambda表達(dá)式,必須使用lambda關(guān)鍵字;[list]作為可選參數(shù),等同于定義函數(shù)是指定的參數(shù)列表;value為該表達(dá)式的名稱。Python程序設(shè)計(jì)【實(shí)例9-1-4】add函數(shù)定義如下,它只有一行代碼,如圖9-1-6所示。使用lambda表達(dá)式,可以表示為:add=lambdax,y:x+ylambda表達(dá)式,可以理解是一個(gè)簡(jiǎn)單函數(shù)的簡(jiǎn)寫版本。相比普通,有以下2個(gè)優(yōu)勢(shì)。①使用lambda表達(dá)式讓代碼更加簡(jiǎn)潔。②由于lambda表達(dá)式可以在用完之后立即釋放,可以提高程序執(zhí)行的性能。實(shí)戰(zhàn)任務(wù)02Python程序設(shè)計(jì)為此我們可以分解為4個(gè)任務(wù)去實(shí)施。每個(gè)任務(wù)就是一個(gè)功能,可以使用函數(shù)來(lái)實(shí)現(xiàn),例表9-1所示。任務(wù)名功能代碼示例步驟1輸入班級(jí)同學(xué)的Python總評(píng)的各部分成績(jī)name=inPut('輸入姓名:');Print('輸入Python考勤成績(jī),期中考試成績(jī),期末考試成績(jī)')score1,score2,scre3=inPut('形如80,70,90:').sPlit(',')步驟2計(jì)算每位同學(xué)們的總評(píng)成績(jī)score=score1*0.3+score2*0.3+scre3*0.4步驟3對(duì)全班成績(jī)進(jìn)行排序nameScores=sorted(nameScores.items(),key=lambdax:x[1],reverse=True)步驟4輸出前三名同學(xué)的姓名和成績(jī)fori,iteminenumerate(nameScoresList):name=item[0]score=item[1]Print('排名:',i,'name:',name,'成績(jī):',score)Python程序設(shè)計(jì)步驟1:輸入班級(jí)同學(xué)的姓名和Python總評(píng)的各部分成績(jī),我們創(chuàng)建了函inPutNameScore來(lái)實(shí)現(xiàn)代碼如圖9-1-7所示。圖9-1-7輸入姓名及部分成績(jī)?yōu)榱烁押玫妮斎?,我們一次性輸?部分成績(jī),使用sPlit()函數(shù),將各部分成績(jī)分開(kāi),最后返回姓名和各部分成績(jī)。步驟2:創(chuàng)建calcPython()來(lái)計(jì)算每位同學(xué)的總評(píng)成績(jī),3個(gè)參數(shù)傳入總評(píng)的各部分成績(jī),函數(shù)內(nèi)部計(jì)算加權(quán)成績(jī),并返回。代碼如圖9-1-8所示。Python程序設(shè)計(jì)步驟2:創(chuàng)建calcPython()來(lái)計(jì)算每位同學(xué)的總評(píng)成績(jī),3個(gè)參數(shù)傳入總評(píng)的各部分成績(jī),函數(shù)內(nèi)部計(jì)算加權(quán)成績(jī),并返回。代碼如圖9-1-8所示。圖9-1-8計(jì)算每位同學(xué)們的總評(píng)成績(jī)Python程序設(shè)計(jì)步驟3:創(chuàng)建函數(shù)sortPython()對(duì)全班成績(jī)進(jìn)行排序,傳入全班的姓名和加權(quán)成績(jī)的字典,我們使用sorted函數(shù)來(lái)進(jìn)行排序。需要注意的是,這里reverse=True,采用倒序,由高到低進(jìn)行排序。具體代碼如圖9-1-9所示。圖9-1-9對(duì)全班成績(jī)進(jìn)行排序Python程序設(shè)計(jì)步驟4:創(chuàng)建PrintPythonScore()函數(shù)來(lái)實(shí)現(xiàn)輸出成績(jī),使用enumerate()函數(shù)遍歷姓名分?jǐn)?shù)字典,最后輸出排名、姓名和成績(jī)。代碼如圖9-1-10所示。圖9-1-10輸出前三名同學(xué)的姓名和成績(jī)Python程序設(shè)計(jì)(1)完整源代碼源代碼主要分為兩個(gè)部分,第一部分,主要包括該任務(wù)主要的4個(gè)功能函數(shù);第二部分是在man()函數(shù)中,對(duì)4個(gè)功能函數(shù)的調(diào)用。具體的完整代碼如圖9-1-11所示。圖9-1-10輸出前三名同學(xué)的姓名和成績(jī)definPutNameScore():'''輸入學(xué)生的姓名和成績(jī):return:返回姓名和Python的各部分成績(jī)name=inPut('輸入姓名:');Print('輸入Python考勤成績(jī),期中考試成績(jī),期末考試成績(jī)')(score1),score2,scre3=inPut('形如80,70,90:').sPlit(',')returnname,float(score1),float(score2),float(scre3)defcalcPython(score1,score2,scre3):'''根據(jù)各部分成績(jī)占比,計(jì)算加權(quán)成績(jī):Paramscore1:第一部分成績(jī),平時(shí)出勤成績(jī):Paramscore2:期中考試成績(jī):Paramscre3:期末考試成績(jī):return:返回Python的期末總評(píng)成績(jī)'''score=score1*0.3+score2*0.3+scre3*0.4returnscorePython程序設(shè)計(jì)圖9-1-10輸出前三名同學(xué)的姓名和成績(jī)defsortPython(nameScores):'''對(duì)班級(jí)同學(xué)的成績(jī)進(jìn)行排序:Pa'''nameScores=sorted(nameScores.items(),key=lambdax:x[1],reverse=True)returnnameScoresdefPrintPythonScore(nameScores):'''輸出全班的成績(jī):ParamnameScoresList::return:'''ameScores)ifisinstance(nameScores,dict):nameScoresList=list(nameScores.items())fori,iteminenumerate(nameScoresList):name=item[0]score=item[1]Print('排名:',i,'name:',name,'成績(jī):',score)if__name__=='__main__':nameScores={}#循環(huán)輸入班級(jí)同學(xué)們的成績(jī),并計(jì)算每一個(gè)同學(xué)的總評(píng)成績(jī)while1:#輸入姓名和各部分成績(jī)name,score1,score2,scre3=inPutNameScore();Python程序設(shè)計(jì)圖9-1-10輸出前三名同學(xué)的姓名和成績(jī)#計(jì)算總評(píng)成績(jī)PythonScore=calcPython(score1,score2,scre3)#同學(xué)們的Python成績(jī)放在一個(gè)字典中,方便后面的排序nameScores[name]=PythonScoreflag=inPut('是否繼續(xù)輸入,Yy/Nn?::')ifflag.uPPer()!='Y'andflag.uPPer()!='N':flag=inPut('重新輸入,Yy/Nn?::')ifflag.uPPer()=='N':break;else:Pass;#Print(nameScores)Print('*'*20,'排序之前')PrintPythonScore(nameScores)#全班總評(píng)成績(jī)進(jìn)行排序nameScores=sortPython(nameScores)163Print('*'*20,'排序之后')PrintPythonScore(nameScores)Python程序設(shè)計(jì)(2)運(yùn)行結(jié)果對(duì)代碼進(jìn)行調(diào)試,和少許修改后,輸入了4各同學(xué)的Python的各部分成績(jī),我們可以看到經(jīng)過(guò)加權(quán)處理后,算

溫馨提示

  • 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)論