首页 > 解决方案 > 如何使用 python 列出参加比赛的赛车手的姓名、时间和位置?

问题描述

基本上,我必须为 4 个组创建一个参与者列表(我想对组进行排序),记录他们的时间和他们在比赛中的排名,并生成一个格式整齐的结果表。

我试过使用

racers = [(i, l[i]) for i in l]

places = sorted(racers, key = lambda i: int(i[1]))

print('1st Place: {}'.format(places[0][0]))
print('2nd Place: {}'.format(places[1][0]))
print('3rd Place: {}'.format(places[2][0]))

这是我当前的代码:

l = []
a = int(input("Enter the amount of racers for Anstey: "))
g = int(input("Enter the amount of racers for Gordon: "))
h = int(input("Enter the amount of racers for Helps: "))
r = int(input("Enter the amount of racers for Rawle: "))
total_racers = a+g+h+r

print("Total Racers:",total_racers)

for i in range(total_racers):
  racer_name = (input("Participant Name: "))
  racer_time = int(input("Participant Time: "))
  time_name = racer_time,racer_name
  l.append(time_name)

print('\n',*l, sep='\n')

标签: python-3.x

解决方案


l已经是一个列表,您不需要创建另一个列表来racers进行排序。如果你愿意,你可以分配racers = l

time_name是形式(racer_time, racer_name)key要排序的应该是i[0]racer_time你现在使用i[1]( racer_name) 来排序

racers = l
sorted(l, key = lambda i: i[0])

或者你应该交换 and 的位置racer_timeracer_name例如time_name = racer_name,racer_time,因为我认为你想racer_name在最后打印,但places[0][0]实际上是racer_time


推荐阅读