以下是我对解决方案的尝试。需要按我的词典顺序对结果进行排序,但是我不明白为什么在#Code之后我提到的测试用例无法正常工作。
#Code
N=int(input("enter number of students in the range of 2 to 5"))
physics_students=[]
#creating a list of student names with their grades
for i in range(N):
name = input()
score = float(input())
physics_students.append([name,score])
physics_students.sort()
#Removing the lowest grade
grades_list=[]
for i in range(N):
grades_list.append(physics_students[i][1])
grades_list.sort()
grades_list.remove(min(grades_list))
#finding out the names of students with second lowest grade
for i in range(N):
if physics_students[i][1]==grades_list[0]:
print("name",physics_students[i][0])
测试案例1: 4 阿拜 -50 斯里 -50 rakesh -50 基肖尔 51
测试案例2: 5 内存 20 拉梅什 20 肯定的 19 文卡特 19 杰伊迪普 21
答案 0 :(得分:0)
大失误在这里:
grades_list=[]
for i in range(N):
grades_list.append(physics_students[i][1])
grades_list.sort()
grades_list.remove(min(grades_list))
HackerRank问题描述符
注意:如果有多名学生和同一年级,请按字母顺序排列其姓名,并将每个姓名打印在新行上。 强调地雷
现在考虑是否有多个具有相同最低成绩的学生。假设成绩为[1, 1, 2, 3]
。这将成为您排序的grades_list
。
现在,当您致电.remove()
时会发生什么?
>>> grades_list.remove(min(grades_list))
>>> print(grades_list)
[1, 2, 3]
因此,您发现min
未被完全删除。
有几种解决方法,但是我想把实现留给您,因为这是一个很好的练习。
扰流器:
提示:也许尝试在您的
grades_list
中只保留 distinct 个元素?
N=int(input("enter number of students in the range of 2 to 5"))
这里不需要提示。它将破坏标准输出,并且HackerRank会将其标记为错误。
print("name",physics_students[i][0])
这也是。您可以删除name
。 :)
答案 1 :(得分:0)
您的代码的更新版本(通过所有Hackerrank测试):
if __name__ == '__main__':
physics_students = []
for _ in range(int(input())):
name = input()
score = float(input())
physics_students.append([name, score])
physics_students.sort()
N = len(physics_students)
### Removing the lowest grades
grades_list = []
for i in range(N):
grades_list.append(physics_students[i][1])
grades_list.sort()
min_grade = min(grades_list)
grades_list_temp = grades_list[:]
for i in range(len(grades_list)):
if grades_list[i] == min_grade:
grades_list_temp.pop(0)
else:
pass
#### Finding out the names of students with second lowest grade
lowest2nd_names_list = []
for i in range(N):
if physics_students[i][1] == grades_list_temp[0]:
lowest2nd_names_list.append(physics_students[i][0])
for name in lowest2nd_names_list:
print(name)