问题:-我们已经给出了学生的姓名和分数,我们必须将它们存储在嵌套列表中,并打印成绩第二低的任何学生的姓名。 在这里,如果有多个成绩第二低的学生,我们必须按字母顺序排列他们的名字,并将每个名字打印在新行上。
if __name__ == '__main__':
students = []
marks = []
names = []
for _ in range(int(input())):
name = input()
score = float(input())
students.append([names, score])
marks.append(score)
for i in range(len(marks)):
for j in range(i+1, len(marks)):
if marks[i] > marks[j]:
temp = marks[i]
marks[i] = marks[j]
marks[j] = temp
lowest = marks[0]
for i in marks:
if i > lowest:
second = i
break
for i, j in students:
if j == second:
names.append(i)
for i in range(len(names)):
for j in range(i+1, len(names)):
if names[i] > names[j]:
temp = names[i]
names[i] = names[j]
names[j] = temp
for i in names:
print(i, sep='\n')
示例输入: 5 哈利 37.21 浆果 37.21 蒂娜 37.2 阿克里蒂 41 残酷的 39 示例输出:- 浆果 哈利
我不确定我做得是否尽可能正确,但总的来说它是有效的
def main():
students = []
n = int(input())
for i in range(n):
name = input()
score = float(input())
students.append([name, score])
students = sorted(students, key=lambda x: (float(x[1]), x[0]))
lowest = students.pop(0)[1]
lowest_second = 0
for el in students:
if el[1] > lowest:
lowest_second = el[1]
break
res = []
for el in students:
if el[1] == lowest_second:
res.append(el)
for el in res:
print(el[0])
if __name__ == '__main__':
main()