题目描述
一个 班有若干名学生, 每名学生已修读了若干门课程并有考试成绩,把学生姓名(假设没有重名学生)和修读的课程名及考试成绩等信息保存起来 ,编写程序实现如下功能(可针对每一项编写一个程序)
(1)根据输人的姓名 ,输出该学生修读的所有课程的课程名及成绩。
(2)根据输人的课程名 ,输出修读了该课程的学生姓名及该门课程
(3)输出所有有不及格成绩的学生姓名及不及格的门数。
(4)输出所有学生已修读课程的课程名, 重复的只输出一次。
(5)按平均成绩的高低输出学生姓名及平均成绩。数据不少于10个
案例代码
以下是根据题目要求编写的Python程序:
class Student:
def __init__(self, name):
self.name = name
self.courses = []
def add_course(self, course_name, score):
self.courses.append((course_name, score))
def get_courses(self):
return self.courses
def get_average_score(self):
total_score = 0
for _, score in self.courses:
total_score += score
return total_score / len(self.courses)
students = []
# 添加学生信息
def add_student(name, courses):
student = Student(name)
for course_name, score in courses:
student.add_course(course_name, score)
students.append(student)
# 根据姓名输出课程名及成绩
def output_courses_by_name(name):
for student in students:
if student.name == name:
for course_name, score in student.get_courses():
print(f"课程名:{course_name},成绩:{score}")
return
print("未找到该学生!")
# 根据课程名输出学生姓名及成绩
def output_students_by_course(course_name):
students_list = []
for student in students:
for course, score in student.get_courses():
if course == course_name:
students_list.append(student.name)
break
if len(students_list) > 0:
print(f"修读了该课程的学生姓名及该门课程:{','.join(students_list)}")
else:
print("没有学生修读该课程!")
# 输出不及格成绩的学生姓名及门数
def output_failed_students():
for student in students:
failed_count = 0
for _, score in student.get_courses():
if score < 60:
failed_count += 1
if failed_count > 0:
print(f"学生姓名:{student.name},不及格的门数:{failed_count}")
# 输出所有已修读课程的课程名
def output_course_names():
course_names = set()
for student in students:
for course, _ in student.get_courses():
course_names.add(course)
print("所有已修读课程的课程名:")
for course_name in course_names:
print(course_name)
# 按平均成绩高低输出学生姓名及平均成绩
def output_students_by_average_score():
sorted_students = sorted(students, key=lambda student: student.get_average_score(), reverse=True)
print("按平均成绩高低输出学生姓名及平均成绩:")
for student in sorted_students:
print(f"学生姓名:{student.name},平均成绩:{student.get_average_score()}")
# 添加学生信息
add_student("张三", [("数学", 90), ("语文", 85), ("英语", 92)])
add_student("李四", [("数学", 88), ("语文", 76), ("英语", 80)])
add_student("王五", [("数学", 65), ("语文", 80), ("英语", 70)])
add_student("赵六", [("数学", 78), ("语文", 92), ("英语", 85)])
add_student("钱七", [("数学", 82), ("语文", 75), ("英语", 88)])
add_student("孙八", [("数学", 70), ("语文", 60), ("英语", 65)])
add_student("周九", [("数学", 95), ("语文", 88), ("英语", 90)])
add_student("吴十", [("数学", 72), ("语文", 78), ("英语", 82)])
add_student("郑十一", [("数学", 85), ("语文", 90), ("英语", 76)])
add_student("王十二", [("数学", 88), ("语文", 95), ("英语", 92)])
# 根据姓名输出课程名及成绩
output_courses_by_name("张三")
# 根据课程名输出学生姓名及成绩
output_students_by_course("数学")
# 输出不及格成绩的学生姓名及门数
output_failed_students()
# 输出所有已修读课程的课程名
output_course_names()
# 按平均成绩高低输出学生姓名及平均成绩
output_students_by_average_score()
请根据实际情况自行修改学生信息和函数调用部分的数据。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END