从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,编写函数分别实现下列功能: (1)统计不及格人数并打印不及格学生名单; (2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单; (3)统计各分数段的学生人数及所占的百分比。
时间: 2023-06-14 08:04:50 浏览: 244
c语言课程设计学生成绩管理系统
下面是一个实现上述功能的 Python 代码:
```python
def grade_analysis():
grades = []
while True:
grade = int(input("请输入学生成绩(负数表示输入结束):"))
if grade < 0:
break
grades.append(grade)
# 统计不及格人数并打印不及格学生名单
fail_count = 0
fail_students = []
for i in range(len(grades)):
if grades[i] < 60:
fail_count += 1
fail_students.append("学生" + str(i+1))
print("不及格人数为:", fail_count)
print("不及格学生名单为:", fail_students)
# 统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单
avg_score = sum(grades) / len(grades)
above_avg_count = 0
above_avg_students = []
for i in range(len(grades)):
if grades[i] >= avg_score:
above_avg_count += 1
above_avg_students.append("学生" + str(i+1))
print("成绩在全班平均分及平均分之上的学生人数为:", above_avg_count)
print("成绩在全班平均分及平均分之上的学生名单为:", above_avg_students)
# 统计各分数段的学生人数及所占的百分比
score_counts = [0] * 11
for score in grades:
score_counts[score // 10] += 1
for i in range(11):
low_score = i * 10
high_score = low_score + 9
if i == 10:
high_score = 100
percentage = score_counts[i] / len(grades) * 100
print("{0}~{1}分数段的学生人数为:{2},所占百分比为:{3:.2f}%".format(low_score, high_score, score_counts[i], percentage))
grade_analysis()
```
这个函数首先让用户输入学生的成绩,当输入负数时表示输入结束。然后,它分别实现了上述三个功能:
- 统计不及格人数并打印不及格学生名单:遍历成绩列表,统计不及格人数和不及格学生名单。
- 统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单:计算全班平均分,遍历成绩列表,统计成绩在平均分及平均分之上的学生人数和名单。
- 统计各分数段的学生人数及所占的百分比:创建一个长度为 11 的列表,用来存储各分数段的学生人数。遍历成绩列表,统计各分数段的学生人数。然后,再次遍历这个列表,计算每个分数段的学生所占的百分比,并打印出来。
阅读全文