题目要求:
给定每个学生的姓名和成绩,将它们存储在嵌套列表中,并打印出成绩第二低的学生的姓名。如果有多个学生成绩第二低,则按字母顺序打印他们的姓名。
使用到的函数:
set()
将成绩列表转换为集合,集合自动去重,因此相同的成绩只会出现一次。
sorted()
对去重后的成绩集合进行排序,得到一个有序的列表,列表中的成绩从低到高排列。
如果想从高到低排列,只需加入reverse参数:
sorted(..., reverse=True)
完整代码:
if __name__ == '__main__':
# 读取学生姓名和成绩并存储在嵌套列表中
students = []
for _ in range(int(input())):
name = input()
score = float(input())
students.append([name, score])
# 提取所有成绩并找到唯一的成绩集合
scores = sorted(set([score for name, score in students]))
# 找到第二低的成绩
second_lowest_score = scores[1]
# 找到所有成绩为第二低的学生
second_lowest_students = [name for name, grade in students if grade == second_lowest_score]
# 按字母顺序排序学生姓名
second_lowest_students.sort()
# 打印结果
for student in second_lowest_students:
print(student)
其中
scores = sorted(set([score for name, score in students]))
second_lowest_students = [name for name, grade in students if grade == second_lowest_score]
均为列表推导式, 以for为分割,前面为表达式部分,后面为循环语句。
输出结果:
标签:lowest,name,python,List,Nested,students,second,score,成绩 From: https://blog.csdn.net/Eden_Hazard7/article/details/141722030