Idées pour concevoir un programme de calendrier de ligue de football en Python

高洛峰
Libérer: 2017-03-01 14:10:54
original
2636 Les gens l'ont consulté

Le système de compétition de la ligue de football est qu'une équipe affronte des équipes autres qu'elle-même dans la ligue une fois à domicile et à l'extérieur au cours d'une saison. Nous pouvons utiliser un algorithme de boucle pour y parvenir. Ensuite, jetons un coup d'œil aux idées Python. et des exemples simples de mise en œuvre pour concevoir un programme de calendrier de ligue de football :

Chaque année, les calendriers des ligues majeures de Serie A, Bundesliga, Premier League et La Liga sont un incontournable pour les fans, je pense. paragraphe que j'ai écrit auparavant pour générer un planning, c'est tellement confortable d'écrire ce genre de choses en Python.
Cet algorithme s'appelle l'algorithme de l'anneau de serpent.
C'est-à-dire disposer toutes les équipes en anneau (2 colonnes), côté gauche contre côté droit, la première équipe ne bouge pas, et les autres équipes circulent dans le sens des aiguilles d'une montre, pour qu'il n'y ait pas de répétition.
Pour faciliter l'explication, supposons qu'il y a 8 équipes a à h. Disposez en cercle comme indiqué ci-dessous.

Idées pour concevoir un programme de calendrier de ligue de football en Python

De cette façon, le match du premier tour est, (a,h)(b,g)(c,f)(d,e) .
Au tour suivant, la première équipe a ne bouge pas, et les autres équipes se déplacent d'une case dans le sens des aiguilles d'une montre comme des engrenages.

Idées pour concevoir un programme de calendrier de ligue de football en Python

De cette façon, le match du deuxième tour est, (a,b)(c,h)(d,g)(e,f) .
Les engrenages continuent de glisser jusqu'à revenir au point de départ, de sorte que chaque équipe joue contre les 7 autres équipes.

Mille mots valent un mètre. Prenons l'exemple de la Premier League.

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)
Copier après la connexion

Idées pour concevoir un programme de calendrier de ligue de football en Python

Pour plus d'idées sur la conception de programmes de calendrier de ligue de football en Python, veuillez prêter attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!