从键盘输入一个班(全班最多不超过30人)学生某课程的成绩,当输入成绩为负值或超出规定人数时,输入结束,分别实现下列功能: (1)输出各分数段的学生人数及所占的百分比,并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生名单;
时间: 2024-12-18 13:21:16 浏览: 22
为了实现这两个功能,我们可以采用以下步骤:
1. 首先,创建一个动态数组或列表存储学生的成绩,同时记录总人数和不及格的学生数。
```python
scores = []
total_students = 0
failed_students = set()
while True:
score = int(input("请输入学生成绩(输入负数结束):"))
if score < 0 or total_students >= 30:
break
scores.append(score)
total_students += 1
if score < 60: # 这里假设60分及以上为及格
failed_students.add(str(score))
```
2. 接下来,计算并输出分数段的学生人数、占比以及不及格学生名单。
```python
if total_students > 0:
grade_distribution = {
'及格': sum(1 for s in scores if s >= 60),
'不及格': len(failed_students),
'百分比': (len(scores) - len(failed_students)) / total_students * 100
}
print("分数段分布:")
for category, count in grade_distribution.items():
print(f"{category}: {count}人,{grade_distribution['百分比']}%")
print("\n不及格学生名单:")
for student_score in failed_students:
print(student_score)
else:
print("班级为空,无法提供数据.")
```
3. 计算全班平均分,以及高于平均分的学生名单。
```python
if total_students > 0:
average_score = sum(scores) / total_students
above_average_students = [s for s in scores if s > average_score]
print(f"全班平均分:{average_score}")
print("高于平均分的学生名单:")
for student_score in above_average_students:
print(student_score)
else:
print("班级为空,无法提供数据.")
```
阅读全文