用python编写文件c:\python\grades.txt中存储某班学生的学号、姓名和3门课程成绩,每位学生的信息放在一行,不同字段之间用空格隔开,形式如下: 学号 姓名 计算机 英语 体育 设计程序,根据按键实现如下功能: 按键“1”——按上述格式向文件添加新的学生成绩 按键“2”——根据学号查找学生的姓名和各科成绩,如果查不到,显示“该学生不存在” 按键“3”——根据课程名称显示某门课程的全班平均成绩 要求: (1)定义函数tj()实现添加成绩功能; (2)定义函数cx()实现查询成绩功能; (3)定义函数Av_course()计算某门课程的平均成绩
时间: 2023-12-03 12:44:15 浏览: 34
下面是实现这个功能的代码,具体操作可以参考注释:
```python
# 添加成绩
def tj():
with open('c:\\python\\grades.txt', 'a') as f:
# 输入学生信息
student_info = input("请输入学生信息(学号 姓名 计算机 英语 体育 设计程序):")
# 写入文件
f.write(student_info + '\n')
print("添加成功!")
# 查询成绩
def cx():
# 输入要查询的学生学号
student_id = input("请输入要查询的学生学号:")
with open('c:\\python\\grades.txt', 'r') as f:
# 逐行读取文件内容
for line in f.readlines():
# 将每行内容按空格分隔成列表
info = line.strip().split()
# 如果学号匹配,则输出学生信息
if info[0] == student_id:
print("学号:{},姓名:{},计算机:{},英语:{},体育:{},设计程序:{}".format(info[0], info[1], info[2], info[3], info[4], info[5]))
return
# 如果没有找到学生信息,则输出“该学生不存在”
print("该学生不存在!")
# 计算某门课程的平均成绩
def Av_course(course_name):
with open('c:\\python\\grades.txt', 'r') as f:
# 初始化总成绩和学生人数
total_score = 0
student_count = 0
# 逐行读取文件内容
for line in f.readlines():
# 将每行内容按空格分隔成列表
info = line.strip().split()
# 如果该门课程成绩存在,则累加总成绩和学生人数
if course_name in info:
total_score += float(info[info.index(course_name)+1])
student_count += 1
# 计算平均成绩
if student_count > 0:
average_score = total_score / student_count
print("{}的平均成绩为:{}".format(course_name, average_score))
else:
print("没有学生选修{}!".format(course_name))
# 主函数
def main():
while True:
# 输出菜单
print("请选择操作:")
print("1. 添加成绩")
print("2. 查询成绩")
print("3. 计算某门课程的平均成绩")
print("4. 退出")
# 输入选项
choice = input("请选择(1/2/3/4):")
# 根据选项执行相应的函数
if choice == '1':
tj()
elif choice == '2':
cx()
elif choice == '3':
course_name = input("请输入要计算平均成绩的课程名称:")
Av_course(course_name)
elif choice == '4':
break
else:
print("输入错误,请重新选择!")
if __name__ == '__main__':
main()
```
注意:在 Windows 系统中,文件路径中的反斜杠 `\` 需要使用两个反斜杠 `\\` 表示。或者也可以使用正斜杠 `/` 代替反斜杠。