Python 请告诉我这个代码有什么问题

Python 请告诉我这个代码有什么问题,python,python-3.x,list,Python,Python 3.x,List,我为hackerrank写了一些代码,但它在一些测试用例中不起作用,有什么问题吗 该问题称为嵌套列表,以下是链接: 如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu': 学生=[] 对于范围内的(int(input()): 名称=输入() 分数=浮动(输入() 学生。追加([姓名、分数]) #制作一套所有的分数 n=len(学生) 分数表=[] 对于范围(n)中的i: 分数表。附加(学生[i][1]) score_list.sort() 分数设置=设置(分数列表)

我为hackerrank写了一些代码,但它在一些测试用例中不起作用,有什么问题吗

该问题称为嵌套列表,以下是链接:

如果uuuu name_uuuu=='\uuuuuuu main\uuuuuu':
学生=[]
对于范围内的(int(input()):
名称=输入()
分数=浮动(输入()
学生。追加([姓名、分数])
#制作一套所有的分数
n=len(学生)
分数表=[]
对于范围(n)中的i:
分数表。附加(学生[i][1])
score_list.sort()
分数设置=设置(分数列表)
所需分数=列表(分数集)[1]
#列出所有得分符合要求的人的名单
人=[]
对于范围(n)中的i:
如果学生[i][1]==必修分数:
people.append(学生[i][0])
people.sort()
#打印每行
对于范围内的i(len(people)):
打印(人[i])

首先,您可以使此代码更“pythonic”

这被称为“列表理解”。它比经典的“在for循环中追加”方法更容易创建列表

我不太清楚你在这里干什么。如果要从分数列表中创建一个集合,则不需要对其进行排序。然后将集合转换回列表,并获取列表的第二项。我假设将一个集合转换为一个列表会给你一个随机顺序的列表。它在python中的实现方式可能不是这样,但从语义上讲,从集合到列表的转换中获得任何可靠的顺序是没有意义的

# making a list of all the people with the required score
people = []
for i in range(n):
    if students[i][1] == required_score :
        people.append(students[i][0])
我将花一点时间在这个for循环上。首先,python提供了一种迭代列表的简单方法。您不需要按索引访问每个项目:

people = []
for student in students:
    if student[1] == required_score :
        people.append(student[0])
接下来,由于学生列表包含两个项目的列表,因此可以在for循环中解压这些列表:

people = []
for name, score in students:
    if score == required_score :
        people.append(name)
同样,这可以通过转换为列表理解在一行中完成,但有些人可能更喜欢上面的版本,因为它更容易阅读:

people = [name for name, score in students if score == required_score]

# printing each line
for student in sorted(people):
    print(student)

注意我在最后一个循环中所做的更改。至于哪里不对劲,我猜这是你获得所需分数的方式,但如果没有看到输入和预期输出,就很难知道。

欢迎来到SO!怎么了?您期望输出是什么?您得到了什么?不要链接到冗长的描述,而是总结您的问题。请阅读上的这些帮助页面以及如何创建“它不起作用”。这里没有人知道这意味着什么。你有错误吗?为范围(n)中的i提供堆栈跟踪和(例如,示例输入数据等):评分列表。追加(学生[i][1])您可以为学生中的项目执行
:评分列表。追加(项目[1])
-这将使人更容易阅读。而不是范围内的i(len(人)):打印(人[i])您可以对人物中的项目执行
:打印(项目)
或甚至在一行
打印(“\n).加入(人物))
如果您不需要
,则不需要

people = []
for name, score in students:
    if score == required_score :
        people.append(name)
people = [name for name, score in students if score == required_score]

# printing each line
for student in sorted(people):
    print(student)