创建一个score类

本次上机课的任务是创建一个score类,并利用构造函数和析构函数、调用函数等方法,完成对成绩的显示、计算和排序。这次的编程对我来说难度还是比较大的,没有编程的基础对一些程序的逻辑结构不是很理解,所以在同学的指导下还是完成了编程。在编程的过程中,对于简单的调用函数,类的创建等等没有很大问题,但其中的函数体不是很懂,在这次作业中,出现了函数名与类名相同的错误,还有忘记了变量的声明,以及对一些字符的数据类型定义错误等等,但都被及时更改。这次上机对我的最大直观感受就是c++相对于之前的C语言感觉在实现一个东西上更加“繁琐”,但又感觉更加“简洁”,在函数调用和人机交互上会感觉很舒服。

创建一个名为`Score`的来满足上述需求,我们可以设计如下的结构: ```python class Score: def __init__(self, num_students=2, max_students=100): self.students = [Student()] * min(num_students, max_students) def input_scores(self): for i in range(len(self.students)): print(f"请输入第{i + 1}名同学的成绩 (格式:A B C):") scores_str = input().split() self.students[i].set_scores(float(scores_str[0]), float(scores_str[1]), float(scores_str[2])) def display_student_info(self): for student in self.students: print(f"学生{student.id}:") print(f"科目A: {student.score_a}, 科目B: {student.score_b}, 科目C: {student.score_c}") avg_score = sum(student.scores) / len(student.scores) print(f"平均分: {avg_score}") def display_subject_average(self): subject_totals = {'A': 0., 'B': 0., 'C': 0.} for student in self.students: for subject, score in zip('ABC', student.scores): subject_totals[subject] += score for subject, total in subject_totals.items(): avg = total / len(self.students) print(f"{subject}科目平均分: {avg}") def sort_and_display_scores(self, by='total'): if by == 'total': sorted_students = sorted(self.students, key=lambda s: s.total_score, reverse=True) elif by == 'average': sorted_students = sorted(self.students, key=lambda s: s.avg_score, reverse=True) else: raise ValueError("排序依据只能是'total'或'average'") print("\n按照{}排序后的成绩:".format(by)) for i, student in enumerate(sorted_students): print(f"第{i + 1}名: {student.name}, 总分: {student.total_score}, 平均分: {student.avg_score}") class Student: def __init__(self, id=1): self.name = f"学生{id}" self.scores = ['A', 'B', 'C'] self.score_a, self.score_b, self.score_c = 0., 0., 0. self.total_score = 0. self.avg_score = 0. def set_scores(self, a, b, c): self.score_a, self.score_b, self.score_c = a, b, c self.total_score = a + b + c self.avg_score = self.total_score / 3 # 示例 score_system = Score() score_system.input_scores() score_system.display_student_info() score_system.display_subject_average() score_system.sort_and_display_scores() ``` 这个`Score`包含了所需的功能,包括输入学生成绩、显示信息、计算平均分、显示科目平均分以及按总分或平均分排序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值