4、某班的3门成绩,请按照3门成绩的平均成绩为排序依据,进行降序,并输出平均成绩的前两名。其中记录成绩的字符串为:"张三 56 75 86;李四 75 85 90;王五 66 95 99;赵六 70 90 85",用python语言来表示
时间: 2024-11-15 19:24:43 浏览: 21
在Python中,我们可以首先解析字符串,将成绩存储到字典中,然后计算每个人的平均成绩并按降序排序。以下是完成这个任务的一个示例代码:
```python
# 定义学生的成绩数据
students_scores = "张三 56 75 86;李四 75 85 90;王五 66 95 99;赵六 70 90 85"
scores_list = students_scores.split(";") # 分割字符串
# 将每个学生的信息转换成字典
students_dict = {}
for entry in scores_list:
name, *grades = entry.strip().split() # 分割姓名和成绩
grades = [int(g) for g in grades] # 转换成绩为整数
students_dict[name] = sum(grades) / len(grades) # 计算平均分
# 按平均成绩降序排序
sorted_students = sorted(students_dict.items(), key=lambda x: x[1], reverse=True)
# 输出前两名的平均成绩及对应的学生
for i in range(2):
print(f"{i+1}. {sorted_students[i][0]}: {sorted_students[i][1]} 分")
相关问题
某班的3门成绩,请按照3门成绩的平均成绩为排序依据,进行降序,并输出 平均成绩的前两名。 其中记录成绩的字符串为:“张三 5675 86;李四 75 85 90;王五 6695 99;赵六 7090 85"用python语言
首先,我们需要将输入的字符串分割成学生姓名和他们的各科成绩,然后计算每个学生的总分和平均分,最后根据平均分进行降序排序并输出前两名。以下是Python代码实现:
```python
def process_scores(scores):
# 分割字符串,存储数据结构
students = scores.split(";")
records = []
for student in students:
name, *grades = student.strip().split(" ")
total_score = sum(int(grade) for grade in grades)
avg_score = total_score / len(grades)
records.append((name, avg_score))
# 按照平均分降序排序
sorted_records = sorted(records, key=lambda x: x[1], reverse=True)
return sorted_records[:2]
scores_str = "张三 5675 86;李四 75 85 90;王五 6695 99;赵六 7090 85"
top_two_students = process_scores(scores_str)
for i, (name, avg_score) in enumerate(top_two_students):
print(f"{i+1}. {name}: 平均成绩 {avg_score}")
#
4、某班的3门成绩,请按照3门成绩的平均成绩为排序依据,进行降序,并输出平均成绩的前两名 其中记录成绩的字符串为:"张三 5675 86;李四 75 85 90:王五 66 95 99:赵六 70 90 85"用简洁的python的语言
首先,我们需要将成绩字符串分割成学生姓名和分数列表,然后计算每个人的平均分,最后按降序排列并输出前两名学生的平均成绩。以下是Python代码实现:
```python
# 定义成绩字符串
scores_str = "张三 5675 86;李四 75 85 90:王五 66 95 99:赵六 70 90 85"
# 将字符串转换为字典列表
students_scores = [tuple(map(int, score.split())) for score in scores_str.split(";")]
# 计算每个学生的平均分
avg_scores = {name: sum(scores) / len(scores) for name, *scores in students_scores}
# 按平均分降序排序
sorted_scores = sorted(avg_scores.items(), key=lambda x: x[1], reverse=True)
# 输出前两名学生的姓名及平均成绩
for i, (name, avg) in enumerate(sorted_scores[:2]):
print(f"{i+1}. {name}: 平均成绩 {avg}")
#
阅读全文