項目九 計算期末成績_第1頁
項目九 計算期末成績_第2頁
項目九 計算期末成績_第3頁
項目九 計算期末成績_第4頁
項目九 計算期末成績_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

Python程序設計項目九定義函數(shù)與調用——模塊化任務計算期末成績學校:東莞市電子科技學校

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

目錄/directorys01任務目標0101任務描述020203任務分析020205相關知識020202任務小結020206任務實施020204任務目標

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

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

Python程序設計相關知識

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

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

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

溫馨提示

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

評論

0/150

提交評論