输入一个班的成绩到一维数组中,求这个班的最高分、平均分,并统计各分数段的人数。其中分数段有:优秀(90~100)、良好(80~89)、中等(70~79)、及格(60~69)、不及格(<60分)。 要求:程序中要有方法的定义和使用。
时间: 2023-05-17 16:07:49 浏览: 309
好的,这是一个比较典型的数组操作问题,我可以帮您解决。
首先,我们需要定义一个方法来输入班级成绩到一维数组中:
```python
def input_scores():
scores = []
while True:
score = input("请输入学生的成绩(输入-1结束):")
if score == "-1":
break
scores.append(int(score))
return scores
```
这个方法会不断地让用户输入成绩,直到输入-1为止,然后将成绩存储到一个列表中,并返回这个列表。
接下来,我们可以定义一个方法来计算最高分和平均分:
```python
def calculate_scores(scores):
max_score = max(scores)
avg_score = sum(scores) / len(scores)
return max_score, avg_score
```
这个方法会接受一个成绩列表作为参数,然后使用内置的max函数来计算最高分,使用sum函数和len函数来计算平均分,并将这两个值作为元组返回。
最后,我们可以定义一个方法来统计各分数段的人数:
```python
def count_scores(scores):
excellent = 0
good = 0
medium = 0
pass_score = 0
fail = 0
for score in scores:
if score >= 90:
excellent += 1
elif score >= 80:
good += 1
elif score >= 70:
medium += 1
elif score >= 60:
pass_score += 1
else:
fail += 1
return excellent, good, medium, pass_score, fail
```
这个方法会接受一个成绩列表作为参数,然后使用一个for循环来遍历这个列表,根据成绩的范围来统计各分数段的人数,并将这些值作为元组返回。
最后,我们可以将这些方法组合起来,来完成整个程序:
```python
def main():
scores = input_scores()
max_score, avg_score = calculate_scores(scores)
excellent, good, medium, pass_score, fail = count_scores(scores)
print("最高分:", max_score)
print("平均分:", avg_score)
print("优秀:", excellent)
print("良好:", good)
print("中等:", medium)
print("及格:", pass_score)
print("不及格:", fail)
if __name__ == "__main__":
main()
```
这个程序会先调用input_scores方法来输入成绩,然后调用calculate_scores方法来计算最高分和平均分,最后调用count_scores方法来统计各分数段的人数,并将这些结果输出到屏幕上。
阅读全文