全部评论 1

  • 你这个代码逻辑有很大的问题,你按照下面的尝试改一下(Generated by ChatGP):

    1. 处理输入数据时的重复操作:代码先将选手信息存储在 paihang 列表中,然后再将相同的数据存储在 bf 列表中,重复操作没有必要。
    2. 计算总奖牌数的逻辑有误:代码使用 i.pop(0) 移除了选手的名字后,直接将剩下的数值转为整数并求和,但没有保存这些总数。
      3.比较选手总奖牌数的逻辑有误:在最后的比较过程中,直接将字符串相加并与 best 比较,这种比较方式是不对的,因为应该比较所有奖牌的整数和。

    AC 代码参考如下:

    n = int(input())
    participants = []
    
    for i in range(n):
        data = input().split()
        name = data[0]
        gold = int(data[1])
        silver = int(data[2])
        bronze = int(data[3])
        total_medals = gold + silver + bronze
        participants.append((name, total_medals, gold, silver, bronze, i))
    
    # 按照总奖牌数、金牌数、银牌数、输入顺序进行排序
    participants.sort(key=lambda x: (-x[1], -x[2], -x[3], x[5]))
    
    # 输出结果
    for participant in participants:
        print(f"{participant[0]} {participant[1]}")
    

    2024-07-05 来自 浙江

    2
首页