从键盘输入某一门课程m个学生的成绩,然后统计出学生的最高分、最低分、低于平均分的人数。其中,0<m<50,成绩为百分制,用-1结束输入,并由程序自动剔除无效数据。
时间: 2024-02-12 14:04:50 浏览: 84
好的,这是一个关于成绩统计的问题,我可以帮您解决。以下是实现该功能的Python代码:
```python
scores = []
while True:
score = int(input("请输入学生成绩(输入-1结束):"))
if score == -1:
break
if score < 0 or score > 100:
print("输入无效,请重新输入!")
continue
scores.append(score)
n = len(scores)
if n == 0:
print("没有有效数据")
else:
max_score = max(scores)
min_score = min(scores)
avg_score = sum(scores) / n
below_avg = len([1 for score in scores if score < avg_score])
print("最高分:", max_score)
print("最低分:", min_score)
print("低于平均分的人数:", below_avg)
```
解释一下代码的实现过程:
首先创建一个空列表`scores`,然后使用`while`循环不断输入成绩,直到输入-1为止。如果输入的成绩不在0到100之间,则认为是无效数据,并提示用户重新输入。如果输入的成绩合法,则将其添加到`scores`列表中。
循环结束后,如果`scores`列表为空,则说明没有输入有效数据;否则,使用`max`、`min`和`sum`函数分别计算最高分、最低分和总分,然后根据学生人数计算平均分。最后使用列表推导式统计低于平均分的人数,并输出结果。
阅读全文