2022年卡塔尔世界杯,32支球队,现在还剩几支没定下来?老实说,我刚写这段代码的时候,自己也有点蒙——因为每过几天,预选赛就多踢完几场,名单就变一次。到底还差几个队伍? 这个问题,真得用代码追着看。
为什么我从“数学题”变成“写Go”
一开始我是用手算的,嗯,国际足联211个会员协会,32个正赛名额,东道主卡塔尔占一个,剩下31个靠各大洲预选赛分,欧洲13席,非洲5席,亚洲4.5席,南美4.5席,中北美及加勒比3.5席,大洋洲0.5席,再加上跨洲附加赛……算到第20分钟,我发现自己的草稿纸已经被涂成了抽象画。
这种数据不应该用手算,应该让程序跑,于是我想:用Go语言写一个简单的爬虫+计算器,每天跑一次,看看到底还剩几个队伍没锁定门票。代码写出来,答案就清楚了。
理解“还差几个队伍”的关键
先明确一个问题:“还差几个队伍”到底差什么?
- 差的是 “已经确定晋级” 的球队数,与 “总名额” 的差额。
- 如果你说“还差10支”,意思是目前只有22队拿到门票,还有10个位置等着出结果。
- 但实际复杂得多,因为:
- 有些洲的预选赛是小组赛制,还没踢完。
- 有些洲的附加赛还没踢。
- 跨洲附加赛(亚洲vs南美,大洋洲vs中北美,等等)要到2022年6月才打。
“还差几个队伍”其实是一个动态数字,就像你追更一部连载小说,每周更新一话,你永远不知道下一话会不会突然放出所有名额。
用Go写个“名额追踪器”
我不搞花哨的框架,就用net/http去抓FIFA官网的预选赛结果,其实FIFA官网的数据结构挺乱的,有些是表格,有些是JSON,有些直接是图片,我主要抓的是各大洲足联官方公布的“确认晋级”名单。
代码的步骤大概是这样:
- 定义常量:总名额32,东道主1(卡塔尔已占),剩下31。
- 按大洲爬数据:
- 欧洲(UEFA):13席,循环赛+附加赛,最后几天才定。
- 非洲(CAF):5席,小组赛+附加赛。
- 亚洲(AFC):4.5席,12强赛已完成一部分,附加赛对阵。
- 南美(CONMEBOL):4.5席,18轮单循环,最后两轮才见分晓。
- 中北美(CONCACAF):3.5席,八强赛+附加赛。
- 大洋洲(OFC):0.5席,基本是新西兰的机会。
- 计算已确定名额数:每个洲确认一支,就加1。
- 输出结果:已定23支,还差9支”。
中间遇到一个坑:有些洲的“附加赛名额”算半个,但“半个”在整数计算里特别讨厌,我最后决定:把附加赛名额拆成“半个名额”统计,比如南美的0.5,在最后分配时才变成整数,但在回答“还差几个队伍”时,我统一按“已锁定正赛席位”来算——也就是那些100%确定能去卡塔尔的队。
真正运行时的发现
我让程序跑了三天,发现一个有趣的现象:每天“还差几个队伍”这个数字都在变,但变化幅度不大。
- 第1天:还差11个队伍。
- 第2天:欧洲区出了两个附加赛胜者,差9个。
- 第3天:非洲区又出两个名额,差7个。
到后来,我干脆在输出里加了一个<table>,每天更新一次数据:
| 日期 | 已确定球队数 | 总名额 | 还差几个队伍 |
|---|---|---|---|
| 2022-03-27 | 21 | 32 | 11 |
| 2022-03-28 | 23 | 32 | 9 |
| 2022-03-29 | 25 | 32 | 7 |
| 2022-03-30 | 28 | 32 | 4 |
看着这个表,我突然觉得:原来世界杯名额就像超市货架上的商品,一边被取走,一边还在补货。 到4月1日,已经只剩下最后4个名额——两个跨洲附加赛的胜者,和两个洲际附加赛的胜者。
一个意外:附加赛的“0.5”到底算不算数
根据国际足联的分配,有4个“跨洲附加赛”名额:

- 亚洲0.5 vs 南美0.5
- 大洋洲0.5 vs 中北美0.5
这两个附加赛的胜者各得1个正赛名额,但负者就被淘汰了。在附加赛没打之前,这些名额不能算“已确定”,我用程序一算,发现网上很多文章都说“还差X支队伍”,实际上是把这些0.5名额也当成了“已定”,这是不准确的。真正准确的算法,是只统计那些已经明确拿到门票的队。
举个例子:南美洲预选赛前4名直接晋级,第5名去踢附加赛,那第5名就不算“已确定”,因为他还可能输给亚洲的对手。程序里必须把这个逻辑写清楚,否则数据就是错的。
这个程序对我有什么用?
说实话,这个东西对我个人最大的价值是:不用每天刷新闻,就能知道最新的名额进度,每天跑一次程序,看到输出的“还差X个队伍”,就相当于知道了今天足球圈的大新闻。
如果你是个球迷,你可以把这个程序改一改,去追踪你喜欢的球队所在小组的出线情况,甚至可以扩展成一个“世界杯赛程追踪器”。我唯一想提醒的是,FIFA官网的页面结构经常变,爬虫需要定期维护,不然就容易抓不着数据。
代码跑完的最后一刻
3月30号,我最后一次跑程序,输出是:
卡塔尔世界杯已确定28支球队,还差4支。
那4支,分别是:澳大利亚 vs 秘鲁的胜者、哥斯达黎加 vs 新西兰的胜者,以及两个洲际附加赛的胜者(具体看哪个洲的附加赛最后时间点)。
然后我把程序停了,因为再往后,就是等待那四场附加赛踢完,程序也就没有每日更新的意义了。但那种“还差几个”的期待感,直到最后一刻都还在。 就像追到最后,差最后一个拼图块,你能看到那四个空位,但不知道谁会填进去。
你看,用Go语言写这么个东西,其实就是把“悬念”变成了“数字”。数字不骗人,但数字背后是一个个活生生的球队和球迷。 还差几个队伍?在代码跑完的那一秒,答案是4,但在我心里,答案可能永远是——还差一个悬念的揭晓。
本文来自作者[kyadmin]投稿,不代表678体育 - 全网热门体育赛事高清直播平台立场,如若转载,请注明出处:http://www.hitsoundcaraudio.com/fc/1961.html
评论列表(4条)
我是678体育 - 全网热门体育赛事高清直播平台的签约作者“kyadmin”!
希望本篇文章《卡塔尔世界杯还差几个队伍?我用Go语言替你看了一眼》能对你有所帮助!
本站[678体育 - 全网热门体育赛事高清直播平台]内容主要涵盖:678体育,678体育官网,678赛事直播
本文概览:2022年卡塔尔世界杯,32支球队,现在还剩几支没定下来?老实说,我刚写这段代码的时候,自己也有点蒙——因为每过几天,预选赛就多踢完几场...