設(shè)計網(wǎng)站如何推廣方案百度怎么做關(guān)鍵詞優(yōu)化
文件操作:成績統(tǒng)計
有一個文件grades.txt,文件內(nèi)容是每行一個學(xué)生的成績(格式:姓名,成績)。要求:
讀取文件內(nèi)容,統(tǒng)計所有學(xué)生的平均成績;
將不及格(<60分)的學(xué)生寫入另一個文件failures.txt。
為了實現(xiàn)成績統(tǒng)計和不及格學(xué)生記錄,我們可以通過以下步驟進(jìn)行操作:
讀取 grades.txt 文件:讀取文件中每一行,提取學(xué)生姓名和成績。
統(tǒng)計平均成績:計算所有學(xué)生的平均成績。
將不及格學(xué)生寫入 failures.txt:篩選出成績低于 60 的學(xué)生,并將其姓名和成績寫入另一個文件。
代碼實現(xiàn):
def read_grades(file_name):"""讀取文件內(nèi)容,返回一個包含所有學(xué)生成績的列表,格式為 (姓名, 成績)"""students = []with open(file_name, 'r') as file:for line in file:# 去除每行的換行符,并分割姓名和成績name, grade = line.strip().split(',')students.append((name, float(grade))) # 將成績轉(zhuǎn)換為浮動類型return studentsdef calculate_average(grades):"""計算平均成績"""if not grades:return 0return sum(grades) / len(grades)def write_failures(failures, file_name):"""將不及格的學(xué)生記錄寫入文件"""with open(file_name, 'w') as file:for name, grade in failures:file.write(f"{name},{grade}\n")def main():# 讀取成績數(shù)據(jù)students = read_grades("grades.txt")# 提取所有學(xué)生的成績列表grades = [grade for name, grade in students]# 計算所有學(xué)生的平均成績average_grade = calculate_average(grades)print(f"所有學(xué)生的平均成績是: {average_grade:.2f}")# 篩選出不及格的學(xué)生failures = [(name, grade) for name, grade in students if grade < 60]# 將不及格的學(xué)生寫入 failures.txtwrite_failures(failures, "failures.txt")if failures:print("不及格的學(xué)生已經(jīng)寫入 'failures.txt' 文件。")else:print("沒有不及格的學(xué)生。")if __name__ == "__main__":main()
功能說明:
read_grades(file_name):
讀取給定文件名的內(nèi)容,將每一行的學(xué)生姓名和成績存儲到一個元組 (姓名, 成績) 中,并返回一個包含所有學(xué)生成績的列表。
使用 strip() 方法去掉行尾的換行符,并用 split(‘,’) 方法按逗號分割每一行的數(shù)據(jù)。
calculate_average(grades):
計算學(xué)生成績的平均值。通過 sum(grades) 計算成績總和,并用學(xué)生人數(shù) len(grades) 計算平均值。
write_failures(failures, file_name):
將不及格的學(xué)生記錄(姓名和成績)寫入指定的文件(failures.txt)。
main():
主函數(shù)負(fù)責(zé)調(diào)用以上方法:
讀取文件 grades.txt 中的成績。
計算所有學(xué)生的平均成績并輸出。
篩選出成績低于 60 分的學(xué)生并將其信息寫入 failures.txt 文件。
如果有不及格學(xué)生,提示用戶不及格的學(xué)生已寫入文件。