2025年全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python項(xiàng)目實(shí)戰(zhàn)沖刺試卷_第1頁(yè)
2025年全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python項(xiàng)目實(shí)戰(zhàn)沖刺試卷_第2頁(yè)
2025年全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python項(xiàng)目實(shí)戰(zhàn)沖刺試卷_第3頁(yè)
2025年全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python項(xiàng)目實(shí)戰(zhàn)沖刺試卷_第4頁(yè)
2025年全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python項(xiàng)目實(shí)戰(zhàn)沖刺試卷_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

2025年全國(guó)計(jì)算機(jī)等級(jí)考試二級(jí)Python項(xiàng)目實(shí)戰(zhàn)沖刺試卷考試時(shí)間:______分鐘總分:______分姓名:______第一部分:項(xiàng)目背景與需求假設(shè)你需要開(kāi)發(fā)一個(gè)簡(jiǎn)單的學(xué)生成績(jī)管理系統(tǒng)。該系統(tǒng)需要能夠加載學(xué)生數(shù)據(jù)、展示學(xué)生列表、添加學(xué)生信息、刪除學(xué)生信息以及計(jì)算并展示學(xué)生的平均成績(jī)。學(xué)生信息包括:學(xué)號(hào)(字符串)、姓名(字符串)、成績(jī)(浮點(diǎn)數(shù))。第二部分:代碼填空請(qǐng)根據(jù)以下項(xiàng)目需求,在指定的下劃線(xiàn)處填入適當(dāng)?shù)拇a,以完成學(xué)生成績(jī)管理系統(tǒng)的核心功能。1.數(shù)據(jù)加載與存儲(chǔ)首先,我們需要定義一個(gè)函數(shù)來(lái)加載學(xué)生數(shù)據(jù)。假設(shè)學(xué)生數(shù)據(jù)存儲(chǔ)在一個(gè)名為`students.txt`的文本文件中,每行包含一個(gè)學(xué)生的學(xué)號(hào)、姓名和成績(jī),三者之間用逗號(hào)分隔。請(qǐng)完善`load_students`函數(shù),使其從文件中讀取數(shù)據(jù),并將每個(gè)學(xué)生的信息存儲(chǔ)在一個(gè)字典列表中,其中字典的鍵為`'id'`,`'name'`,`'score'`。如果文件不存在或讀取出錯(cuò),函數(shù)應(yīng)返回一個(gè)空列表。```pythondefload_students(filename):students=[]try:withopen(filename,'r',encoding='utf-8')asf:forlineinf:_id,_name,_score=line.strip().split(',')_score=float(_score)students.append({'id':_id,'name':_name,'score':_score})except(FileNotFoundError,ValueError):passreturnstudents```2.顯示學(xué)生列表```pythondefdisplay_students(students):ifnotstudents:print("Nostudentsdataavailable.")returnforstudentinstudents:print(f"{student['id']},{student['name']},{student['score']}")```3.添加學(xué)生信息定義一個(gè)函數(shù)`add_student`,接受學(xué)生信息字典(包含`'id'`,`'name'`,`'score'`)作為參數(shù),并將其添加到學(xué)生列表中。如果學(xué)生列表尚未初始化(即為`None`),則應(yīng)先初始化為空列表。函數(shù)執(zhí)行完畢后,應(yīng)返回更新后的學(xué)生列表。```pythondefadd_student(students,student_info):ifstudentsisNone:students=[]students.append(student_info)returnstudents```4.刪除學(xué)生信息定義一個(gè)函數(shù)`delete_student`,接受一個(gè)學(xué)號(hào)`student_id`作為參數(shù)。函數(shù)應(yīng)在學(xué)生列表中查找學(xué)號(hào)匹配的學(xué)生,并將其刪除。如果找到并刪除了學(xué)生,函數(shù)返回`True`;如果未找到,返回`False`。學(xué)生列表不應(yīng)出現(xiàn)重復(fù)的學(xué)號(hào)。```pythondefdelete_student(students,student_id):fori,studentinenumerate(students):ifstudent['id']==student_id:delstudents[i]returnTruereturnFalse```5.計(jì)算平均成績(jī)定義一個(gè)函數(shù)`calculate_average_score`,接受學(xué)生列表作為參數(shù),計(jì)算所有學(xué)生的平均成績(jī),并返回該平均值。如果學(xué)生列表為空或不存在,函數(shù)應(yīng)返回`0.0`。```pythondefcalculate_average_score(students):ifnotstudents:return0.0total_score=sum(student['score']forstudentinstudents)returntotal_score/len(students)```第三部分:代碼完善下面提供了一個(gè)包含部分代碼的`main`函數(shù)框架,用于演示如何使用前面定義的函數(shù)。請(qǐng)完善`main`函數(shù)中的`#TODO:Yourcodehere`部分,以實(shí)現(xiàn)完整的程序流程:1.調(diào)用`load_students`函數(shù)加載`students.txt`文件中的數(shù)據(jù)。2.調(diào)用`display_students`函數(shù)顯示當(dāng)前學(xué)生列表。3.提示用戶(hù)輸入要添加的學(xué)生信息(學(xué)號(hào)、姓名、成績(jī)),然后調(diào)用`add_student`函數(shù)添加該學(xué)生,并再次調(diào)用`display_students`顯示更新后的列表。4.提示用戶(hù)輸入要?jiǎng)h除的學(xué)生學(xué)號(hào),然后調(diào)用`delete_student`函數(shù)嘗試刪除該學(xué)生,并根據(jù)返回值打印相應(yīng)的消息(如`"Studentdeletedsuccessfully."`或`"Studentnotfound."`)。之后再次調(diào)用`display_students`顯示更新后的列表。5.調(diào)用`calculate_average_score`函數(shù)計(jì)算平均成績(jī),并打印消息`"Averagescoreis:{average}"`,其中`{average}`是計(jì)算得到的平均成績(jī)。```pythondefmain():students=None#TODO:Yourcodehere#1.Loadstudentsdatastudents=load_students("students.txt")#2.Displaystudentsdisplay_students(students)#3.Addanewstudentprint("\nEnterdetailsforanewstudent(id,name,score):")new_id=input("EnterID:")new_name=input("EnterName:")try:new_score=float(input("EnterScore:"))students=add_student(students,{'id':new_id,'name':new_name,'score':new_score})print("\nUpdatedstudentlist:")display_students(students)exceptValueError:print("\nInvalidscoreinput.Studentnotadded.")#4.Deleteastudentprint("\nEntertheIDofthestudenttodelete:")del_id=input("EnterID:")ifdelete_student(students,del_id):print(f"\n'{del_id}'Studentdeletedsuccessfully.")else:print(f"\nStudentwithID'{del_id}'notfound.")print("\nUpdatedstudentlist:")display_students(students)#5.Calculateaveragescoreaverage=calculate_average_score(students)print(f"\nAveragescoreis:{average:.2f}")if__name__=="__main__":main()```第四部分:編程假設(shè)需要增加一個(gè)功能,允許用戶(hù)根據(jù)學(xué)生姓名查詢(xún)?cè)搶W(xué)生的信息(學(xué)號(hào)、姓名、成績(jī))。如果找到匹配的學(xué)生,打印該學(xué)生的所有信息;如果未找到,打印`"Studentnotfoundbyname."`。請(qǐng)定義一個(gè)名為`find_student_by_name`的函數(shù)來(lái)實(shí)現(xiàn)此功能,并將其調(diào)用邏輯添加到`main`函數(shù)中,在添加學(xué)生信息之后、刪除學(xué)生信息之前。```python#TODO:Definethefunctionfind_student_by_name#TODO:Addthecalltofind_student_by_nameinthemainfunctionappropriately```請(qǐng)實(shí)現(xiàn)上述函數(shù),并修改`main`函數(shù)以包含對(duì)它的調(diào)用。試卷答案第一部分:代碼填空1.數(shù)據(jù)加載與存儲(chǔ)```pythondefload_students(filename):students=[]try:withopen(filename,'r',encoding='utf-8')asf:forlineinf:_id,_name,_score=line.strip().split(',')_score=float(_score)students.append({'id':_id,'name':_name,'score':_score})except(FileNotFoundError,ValueError):passreturnstudents#解析:此函數(shù)需要從文件讀取學(xué)生數(shù)據(jù)。使用with語(yǔ)句確保文件正確打開(kāi)和關(guān)閉。逐行讀取,split(',')按逗號(hào)分割。將分割后的學(xué)號(hào)、姓名轉(zhuǎn)換為字符串,成績(jī)轉(zhuǎn)換為浮點(diǎn)數(shù),然后組成字典添加到列表。異常處理捕獲文件不存在或成績(jī)轉(zhuǎn)換錯(cuò)誤的異常,避免程序中斷。```2.顯示學(xué)生列表```pythondefdisplay_students(students):ifnotstudents:print("Nostudentsdataavailable.")returnforstudentinstudents:print(f"{student['id']},{student['name']},{student['score']}")#解析:檢查學(xué)生列表是否為空。如果為空,打印提示信息。如果不空,遍歷列表中的每個(gè)學(xué)生字典,按照學(xué)號(hào)、姓名、成績(jī)的順序打印,用逗號(hào)分隔。```3.添加學(xué)生信息```pythondefadd_student(students,student_info):ifstudentsisNone:students=[]students.append(student_info)returnstudents#解析:首先檢查學(xué)生列表是否已初始化(是否為None)。如果未初始化,則創(chuàng)建一個(gè)空列表。然后將新的學(xué)生信息字典添加到列表末尾,并返回更新后的列表。```4.刪除學(xué)生信息```pythondefdelete_student(students,student_id):fori,studentinenumerate(students):ifstudent['id']==student_id:delstudents[i]returnTruereturnFalse#解析:使用循環(huán)遍歷學(xué)生列表,通過(guò)enumerate獲取索引i和學(xué)生信息student。比較當(dāng)前學(xué)生的學(xué)號(hào)與學(xué)生id。如果匹配,使用del語(yǔ)句刪除索引為i的學(xué)生,并返回True表示刪除成功。如果循環(huán)結(jié)束仍未找到,返回False表示未找到。```5.計(jì)算平均成績(jī)```pythondefcalculate_average_score(students):ifnotstudents:return0.0total_score=sum(student['score']forstudentinstudents)returntotal_score/len(students)#解析:首先檢查學(xué)生列表是否為空。如果為空,返回0.0。如果不空,使用列表推導(dǎo)式生成所有學(xué)生的成績(jī)列表,然后使用sum()計(jì)算總分。最后用總分除以學(xué)生數(shù)量得到平均分。```第三部分:代碼完善```pythondefmain():students=None#1.Loadstudentsdatastudents=load_students("students.txt")#2.Displaystudentsdisplay_students(students)#3.Addanewstudentprint("\nEnterdetailsforanewstudent(id,name,score):")new_id=input("EnterID:")new_name=input("EnterName:")try:new_score=float(input("EnterScore:"))students=add_student(students,{'id':new_id,'name':new_name,'score':new_score})print("\nUpdatedstudentlist:")display_students(students)exceptValueError:print("\nInvalidscoreinput.Studentnotadded.")#4.Deleteastudentprint("\nEntertheIDofthestudenttodelete:")del_id=input("EnterID:")ifdelete_student(students,del_id):print(f"\n'{del_id}'Studentdeletedsuccessfully.")else:print(f"\nStudentwithID'{del_id}'notfound.")print("\nUpdatedstudentlist:")display_students(students)#5.Calculateaveragescoreaverage=calculate_average_score(students)print(f"\nAveragescoreis:{average:.2f}")if__name__=="__main__":main()#解析:按順序執(zhí)行:加載數(shù)據(jù)->顯示列表->添加學(xué)生(輸入處理異常)->刪除學(xué)生(判斷結(jié)果)->顯示列表->計(jì)算平均分并顯示。這是典型的系統(tǒng)操作流程。```第四部分:編程1.定義函數(shù)`find_student_by_name````pythondeffind_student_by_name(students,name):forstudentinstudents:ifstudent['name']==name:returnstudentreturnNone#解析:定義函數(shù)接收學(xué)生列表和要查找的姓名。遍歷列表,比較每個(gè)學(xué)生的姓名。如果找到匹配的姓名,返回該學(xué)生字典。如果遍歷完都沒(méi)找到,返回None。```2.修改`main`函數(shù)調(diào)用`find_student_by_name````pythondefmain():students=None#Loadstudentsdatastudents=load_students("students.txt")#Displaystudentsdisplay_students(students)#Addanewstudentprint("\nEnterdetailsforanewstudent(id,name,score):")new_id=input("EnterID:")new_name=input("EnterName:")try:new_score=float(input("EnterScore:"))students=add_student(students,{'id':new_id,'name':new_name,'score':new_score})print("\nUpdatedstudentlist:")display_students(students)exceptValueError:print("\nInvalidscoreinput.Studentnotadded.")#Findastudentbynameprint("\nEnterthenameofthestudenttofind:")search_name=input("EnterNa

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論