用Python模拟欧冠小组赛抽签(修订版),论死亡之组是如何自动炼成的

记得之前,我曾经写过一个欧冠抽签的小程序
不过之前写的那个程序其实还是有一点小bug
让我们回顾一下

用Python模拟欧冠小组抽签,一不小心把某队抽进死亡之组

不过之前的程序还是有一点小bug的
经过十一的调试
终于祭出了修订版
这次可以满足先抽球队再抽小组了
也能实现俄罗斯球队与乌克兰球队
二者之间的回避
如果运行报错
没关系,再尝试运行一下就行了
先贴上代码


var foo = 'bar';
import random
d1=(('切尔西','英格兰'),('比利亚雷亚尔','西班牙'),('曼城','英格兰'),('马德里竞技','西班牙'),('国际米兰','意大利'),('葡萄牙体育','葡萄牙'),('里尔','法国'),('拜仁慕尼黑','德国'))
d2=(('巴塞罗那','西班牙'),('皇家马德里','西班牙'),('多特蒙德','德国'),('曼联','英格兰'),('利物浦','英格兰'),('巴黎圣日耳曼','法国'),('塞维利亚','西班牙'),('尤文图斯','意大利'))
d3=(('亚特兰大','意大利'),('RB莱比锡','德国'),('萨尔茨堡红牛','奥地利'),('波尔图','葡萄牙'),('阿贾克斯','荷兰'),('顿涅茨克矿工','乌克兰'),('本菲卡','葡萄牙'),('泽尼特','俄罗斯'))
d4=(('AC米兰','意大利'),('沃尔夫斯堡','德国'),('布鲁日','比利时'),('贝西克塔斯','土耳其'),('基辅迪纳摩','乌克兰'),('马尔默','瑞典'),('伯尔尼年轻人','瑞士'),('谢里夫','摩尔多瓦'))
f1=list(d1)
f2=list(d2)
f3=list(d3)
f4=list(d4)
fenzu=[]
for i in range(8):
    fenzu.append([])
random.shuffle(f1)
random.shuffle(f2)
random.shuffle(f3)
random.shuffle(f4)
#抽第一档球队
for m in range(8):
    fenzu[m].append(f1[m])
#抽第二档球队
for n in range(8):
    availgroup=[]
    drawteam=f2[n]
    for j in range(8):
        if len(fenzu[j])<2:
            fircountry=fenzu[j][0][1]
            seccountry=drawteam[1]
            if fircountry != seccountry:
                if fircountry =='俄罗斯' and seccountry=='乌克兰':
                    continue
                elif fircountry =='乌克兰' and seccountry=='俄罗斯':
                    continue
                else:
                    availgroup.append(j)
        
            else:
                continue
    random.shuffle(availgroup)
    fenzu[availgroup[0]].append(drawteam)
#抽第三档球队
for n in range(8):
    availgroup=[]
    drawteam=f3[n]
    for j in range(8):
        if len(fenzu[j])<3:
            fircountry=fenzu[j][0][1]
            seccountry=fenzu[j][1][1]
            thircountry=drawteam[1]
            if thircountry != fircountry and thircountry != seccountry:
                if thircountry =='俄罗斯':
                    if fircountry =='乌克兰' or seccountry=='乌克兰':
                        continue
                    else:
                        availgroup.append(j)
                elif thircountry =='乌克兰':
                    if fircountry =='俄罗斯' or seccountry=='俄罗斯':
                        continue
            
                    else:
                        availgroup.append(j)
                else:
                        availgroup.append(j)
        
            else:
                continue
    random.shuffle(availgroup)
    fenzu[availgroup[0]].append(drawteam)
#抽第四档球队
for n in range(8):
    availgroup=[]
    drawteam=f4[n]
    for j in range(8):
        if len(fenzu[j])<4:
            fircountry=fenzu[j][0][1]
            seccountry=fenzu[j][1][1]
            thircountry=fenzu[j][2][1]
            fourcountry=drawteam[1]
            if fourcountry != fircountry and fourcountry != seccountry and fourcountry != thircountry:
                if fourcountry =='俄罗斯':
                    if fircountry =='乌克兰' or seccountry=='乌克兰' or thircountry=='乌克兰':
                        continue
                    else:
                        availgroup.append(j)
                elif fourcountry =='乌克兰':
                    if fircountry =='俄罗斯' or seccountry=='俄罗斯' or thircountry=='俄罗斯':
                        continue
            
                    else:
                        availgroup.append(j)
                else:
                        availgroup.append(j)
        
            else:
                continue
    random.shuffle(availgroup)
    fenzu[availgroup[0]].append(drawteam)

for n in range(8):
    print(fenzu[n])

尝试用本赛季欧冠分档试了一下
不知道你支持的球队被我试进死亡之组了吗
附上两个程序运行结果

[('比利亚雷亚尔', '西班牙'), ('尤文图斯', '意大利'), ('波尔图', '葡萄牙'), ('伯尔尼年轻人', '瑞士')]
[('拜仁慕尼黑', '德国'), ('曼联', '英格兰'), ('阿贾克斯', '荷兰'), ('马尔默', '瑞典')]
[('葡萄牙体育', '葡萄牙'), ('巴黎圣日耳曼', '法国'), ('亚特兰大', '意大利'), ('布鲁日', '比利时')]
[('国际米兰', '意大利'), ('利物浦', '英格兰'), ('萨尔茨堡红牛', '奥地利'), ('谢里夫', '摩尔多瓦')]
[('切尔西', '英格兰'), ('塞维利亚', '西班牙'), ('泽尼特', '俄罗斯'), ('沃尔夫斯堡', '德国')]
[('里尔', '法国'), ('皇家马德里', '西班牙'), ('RB莱比锡', '德国'), ('AC米兰', '意大利')]
[('马德里竞技', '西班牙'), ('多特蒙德', '德国'), ('顿涅茨克矿工', '乌克兰'), ('贝西克塔斯', '土耳其')]
[('曼城', '英格兰'), ('巴塞罗那', '西班牙'), ('本菲卡', '葡萄牙'), ('基辅迪纳摩', '乌克兰')]
[('切尔西', '英格兰'), ('巴塞罗那', '西班牙'), ('亚特兰大', '意大利'), ('布鲁日', '比利时')]
[('国际米兰', '意大利'), ('利物浦', '英格兰'), ('泽尼特', '俄罗斯'), ('马尔默', '瑞典')]
[('拜仁慕尼黑', '德国'), ('巴黎圣日耳曼', '法国'), ('波尔图', '葡萄牙'), ('谢里夫', '摩尔多瓦')]
[('曼城', '英格兰'), ('皇家马德里', '西班牙'), ('RB莱比锡', '德国'), ('AC米兰', '意大利')]
[('马德里竞技', '西班牙'), ('多特蒙德', '德国'), ('本菲卡', '葡萄牙'), ('贝西克塔斯', '土耳其')]
[('葡萄牙体育', '葡萄牙'), ('曼联', '英格兰'), ('顿涅茨克矿工', '乌克兰'), ('沃尔夫斯堡', '德国')]
[('里尔', '法国'), ('塞维利亚', '西班牙'), ('阿贾克斯', '荷兰'), ('伯尔尼年轻人', '瑞士')]
[('比利亚雷亚尔', '西班牙'), ('尤文图斯', '意大利'), ('萨尔茨堡红牛', '奥地利'), ('基辅迪纳摩', '乌克兰')]
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值