【问题描述】
变量lst1=[("028",90),("017",75),("002",40),("005",65),("002",40),("033",78),("017",75),("027",32)]中保存n个学生的学号和一门课成绩。现要求将重复的学生信息只保留一个(去重),然后按学号升序分别输出去重前和去重后的所有学生信息,再按学号升序输出不及格学生信息。
【输入形式】无
【输出形式】用print函数在屏幕上输出。
【样例输入】无
【样例输出】
去重前学号和成绩
002 40
002 40
005 65
017 75
017 75
027 32
028 90
033 78
去重后学号和成绩
002 40
005 65
017 75
027 32
028 90
033 78
不及格学生学号和成绩
002 40
027 32
【样例说明】
【评分标准】
lst1 = [("028", 90), ("017", 75), ("002", 40),
("005", 65), ("002", 40), ("033", 78),
("017", 75), ("027", 32)]
print("去重前学号和成绩")
l = len(lst1)
lst1.sort()
for i in range(0, l):
print(lst1[i][0], lst1[i][1])
lst2 = []
for i in range(0, l):
for j in range(i + 1, l):
if lst1[i][0] == lst1[j][0]:
lst2.append((lst1[i][0], lst1[i][1]))
break
l2 = len(lst2)
lst3 = lst1
for k in range(0, l2):
if (lst2[k][0], lst2[k][1]) in lst1:
lst1.remove((lst2[k][0], lst2[k][1]))
l = len(lst3)
lst3.sort()
print("去重后学号和成绩")
for i in range(0, l):
print(lst3[i][0], lst3[i][1])
lst4 = []
for o in range(0, l):
if lst3[o][1] <= 60:
lst4.append((lst3[o][0], lst3[o][1]))
l = len(lst4)
lst4 = [(v, k) for k, v in lst4]
print("不及格学生学号和成绩")
lst4.sort(reverse=True)
for i in range(0, l):
print(lst4[i][1], lst4[i][0])
文章提供了一段Python代码,用于处理一个包含学生学号和成绩的列表。首先,代码按照学号对列表进行升序排序并打印去重前的信息。接着,通过双重循环和条件判断实现去重,并再次打印去重后的信息。最后,筛选出不及格学生(成绩低于60分)并按成绩降序打印其信息。
1100

被折叠的 条评论
为什么被折叠?



