Python动态录入学生成绩,并求所有成绩的平均分、最高分、最低分。每输入一个成绩后询问是否继续输入下一个成绩,回答yes就继续输入下一个成绩,回答no则停止输入成绩。停止录入成绩之后,按顺序输出以上全部成绩,并计算平均成绩、最高、最低成绩。
时间: 2023-12-03 18:42:57 浏览: 134
可以使用如下代码实现:
```python
scores = []
while True:
score = input("请输入学生成绩:")
scores.append(float(score))
choice = input("是否继续输入下一个成绩?(yes/no)")
if choice.lower() == "no":
break
avg_score = sum(scores) / len(scores)
max_score = max(scores)
min_score = min(scores)
print("所有成绩如下:")
for score in scores:
print(score)
print("平均分为:", avg_score)
print("最高分为:", max_score)
print("最低分为:", min_score)
```
运行结果如下所示:
```
请输入学生成绩:90
是否继续输入下一个成绩?(yes/no)yes
请输入学生成绩:80
是否继续输入下一个成绩?(yes/no)yes
请输入学生成绩:85
是否继续输入下一个成绩?(yes/no)no
所有成绩如下:
90.0
80.0
85.0
平均分为: 85.0
最高分为: 90.0
最低分为: 80.0
```
相关问题
设计一个对学生成绩进行分析的程序,实现一个班级的学生成绩进行排序、求平均分, 求最高分、最低分以及分数段的人数进行统计等功能。并实现输出分析结果。要求菜单具有录入学生成绩信息、显示学生成绩信息、查询学生成绩信息、
好的,为了实现这个程序,我们可以将上面的班级类的功能进一步封装,然后设计一个交互式的菜单,让用户可以选择不同的功能。以下是一个可能的实现:
```python
class Student:
def __init__(self, name, score):
self.name = name
self.score = score
class Class:
def __init__(self):
self.students = []
def add_student(self, student):
self.students.append(student)
def sort_by_score(self):
self.students.sort(key=lambda x: x.score, reverse=True)
def get_average_score(self):
total_score = sum([student.score for student in self.students])
return total_score / len(self.students)
def get_highest_score(self):
return max([student.score for student in self.students])
def get_lowest_score(self):
return min([student.score for student in self.students])
def get_score_distribution(self):
distribution = {
"0-59": 0,
"60-69": 0,
"70-79": 0,
"80-89": 0,
"90-100": 0
}
for student in self.students:
if student.score < 60:
distribution["0-59"] += 1
elif student.score < 70:
distribution["60-69"] += 1
elif student.score < 80:
distribution["70-79"] += 1
elif student.score < 90:
distribution["80-89"] += 1
else:
distribution["90-100"] += 1
return distribution
def print_menu():
print("-" * 30)
print("1. 录入学生成绩信息")
print("2. 显示学生成绩信息")
print("3. 查询学生成绩信息")
print("4. 退出程序")
print("-" * 30)
def input_student():
while True:
name = input("请输入学生姓名(输入q退出):")
if name == "q":
break
try:
score = int(input("请输入学生分数:"))
except ValueError:
print("分数必须是整数,请重新输入!")
continue
s = Student(name, score)
c.add_student(s)
def show_student():
if not c.students:
print("还没有录入学生成绩信息!")
return
c.sort_by_score()
print("学生排名如下:")
for i, student in enumerate(c.students):
print(f"{i+1}. {student.name}\t{student.score}")
print("学生成绩统计信息如下:")
print(f"平均分:{c.get_average_score():.2f}")
print(f"最高分:{c.get_highest_score()}")
print(f"最低分:{c.get_lowest_score()}")
distribution = c.get_score_distribution()
print("分数段人数统计如下:")
for k, v in distribution.items():
print(f"{k}: {v}")
def search_student():
if not c.students:
print("还没有录入学生成绩信息!")
return
name = input("请输入要查询的学生姓名:")
for student in c.students:
if student.name == name:
print(f"{name}的分数是:{student.score}")
break
else:
print(f"没有找到名为{name}的学生!")
if __name__ == "__main__":
c = Class()
while True:
print_menu()
choice = input("请输入菜单编号:")
if choice == "1":
input_student()
elif choice == "2":
show_student()
elif choice == "3":
search_student()
elif choice == "4":
print("谢谢使用!")
break
else:
print("无效的菜单编号,请重新输入!")
```
在这个程序中,我们首先定义了一个菜单,让用户可以选择录入学生成绩信息、显示学生成绩信息、查询学生成绩信息或退出程序。在录入学生成绩信息时,我们使用了一个循环,让用户可以连续输入多个学生的信息,输入"q"后退出循环。在显示学生成绩信息时,我们首先调用班级对象的sort_by_score方法,将学生按照分数从高到低排序,然后输出每个学生的排名、姓名和分数,以及一些统计信息,如平均分、最高分、最低分和分数段人数统计。在查询学生成绩信息时,我们让用户输入要查询的学生姓名,然后遍历学生列表,找到对应学生的分数并输出。
您可以根据需要对这个程序进行修改和扩展。
python实现在某次考试后录入某班学生的成绩不同班级学生人数不固定最后统计该班平均分最高分和最低分
好的,我来为您解答。您可以按照以下步骤实现:
1. 定义一个空的字典,用于存放每个班级的成绩信息。键为班级名称,值为该班级的成绩列表。
2. 通过循环录入每个学生的成绩,根据学生所在的班级将其成绩添加到相应的班级成绩列表中。
3. 循环遍历每个班级的成绩列表,计算平均分、最高分和最低分。
4. 输出每个班级的平均分、最高分和最低分,以及该班级的名称。
下面是具体的代码实现:
```python
# 定义一个空字典,用于存放每个班级的成绩信息
scores = {}
# 循环录入每个学生的成绩
while True:
name = input("请输入学生姓名(输入 q 结束):")
if name == 'q':
break
score = int(input("请输入学生成绩:"))
cls = input("请输入学生班级:")
# 如果该班级还不存在,则添加一个空列表
if cls not in scores:
scores[cls] = []
# 将学生的成绩添加到相应的班级成绩列表中
scores[cls].append(score)
# 循环遍历每个班级的成绩列表,计算平均分、最高分和最低分
for cls, cls_scores in scores.items():
avg_score = sum(cls_scores) / len(cls_scores)
max_score = max(cls_scores)
min_score = min(cls_scores)
# 输出每个班级的平均分、最高分和最低分,以及该班级的名称
print(f"班级:{cls},平均分:{avg_score:.2f},最高分:{max_score},最低分:{min_score}")
```
希望能够对您有所帮助!
阅读全文