根据学生姓名进行字典排序,手动输入学生信息,根据成绩进行由高到低排序,根据学号或姓名查找学生成绩。统计各分数段(≥90分、80-89分、70-79分、60-69分、60分以下)的学生人数及其所占比例,并打印统计的结果。
时间: 2024-03-22 16:40:49 浏览: 41
这是一个学生成绩管理系统的问题,需要实现以下功能:
1. 根据学生姓名进行字典排序,可以使用Python中的sorted函数,通过指定key参数为姓名进行排序。
2. 手动输入学生信息,可以使用input函数进行输入,将学生信息保存到字典中。
3. 根据成绩进行由高到低排序,可以使用sorted函数,通过指定key参数为成绩进行排序。
4. 根据学号或姓名查找学生成绩,可以通过输入学号或姓名,从保存学生信息的字典中查找对应的成绩信息。
5. 统计各分数段的学生人数及其所占比例,可以遍历保存学生信息的字典,统计每个分数段的人数,并计算所占比例。
以下是一个简单的实现示例:
```python
students = {}
def add_student():
name = input("请输入学生姓名:")
number = input("请输入学号:")
score = int(input("请输入成绩:"))
students[number] = {'name': name, 'score': score}
def search_student():
name_or_number = input("请输入学号或姓名:")
for number, info in students.items():
if number == name_or_number or info['name'] == name_or_number:
print(f"{info['name']}的成绩是{info['score']}")
return
print("未找到对应的学生信息")
def print_statistics():
score_count = {
'>=90': 0,
'80-89': 0,
'70-79': 0,
'60-69': 0,
'<60': 0,
}
total = len(students)
for info in students.values():
score = info['score']
if score >= 90:
score_count['>=90'] += 1
elif score >= 80:
score_count['80-89'] += 1
elif score >= 70:
score_count['70-79'] += 1
elif score >= 60:
score_count['60-69'] += 1
else:
score_count['<60'] += 1
for score_range, count in score_count.items():
percentage = count / total * 100
print(f"{score_range}分数段的学生人数是{count},占比{percentage:.2f}%")
while True:
print("请输入数字选择功能:")
print("1. 添加学生信息")
print("2. 查找学生成绩")
print("3. 统计分数段信息")
print("4. 退出")
choice = int(input())
if choice == 1:
add_student()
elif choice == 2:
search_student()
elif choice == 3:
print_statistics()
elif choice == 4:
break
else:
print("无效的选择,请重新输入")
```
这个示例中,我们使用字典来保存学生信息,每个学生使用学号作为键,包含姓名和成绩两个信息。在添加学生信息时,我们使用input函数获取用户输入,然后将学生信息保存到students字典中。在查找学生成绩时,我们遍历students字典,查找学号或姓名对应的学生信息。在统计分数段信息时,我们遍历students字典,统计每个分数段的人数,并计算所占比例。最后,我们使用一个循环来不断等待用户输入选择功能,直到用户选择退出为止。
阅读全文