Rumah pembangunan bahagian belakang Tutorial Python Python设计足球联赛赛程表程序的思路

Python设计足球联赛赛程表程序的思路

Mar 01, 2017 pm 02:10 PM

足球联赛的赛制就是一支队伍在一个赛季中主客场分别面对联赛中除了自身以外的球队一次,对此我们可以使用一种循环算法来实现,接下来就一起来看一下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支球队对阵了。

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

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)
Salin selepas log masuk

Python设计足球联赛赛程表程序的思路

更多Python设计足球联赛赛程表程序的思路相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Bagaimana untuk menyelesaikan masalah kebenaran yang dihadapi semasa melihat versi Python di Terminal Linux? Apr 01, 2025 pm 05:09 PM

Penyelesaian kepada Isu Kebenaran Semasa Melihat Versi Python di Terminal Linux Apabila anda cuba melihat versi Python di Terminal Linux, masukkan Python ...

Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Bagaimana cara menyalin seluruh lajur satu data ke dalam data data lain dengan struktur yang berbeza di Python? Apr 01, 2025 pm 11:15 PM

Apabila menggunakan Perpustakaan Pandas Python, bagaimana untuk menyalin seluruh lajur antara dua data data dengan struktur yang berbeza adalah masalah biasa. Katakan kita mempunyai dua DAT ...

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam Kaedah Projek dan Masalah Dikemukakan Dalam masa 10 Jam? Apr 02, 2025 am 07:18 AM

Bagaimana Mengajar Asas Pengaturcaraan Pemula Komputer Dalam masa 10 jam? Sekiranya anda hanya mempunyai 10 jam untuk mengajar pemula komputer beberapa pengetahuan pengaturcaraan, apa yang akan anda pilih untuk mengajar ...

Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Bagaimanakah uvicorn terus mendengar permintaan http tanpa serving_forever ()? Apr 01, 2025 pm 10:51 PM

Bagaimanakah Uvicorn terus mendengar permintaan HTTP? Uvicorn adalah pelayan web ringan berdasarkan ASGI. Salah satu fungsi terasnya ialah mendengar permintaan HTTP dan teruskan ...

Bagaimana secara dinamik membuat objek melalui rentetan dan panggil kaedahnya dalam Python? Bagaimana secara dinamik membuat objek melalui rentetan dan panggil kaedahnya dalam Python? Apr 01, 2025 pm 11:18 PM

Di Python, bagaimana untuk membuat objek secara dinamik melalui rentetan dan panggil kaedahnya? Ini adalah keperluan pengaturcaraan yang biasa, terutamanya jika perlu dikonfigurasikan atau dijalankan ...

Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Bagaimana untuk mengelakkan dikesan oleh penyemak imbas apabila menggunakan fiddler di mana-mana untuk membaca lelaki-dalam-tengah? Apr 02, 2025 am 07:15 AM

Cara mengelakkan dikesan semasa menggunakan fiddlerevery di mana untuk bacaan lelaki-dalam-pertengahan apabila anda menggunakan fiddlerevery di mana ...

Apakah beberapa perpustakaan Python yang popular dan kegunaan mereka? Apakah beberapa perpustakaan Python yang popular dan kegunaan mereka? Mar 21, 2025 pm 06:46 PM

Artikel ini membincangkan perpustakaan Python yang popular seperti Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask, dan Permintaan, memperincikan kegunaan mereka dalam pengkomputeran saintifik, analisis data, visualisasi, pembelajaran mesin, pembangunan web, dan h

See all articles