本人刚学了字典部分的知识,然后遇到的这个代码编写需要结合字典和列表的知识,感觉没什么头绪(列表学到是学过),请问各位知道怎么做吗
# 输入5个学生的信息
scores = []
for _ in range(5):
student = {}
student["name"] = input("请输入学生姓名: ")
student["english"] = int(input("请输入英语成绩: "))
student["python"] = int(input("请输入Python成绩: "))
student["math"] = int(input("请输入数学成绩: "))
scores.append(student)
# 计算每位同学的平均成绩并添加到字典中
for student in scores:
avg_score = (student["english"] + student["python"] + student["math"]) / 3
student["avg"] = avg_score
# 按照平均成绩由高到低排序输出学生信息
sorted_scores = sorted(scores, key=lambda x: x["avg"], reverse=True)
for student in sorted_scores:
print("姓名:", student["name"])
print("英语成绩:", student["english"])
print("Python成绩:", student["python"])
print("数学成绩:", student["math"])
print("平均成绩:", student["avg"])
print()
不知道你这个问题是否已经解决, 如果还没有解决的话:**
可以用Python编写一个程序,通过字典和列表的知识,求一组学生成绩的平均值,并将学生按照平均分高低进行排序。具体步骤如下:
scores = {"小明": 90, "小红": 80, "小刚": 70}
score_list = [90, 80, 70]
sum()
对所有成绩进行求和,再使用 Python内置函数 len()
统计成绩的总人数,计算平均分,例如:total_score = sum(score_list) # 成绩总和 count = len(score_list) # 成绩总人数 average_score = total_score / count # 平均分
sorted()
和 lambda表达式实现,例如:sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True)
其中 scores.items()
将字典转化为列表,然后按照字典的值进行排序, key=lambda x: x[1]
表示按照列表中的第二个元素排序, reverse=True
表示按照降序排列。
print("平均分为:", average_score) print("按照平均分排序后的学生信息为:", sorted_scores)
完整代码如下:
scores = {"小明": 90, "小红": 80, "小刚": 70}
score_list = [] # 存储所有成绩的列表
for name, score in scores.items():
score_list.append(score)
total_score = sum(score_list) # 成绩总和
count = len(score_list) # 成绩总人数
average_score = total_score / count # 平均分
sorted_scores = sorted(scores.items(), key=lambda x: x[1], reverse=True) # 按照平均分排序后的学生信息
print("平均分为:", average_score)
print("按照平均分排序后的学生信息为:", sorted_scores)