gpt4 book ai didi

Python设计足球联赛赛程表程序的思路与简单实现示例

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 26 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Python设计足球联赛赛程表程序的思路与简单实现示例由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

每年意甲德甲英超西甲各大联赛的赛程表都是球迷们的必看之物,想起之前写过的一段生成赛程表的代码,用Python来写这类东西太舒服了。 这个算法叫做蛇环算法。 即,把所有球队排成一个环形(2列),左边对阵右边,第一支队伍不动,其他队伍顺时针循环,这样就肯定不重复了。 为了方便说明,假设有8支球队a到h。像下面那样按环形排好.

Python设计足球联赛赛程表程序的思路与简单实现示例

这样,第1轮的对阵就是,(a,h)(b,g)(c,f)(d,e)。 下一轮的时候,第一支球队a不动,其它球队像齿轮一样顺时针走一格.

Python设计足球联赛赛程表程序的思路与简单实现示例

这样,第2轮的对阵就是,(a,b)(c,h)(d,g)(e,f)。 齿轮继续滑动,直到回到原点,这样每支球队都跟其它所有7支球队对阵了.

千言不如一码。拿英超为例.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
from collections import deque
import random
def build_schedule(_teamarr):
   scheduleobj = dict .fromkeys( range ( 1 , 20 ))
   fixpos = _teamarr[ 0 ]
   ring = _teamarr[ 1 :]
   ring = deque(ring)
   #前半赛程,1-19轮(round)
   for round in range ( 1 , 20 ):
     #第1支球队不动,再加上轮转(rotate)的环
     teams = [fixpos] + list (ring)
     #切成2列,左边主队,右边客队
     home, away = teams[: len (teams) / 2 ],teams[ len (teams) / 2 :]
     away = away[:: - 1 ]
     #随机打乱主客队
     scheduleobj[ round ] = [(x,y) if random.random()> = 0.5 else (y,x) for x,y in zip (home,away)]
     ring.rotate( 1 )
   #后半赛季对阵跟前半赛季一样,但主客队对调
   for round in range ( 20 , 39 ):
     scheduleobj[ round ] = [(y,x) for x,y in scheduleobj[ round - 19 ]]
   return scheduleobj
 
if __name__ = = '__main__' :
   teamarr = [u '曼联' , u '阿斯顿维拉' , u '切尔西' , u '西汉姆' , u '富勒姆' ,
         u '热刺' , u '利物浦' , u '南安普顿' , u '埃弗顿' , u '诺维奇' ,
         u '纽卡斯尔' , u '曼城' , u '斯托克城' , u '桑德兰' , u '水晶宫' ,
         u '西布罗姆维奇' , u '阿森纳' , u '赫尔城' , u '卡迪夫城' , u '斯旺西' ]
   scheduleobj = build_schedule(teamarr)
   print u '---联赛第1轮---'
   for h,a in scheduleobj[ 1 ]:
     print u '{}-{}' . format (h,a)
 
   print u '---联赛第2轮---'
   for h,a in scheduleobj[ 2 ]:
     print u '{}-{}' . format (h,a)

Python设计足球联赛赛程表程序的思路与简单实现示例

最后此篇关于Python设计足球联赛赛程表程序的思路与简单实现示例的文章就讲到这里了,如果你想了解更多关于Python设计足球联赛赛程表程序的思路与简单实现示例的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com