【发布时间】:2018-02-11 16:54:43
【问题描述】:
我不知道如何让 python 打印所有最高值,因为它只打印遇到的第一个值。
它从包含以下几行的文件中获取标准输入: 89 迈克尔·邓恩(年级名)
我知道我可以使用 zip 功能,但我不知道如何仅从中打印名称
如果我添加“highstudents = sorted(zip(grade,name),reverse=True)”,它会从高到低排序,但我不知道如何过滤掉该名称,因为它打印为“(89, 'Pepe')”
下面的代码是目前为止的以下尝试。
import sys
def topgrade(x):
s = max(x)
return s
def main():
s = sys.argv[1]
grade=[]
name = []
try:
with open(s,'r') as studata:
for line in studata:
try:
line = line.strip()
grade.append(int(line[0:2]))
name.append(line[3::])
except ValueError:
print("Invalid mark",line[0:2],"encountered. Skipping.")
top = topgrade(grade)
a = grade.index(top)
print("Best students:",name[a])
print("Best mark:",top)
except FileNotFoundError:
print("File not found:",s)
if __name__ == '__main__':
main()
【问题讨论】:
-
您的代码不起作用吗?怎么样?
-
它有效但只打印一个人的最高价值,我希望它打印每个人的最高价值。例如,如果我有 5 名学生,其中 2 人的成绩为 88,则将打印第一个 88 的人,而另一个人不会。
-
我找到了类似question 的答案。您可能会发现它很有帮助。
标签: python-3.x