用python写程序:成绩排序:给出一些学生的姓名和成绩,将学生按成绩从高到低排序。成绩相同的学生,按照姓名从小到大排序。(列表)
时间: 2023-05-20 09:00:45 浏览: 1270
以下是用 Python 编写的程序,可以实现按照成绩从高到低排序,成绩相同的学生按照姓名从小到大排序:
```python
students = [("Alice", 85), ("Bob", 90), ("Charlie", 80), ("David", 90), ("Eve", 85)]
sorted_students = sorted(students, key=lambda x: (-x[1], x[0]))
for student in sorted_students:
print(student[0], student[1])
```
输出结果为:
```
Bob 90
David 90
Alice 85
Eve 85
Charlie 80
```
其中,`students` 是一个包含学生姓名和成绩的列表,`sorted` 函数使用了一个 lambda 函数作为排序的关键字,`-x[1]` 表示按照成绩从高到低排序,`x[0]` 表示按照姓名从小到大排序。最后,使用一个 for 循环遍历排序后的学生列表,并输出每个学生的姓名和成绩。
相关问题
Python 数据分析与机器学习阶段测试题 已知两个 Excel 表格:学生基本信息表、期末考试成绩表分别用于存放学生 的基本信息(包括姓名、性别、班级)和学生的期末成绩(包括姓名、语文、数 学、英语、总分),部分数据如下图所示(完整数据见学生基本信息表.xls、期末 考试成绩表.xls),完成以下操作。编写程序读取两张表中的数据,并将其根据姓名进行合并,然后将合并 后的数据按照总分从高到低进行排序,总分相同时,根据英语成绩从高到低排序, 并将结果存放在学生期末考试成绩排名表.xls 中,最终表中的部分数据如下。(40 分)
以下是Python代码:
```python
import pandas as pd
# 读取学生基本信息表和期末考试成绩表
info_data = pd.read_excel('学生基本信息表.xls')
score_data = pd.read_excel('期末考试成绩表.xls')
# 根据姓名进行合并
merged_data = pd.merge(info_data, score_data, on='姓名')
# 按照总分和英语成绩进行排序
sorted_data = merged_data.sort_values(by=['总分', '英语'], ascending=[False, False])
# 存储结果到学生期末考试成绩排名表.xls
sorted_data.to_excel('学生期末考试成绩排名表.xls', index=False)
```
其中,`pd.read_excel` 函数用于读取 Excel 表格数据,`pd.merge` 函数用于合并两张表格,`sort_values` 函数用于排序,`to_excel` 函数用于将结果存储到 Excel 表格中。最终,我们会得到一个按照总分和英语成绩排名的学生期末考试成绩排名表。
python存储学生张三成绩的字典结构如下: d= {"name。7: “张三”,"english":80, "python^ :90,”math^ :100 请编写程序完成以下三个求: 1)请使用上述结构,输入5名学生的name及english、python和math三门课的成绩,并存储到列表scores 中; 2)计算每个同学的平均成绩,同时在字典中添加关键字”avg用来表示平均成绩; 3)按照每个学生的平均成绩由 到低排序,在控制台输出5个学生的相关信息,并写入到文件socres. txt中。
代码如下:
```python
# 定义学生字典结构
student_dict = {"name": "", "english": 0, "python": 0, "math": 0, "avg": 0}
# 定义存储学生信息的列表
scores = []
# 输入5名学生的信息
for i in range(5):
# 输入学生姓名
name = input("请输入第{}个学生的姓名:".format(i+1))
student_dict["name"] = name
# 输入学生英语成绩
english_score = int(input("请输入{}的英语成绩:".format(name)))
student_dict["english"] = english_score
# 输入学生Python成绩
python_score = int(input("请输入{}的Python成绩:".format(name)))
student_dict["python"] = python_score
# 输入学生数学成绩
math_score = int(input("请输入{}的数学成绩:".format(name)))
student_dict["math"] = math_score
# 计算学生平均成绩
avg_score = (english_score + python_score + math_score) / 3
student_dict["avg"] = avg_score
# 将学生信息添加到列表中
scores.append(student_dict.copy())
# 按照平均成绩排序
scores.sort(key=lambda x: x["avg"], reverse=True)
# 输出学生信息
for i in range(5):
print("第{}名学生:".format(i+1))
print("姓名:{}".format(scores[i]["name"]))
print("英语成绩:{}".format(scores[i]["english"]))
print("Python成绩:{}".format(scores[i]["python"]))
print("数学成绩:{}".format(scores[i]["math"]))
print("平均成绩:{}".format(scores[i]["avg"]))
print()
# 将学生信息写入文件
with open("scores.txt", "w") as f:
for i in range(5):
f.write("第{}名学生:\n".format(i+1))
f.write("姓名:{}\n".format(scores[i]["name"]))
f.write("英语成绩:{}\n".format(scores[i]["english"]))
f.write("Python成绩:{}\n".format(scores[i]["python"]))
f.write("数学成绩:{}\n".format(scores[i]["math"]))
f.write("平均成绩:{}\n\n".format(scores[i]["avg"]))
```
注意:这里我们使用了`student_dict.copy()`来将每个学生的信息添加到列表中。如果我们直接将`student_dict`添加到列表中,那么所有学生的信息都将指向同一个字典,导致最终列表中的所有元素都是相同的。
阅读全文