为了账号安全,请及时绑定邮箱和手机立即绑定

HackerRank 的嵌套列表问题:-面对 10 个测试用例中的 2 个问题

HackerRank 的嵌套列表问题:-面对 10 个测试用例中的 2 个问题

牧羊人nacy 2021-09-11 13:34:36
以下是我对解决方案的尝试。结果需要按字典顺序排序,我这样做了,但我不明白为什么我在 #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 gradesfor i in range(N):    name = input()    score = float(input())    physics_students.append([name,score])physics_students.sort()#Removing the lowest gradegrades_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 gradefor i in range(N):    if physics_students[i][1]==grades_list[0]:        print("name",physics_students[i][0])未通过的测试用例如下:测试用例 1:4 abhay -50 sri -50 rakesh -50 kishore 51测试用例 2:5 ram 20 ramesh 20suresh 19 venkat 19 jaydeep 21
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超2个赞

大错在这里:


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没有完全删除。


有几种方法可以解决这个问题,但我想把实现留给你,因为这是一个很好的练习。


剧透:



其他事宜

N=int(input("enter number of students in the range of 2 to 5"))

那里应该不需要提示。它会破坏标准输出,HackerRank 会将其标记为错误。


print("name",physics_students[i][0])

这也是。您可以删除name. :)


查看完整回答
反对 回复 2021-09-11
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

您代码的更新版本(通过所有 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)


查看完整回答
反对 回复 2021-09-11
  • 2 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信