【发布时间】:2021-12-02 06:50:19
【问题描述】:
这是一个 Python 问题,其中代码应该允许您输入 n 个姓名和分数,程序将返回分数第二低的人的姓名。这就是我想出的,它工作得非常好,但为了变得更好,我想知道是否有更简单的方法来实现这一点。我的代码如下。
n=int(input())
names=[]
for i in range(0,n):
names.append([input(),float(input())])
for i in range(0,n):
names[i].reverse()
names.sort()
names.reverse()
misc=[]
for i in range(0,n):
misc.append(names[i][0])
blank=[]
for i in misc:
if i not in blank:
blank.append(i)
blank.reverse()
vals=[]
for i in range(0,n):
if names[i][0]==blank[1]:
vals.append(names[i])
vals.reverse()
for i in range(0,len(vals)):
print(vals[i][1])
【问题讨论】:
-
这个问题更适合codereview.stackexchange.com。请张贴在那里
-
您可以使用
misc = list(set(misc))快速删除重复项。但是你必须重新排序。在这种情况下,您不需要对名称进行排序。 -
@Goion:这个问题需要解决才能适合Code Review。您应该将提问者指向A guide to Code Review for Stack Overflow users,因为那里有些事情的处理方式不同 - 例如。我们需要很好地描述代码的用途以提供上下文,并且问题标题应该简单地说明代码做了什么(问题总是,“如何我可以改进吗?”)。代码正确运行很重要。如果可能,包括单元测试。
标签: python python-3.x loops