Python输入若干学生数据,包括姓名,以及ds,db,c 三门课程的成绩,存放到序列中,然后按总成绩由高到低输出所有学生的信息,使用内置函数sorted及lambda表达式实现。
时间: 2024-01-05 15:02:25 浏览: 197
可以使用字典来存储每个学生的信息,然后将所有学生的字典放在一个列表中。然后使用`sorted`函数来对列表进行排序,排序的关键字可以使用`lambda`表达式来定义。
以下是实现代码:
```python
# 定义学生列表
students = []
# 输入学生数据
while True:
name = input("请输入学生姓名:")
if not name:
break
ds = float(input("请输入{} 的 ds 成绩:".format(name)))
db = float(input("请输入{} 的 db 成绩:".format(name)))
c = float(input("请输入{} 的 c 成绩:".format(name)))
# 存储学生信息到字典中
student = {"name": name, "ds": ds, "db": db, "c": c}
students.append(student)
# 按总成绩由高到低排序并输出
students = sorted(students, key=lambda x: x["ds"] + x["db"] + x["c"], reverse=True)
print("按总成绩由高到低输出所有学生的信息:")
for student in students:
print("{:<10} ds:{:<5} db:{:<5} c:{:<5} 总成绩:{:<5}".format(student["name"], student["ds"], student["db"], student["c"], student["ds"] + student["db"] + student["c"]))
```
运行示例:
```
请输入学生姓名:Tom
请输入Tom 的 ds 成绩:89.5
请输入Tom 的 db 成绩:78.5
请输入Tom 的 c 成绩:90.0
请输入学生姓名:Jerry
请输入Jerry 的 ds 成绩:87.0
请输入Jerry 的 db 成绩:92.5
请输入Jerry 的 c 成绩:88.5
请输入学生姓名:
按总成绩由高到低输出所有学生的信息:
Tom ds:89.5 db:78.5 c:90.0 总成绩:258.0
Jerry ds:87.0 db:92.5 c:88.5 总成绩:268.0
```
阅读全文