You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现循环赛模拟并生成排名表?支持自定义队伍数方案咨询

循环赛排名表实现方案与代码优化

一、核心问题解决思路

  • 用字典存储每支队伍的统计数据(队名、总进球GF、总失球GA、积分PTS),替代零散变量,方便数据关联与后续排序。
  • 每场比赛结束后直接计算两队积分:
    • 若A队进球>B队:A加3分
    • 若A队进球=B队:两队各加1分
    • 若A队进球<B队:B加3分
  • 排序规则:优先按积分降序,积分相同则按净胜球(GF-GA)降序,再按总进球降序(符合常规赛事排名逻辑)

二、支持任意队伍数的实现

使用itertools.combinations生成所有两两对阵的组合,自动构建循环赛赛程,无需硬编码每一场比赛。

三、完整优化代码

import random
from itertools import combinations

def main():
    # 获取任意数量的队伍
    num_teams = int(input("请输入队伍数量: "))
    teams = []
    for i in range(num_teams):
        team_name = input(f"请输入第{i+1}支队伍的名称: ")
        teams.append(team_name)
    
    # 初始化每支队伍的统计数据
    team_stats = {team: {"GF": 0, "GA": 0, "PTS": 0} for team in teams}
    
    print("\n=== 赛事结果 ===")
    # 生成所有两两对阵的比赛
    for team_a, team_b in combinations(teams, 2):
        score_a = random.randint(0, 5)
        score_b = random.randint(0, 5)
        print(f"{team_a} vs {team_b}  {score_a}:{score_b}")
        
        # 更新进球和失球数据
        team_stats[team_a]["GF"] += score_a
        team_stats[team_a]["GA"] += score_b
        team_stats[team_b]["GF"] += score_b
        team_stats[team_b]["GA"] += score_a
        
        # 计算积分
        if score_a > score_b:
            team_stats[team_a]["PTS"] += 3
        elif score_a == score_b:
            team_stats[team_a]["PTS"] += 1
            team_stats[team_b]["PTS"] += 1
        else:
            team_stats[team_b]["PTS"] += 3
    
    # 按规则排序队伍
    sorted_teams = sorted(
        team_stats.items(),
        key=lambda x: (-x[1]["PTS"], -(x[1]["GF"] - x[1]["GA"]), -x[1]["GF"])
    )
    
    # 打印最终排名表
    print("\n=== 最终排名表 ===")
    print(f"{'Pos':<5} {'队名':<20} {'GF':<3} {'GA':<3} {'PTS':<3}")
    for idx, (team, stats) in enumerate(sorted_teams, 1):
        print(f"{idx:<5} {team:<20} {stats['GF']:<3} {stats['GA']:<3} {stats['PTS']:<3}")

if __name__ == "__main__":
    main()

代码说明

  • itertools.combinations(teams, 2):生成所有不重复的两队组合,完美实现循环赛赛程。
  • 排序key中的-表示降序排列,确保积分高、净胜球多、进球多的队伍排在前面。
  • 字典team_stats统一管理所有队伍数据,避免了原代码中变量分散的问题。

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:01:03