python - HackerRank 的嵌套列表问题:10 个测试用例中有 2 个面临问题
问题描述
以下是我对解决方案的尝试。结果需要按我所做的字典顺序排序,但我不明白为什么我在 #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 abhay -50 sri -50 rakesh -50 kishore 51
测试用例 2:5 ram 20 ramesh 20 Suresh 19 venkat 19 jaydeep 21
解决方案
大错在这里:
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]
。这成为您的 sorted grades_list
。
现在当你打电话时会发生什么.remove()
?
>>> grades_list.remove(min(grades_list))
>>> print(grades_list)
[1, 2, 3]
所以你看,min
没有完全删除。
有几种方法可以解决这个问题,但我想把实现留给你,因为这是一个很好的练习。
剧透:
提示:也许尝试只在你的?中保留不同的元素。
grades_list
其他问题
N=int(input("enter number of students in the range of 2 to 5"))
那里不应该有提示。它会破坏标准输出,HackerRank 会将其标记为错误。
print("name",physics_students[i][0])
这也是。您可以删除name
. :)
推荐阅读
- r - 如何使用 R 在多个表中加载一个 csv
- bash - shell脚本中的动态变量赋值
- javascript - 如何使用 javascript 将用户输入存储到 SQLite3 表中?
- android - 一次加载所有 RecyclerView 项目
- java - 如何使用标准进行简单的左连接?
- android - Android 在编辑文本中使用重力时会添加 gab
- swift - 使用 AKSequencer GenData 和 LoadMIDIFile 的 AudioKit
- swift - Swift ENUM 如何将“rawValue”转换回 Enum 大小写?
- kotlin - Corda 节点监控工具或资源管理器,可用于显示除 Corda 资源管理器以外的见解
- asp.net-mvc - 支付处理期间 ProtectPay 托管支付页面超时