某班期末考试科目为数学(MT)、英语(EN)和物理(PH),有超过30人参加考试。考试后需要计算每个学生的总分和平均分,按总分成绩由高到低排出成绩的名次表格,任意输入一个学号,还能查找该学生在班级中的排名和考试分数。通过输入学生的人数和每个学生的人数信息,进行计算。
时间: 2024-01-02 16:03:49 浏览: 229
中文翻译英文模型,opus-mt-en-zh
好的,你的问题是关于班级考试成绩管理的。我可以为你提供一些思路和代码实现,帮助你完成这个任务。
首先,我们需要定义一个学生类,包含以下成员变量:
- 学号
- 姓名
- 数学成绩
- 英语成绩
- 物理成绩
- 总分
- 平均分
- 排名
然后,我们需要定义一些函数,用于实现不同的功能:
1. 输入学生信息
这个函数可以通过循环依次输入每个学生的信息,并将学生对象存储在一个列表中。
```python
def input_students(num):
students = []
for i in range(num):
print("请输入学生%d的信息:" % (i+1))
id = input("学号:")
name = input("姓名:")
mt = float(input("数学成绩:"))
en = float(input("英语成绩:"))
ph = float(input("物理成绩:"))
student = Student(id, name, mt, en, ph)
students.append(student)
return students
```
2. 计算总分和平均分
这个函数可以遍历学生列表,计算每个学生的总分和平均分,并将结果存储在学生对象中。
```python
def calc_score(students):
for student in students:
student.total_score = student.mt_score + student.en_score + student.ph_score
student.avg_score = student.total_score / 3
```
3. 排名
这个函数可以根据学生的总分排序,并为每个学生设置排名。
```python
def sort_students(students):
students.sort(key=lambda x: x.total_score, reverse=True)
for i, student in enumerate(students):
student.rank = i + 1
```
4. 查找学生信息
这个函数可以根据学号查找学生,并返回该学生的排名和考试分数。
```python
def search_student(students, id):
for student in students:
if student.id == id:
return student.rank, student.total_score
return None, None
```
最后,我们可以编写一个主函数,用于调用上述函数,实现完整的班级考试成绩管理系统。
```python
class Student:
def __init__(self, id, name, mt_score, en_score, ph_score):
self.id = id
self.name = name
self.mt_score = mt_score
self.en_score = en_score
self.ph_score = ph_score
self.total_score = 0
self.avg_score = 0
self.rank = 0
def input_students(num):
students = []
for i in range(num):
print("请输入学生%d的信息:" % (i+1))
id = input("学号:")
name = input("姓名:")
mt = float(input("数学成绩:"))
en = float(input("英语成绩:"))
ph = float(input("物理成绩:"))
student = Student(id, name, mt, en, ph)
students.append(student)
return students
def calc_score(students):
for student in students:
student.total_score = student.mt_score + student.en_score + student.ph_score
student.avg_score = student.total_score / 3
def sort_students(students):
students.sort(key=lambda x: x.total_score, reverse=True)
for i, student in enumerate(students):
student.rank = i + 1
def search_student(students, id):
for student in students:
if student.id == id:
return student.rank, student.total_score
return None, None
def main():
num = int(input("请输入学生人数:"))
students = input_students(num)
calc_score(students)
sort_students(students)
while True:
print("请输入要查询的学生学号(输入q退出):")
id = input()
if id == "q":
break
rank, score = search_student(students, id)
if rank is None:
print("查无此人!")
else:
print("学号:%s,排名:%d,总分:%.2f" % (id, rank, score))
if __name__ == "__main__":
main()
```
希望这些代码能够帮助你完成班级考试成绩管理的任务。如果你还有其他问题,可以随时问我。
阅读全文