python模拟足球比赛_python初体验 —— 模拟体育竞技
python初体验 ——>>> 模拟体育竞技
一、排球训练营
1. 简介: 模拟不同的两个队伍进行排球的模拟比赛。
2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ),最后输出模拟的结果( O )。
P 简介:通过产生随机数得到每局比赛的难度,若小于能力值则表示赢得本局比赛,反之输掉本局比赛。
3. 规则简介:
① 每场比赛采用 5局3胜制。
② 前四局采用25分制,每个队只有在赢得至少25分,且同时超过对方2分时才胜一局。
③ 决胜局(第五局)采用15分制,先获得15分,且同时超过对方2分为胜。
4. 准备就绪,就差代码来实现了
插入代码之前,先对代码做个简单的介绍:
函数名称
函数说明
printInfo()
打印程序的介绍信息
getInputs()
获得用户输入的参数
printResult(n, winsA, winsB)
输出模拟比赛的结果
simNGames(n, probA, probB)
模拟n场比赛
simOneGame(probA, probB)
模拟一场比赛,包括五局,采取五局三胜制
simAGame(N, probA, probB)
模拟一局比赛
GameOver(N, scoreA, scoreB)
定义一局比赛的结束条件
好了,看看代码吧,虽然有点长,但应该可以看懂 ^_^
1 #-*- encoding:utf-8 -*-
2 '''
3 模拟排球竞技4 @author: bpf5 '''
6 #比赛规则:
7 #1. 采用5局3胜制
8 #2. 前四局采用25分制,每个队只有在赢得至少25分,且同时超过对方2分时才胜一局
9 #3. 决胜局(第五局)采用15分制,先获得15分,且同时超过对方2分为胜
10
11 from random importrandom12 from time importtime13 defprintInfo():14 '''
15 function: 打印程序的介绍信息16 '''
17 print("{:*^70}".format("产品简介"))18 print("产品名称: 排球竞技模拟分析器")19 print("产品概述: 通过输入2个队伍A和B的能力值(0到1之间的小数表示),能够模拟多次2个队伍A和B的排球竞技比赛,从而得出各自的胜率!")20 print("产品作者: 步平凡 - 04")21 print("{:*^70}".format("模拟开始"))22
23 defgetInputs():24 '''
25 function: 获得用户输入的参数26 '''
27 probA = eval(input("请输入队伍A的能力值(0~1):"))28 probB = eval(input("请输入队伍B的能力值(0~1):"))29 n = eval(input("请输入需要模拟比赛的场次数:"))30 returnprobA, probB, n31
32 defprintResult(n, winsA, winsB):33 '''
34 function: 输出模拟比赛的结果35 '''
36 print("{:*^70}".format("模拟结束"))37 print("竞技分析开始,共模拟{}场比赛。".format(n))38 print(">>>队伍A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))39 print(">>>队伍B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))40
41 defsimNGames(n, probA, probB):42 '''
43 function: 模拟n场比赛44 n: 模拟n场比赛45 probA, probB: 分别为队伍A和B的能力值46 winA, winB: 队伍A和B在一场比赛中获胜的局数47 winsA, winsB: 队伍A和B赢得比赛的场数,总共n场48 '''
49 winsA, winsB =0, 050 for _ inrange(n):51 winA, winB =simOneGame(probA, probB)52 if winA >winB:53 winsA += 1
54 else:55 winsB += 1
56 returnwinsA, winsB57
58 defsimOneGame(probA, probB):59 '''
60 function: 模拟一场比赛,包括五局,采取五局三胜制61 probA, probB: 分别为队伍A和B的能力值62 return: 返回队伍A和B在本场比赛中获胜的局数63 scoreA, scoreB: 分别为队伍A和B一局比赛获得的分数64 winA, winB: 分别为队伍A和B一场比赛获胜的局数65 N: 代表本次比赛的局次66 '''
67 winA, winB =0, 068 for N in range(5):69 scoreA, scoreB =simAGame(N, probA, probB)70 if scoreA >scoreB:71 winA += 1
72 else:73 winB += 1
74 if winA == 3 or winB == 3:75 break
76 returnwinA, winB77
78 defsimAGame(N, probA, probB):79 '''
80 function: 模拟一局比赛81 N: 代表本次比赛的局次82 probA, probB: 分别为队伍A和B的能力值83 return: 返回队伍A和B在本局比赛中获得的分数84 '''
85 scoreA, scoreB = 0, 0 #分别为队伍A和B一局比赛获得的分数
86 serving = 'A' #发球方
87 while notGameOver(N, scoreA, scoreB):88 if serving == 'A':89 if random() >probA:90 scoreB += 1
91 serving = 'B'
92 else:93 scoreA += 1
94 else:95 if random() >probB:96 scoreA += 1
97 serving = 'A'
98 else:99 scoreB += 1
100 returnscoreA, scoreB101
102 defGameOver(N, scoreA, scoreB):103 '''
104 function: 定义一局比赛的结束条件105 N: 代表当前局次(第五局为决胜局)106 return: 若比赛结束的条件成立返回真,否则为假107 '''
108 if N <= 4:109 return (scoreA>=25 and abs(scoreA-scoreB)>=2) or (scoreB>=25 and abs(scoreA-scoreB)>=2)110 else:111 return (scoreA>=15 and abs(scoreA-scoreB)>=2) or (scoreB>=15 and abs(scoreA-scoreB)>=2)112
113 if __name__ == "__main__":114 printInfo()115 probA, probB, n =getInputs()116 Time =time()117 winsA, winsB =simNGames(n, probA, probB)118 print("模拟用时: {:.1f}s".format(time()-Time))119 printResult(n, winsA, winsB)
5. 运行结果展示,为了查看方便,我在cmd中运行代码
二、足球训练基地
1. 简介: 模拟不同的两个队伍进行足球的模拟比赛。
2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ),最后输出模拟的结果( O )。
P 简介:通过产生随机数得到半场比赛的回合数,再通过产生随机数得到每回合比赛的难度,若小于能力值则表示赢得本局比赛,反之输掉本场比赛。
3. 规则简介:
① 比赛分为两半场,每场为45分钟。
上半场: 一方挑选进攻的球门,另一方获得开球权;
下半场: 互换攻守方向,上半场没获得开球权的一方获得开球权。
②在进球后开球时,开球方为失球一方。
③ 比赛结束时得分多的球队获胜,如果两队得分相同或均未得分,比赛为平局。
4. 代码实现
By the way, 此代码与上述主要不同之处在于: GameOver(),其他函数都类似
函数名称
函数说明
printInfo()
打印程序的介绍信息
getInputs()
获得用户输入的参数
printResult(n, winsA, winsB)
输出模拟比赛的结果
simNGames(n, probA, probB)
模拟n场比赛
simOneGame(probA, probB)
模拟一场比赛,包括上半场和下半场
simAGame(N, probA, probB)
模拟半场比赛
GameOver(N, scoreA, scoreB)
定义半场比赛的结束条件
1 #-*- encoding:utf-8 -*-
2 '''
3 模拟足球竞技4 @author: bpf5 '''
6 #比赛规则:
7 #1. 比赛分为两场,每场为45分钟
8 #上半场: 一方挑选进攻的球门,另一方获得开球权
9 #下半场: 互换攻守方向,上半场没获得开球权的一方获得开球权
10 #2. 在进球后开球时,开球方为失球一方
11 #3. 在没有违反任何比赛规则时,进攻球队得分。
12 #4. 比赛结束时得分多的球队获胜,如果两队得分相同或均未得分,比赛为平局。
13
14 from random importrandom, randint15 from time importtime16 defprintInfo():17 '''
18 function: 打印程序的介绍信息19 '''
20 print("{:*^70}".format("产品简介"))21 print("产品名称: 足球竞技模拟分析器")22 print("产品概述: 通过输入2个队伍A和B的能力值(0到1之间的小数表示),能够模拟多次2个队伍A和B的排球竞技比赛,从而得出各自的胜率!")23 print("产品作者: 步平凡 - 04")24 print("{:*^70}".format("模拟开始"))25
26 defgetInputs():27 '''
28 function: 获得用户输入的参数29 '''
30 probA = eval(input("请输入队伍A的能力值(0~1):"))31 probB = eval(input("请输入队伍B的能力值(0~1):"))32 n = eval(input("请输入需要模拟比赛的场次数:"))33 returnprobA, probB, n34
35 defprintResult(n, via, winsA, winsB):36 '''
37 function: 输出模拟比赛的结果38 '''
39 print("{:*^70}".format("模拟结束"))40 print("竞技分析开始,共模拟{}场比赛。".format(n))41 print(">>>队伍A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))42 print(">>>队伍B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))43 print(">>>两队平局{}场,占比{:0.1%}".format(via,via/n))44
45 defsimNGames(n, probA, probB):46 '''
47 function: 模拟n场比赛48 n: 模拟n场比赛49 probA, probB: 分别为队伍A和B的能力值50 winsA, winsB: 队伍A和B赢得比赛的场数,总共n场51 '''
52 via, winsA, winsB =0, 0, 053 for _ inrange(n):54 scoreA, scoreB =simOneGame(probA, probB)55 if scoreA ==scoreB:56 via += 1
57 elif scoreA >scoreB:58 winsA += 1
59 else:60 winsB += 1
61 returnvia, winsA, winsB62
63 defsimOneGame(probA, probB):64 '''
65 function: 模拟一场比赛, 分上半场和下半场66 probA, probB: 分别为队伍A和B的能力值67 scoreA, scoreB: 分别为队伍A和B一场比赛的分数68 return: 返回队伍A和B在本场比赛中获得的分数69 '''
70 winA, winB =0, 071 for N in range(2):72 scoreA, scoreB =simAGame(N, probA, probB)73 winA +=scoreA74 winB +=scoreB75 returnwinA, winB76
77 defsimAGame(N, probA, probB):78 '''
79 function: 模拟半场比赛80 probA, probB: 分别为队伍A和B的能力值81 scoreA, scoreB: 分别为队伍A和B半场比赛的分数82 return: 返回队伍A和B在本半场比赛中获得的分数83 '''
84 scoreA, scoreB =0, 085 if N ==0:86 serving = 'A' #发球方
87 else:88 serving = 'B'
89 for _ inrange(gameOver()):90 if serving == 'A':91 if random() <92 scorea>
93 serving = 'B'
94 else:95 if random() <96 scoreb>
97 serving = 'A'
98 returnscoreA, scoreB99
100 defgameOver():101 '''
102 function: 定义半场比赛的结束条件103 通过randint产生一个随机数作为半场比赛的回合数, 若达到半场比赛的回合数则结束比赛104 return: 若比赛结束的条件成立返回真,否则为假105 '''
106 return randint(3, 10)107
108 if __name__ == "__main__":109 printInfo()110 probA, probB, n =getInputs()111 Time =time()112 via, winsA, winsB =simNGames(n, probA, probB)113 print("模拟用时: {:.1f}s".format(time()-Time))114 printResult(n, via, winsA, winsB)
5. 运行结果展示,为了查看方便,我仍在cmd中运行代码
三、晋级模拟
1. 简介: 前2次分别对于排球和足球的模拟比赛分析,比赛规则的差距 体现 在代码上的不同,所以本次模拟分析多支队伍进行乒乓球比赛。
2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ),最后输出模拟的结果( O )。
P 简介:通过产生随机数得到每局比赛的难度,若小于能力值则表示赢得本局比赛,反之输掉本局比赛。当有多个队伍时,采取两两配对,但只遍历一次,因此,本代码功能不完善,仅供参考。
3. 规则简介:
① 一场比赛: 单打:采用七局四胜制; 双打淘汰赛、团体赛:采用五局三胜制。
② 一局比赛: 先得11分为胜,10平后,多得2分为胜
③ 一局比赛: 每队发球2次后,接发球方即成为发球方,依此类推,直至该局比赛结束 或者 到双方比分都达到10分时,发球和接发次序仍然不变,但每队只轮发一次球
4. 代码实现
本次代码与上述不同,本次采用类的方法来实现,不过基于本人对于乒乓球不熟悉及python用法有限,本次代码的功能有所限制,只能模拟数量为偶数的队伍进行比赛。待技术提升,会对代码进行改善和加强。
1 #-*- encoding:utf-8 -*-
2 '''
3 模拟乒乓球竞技4 @author: bpf5 '''
6 #比赛规则:
7 #1. 一场比赛: 单打:采用七局四胜制
8 #双打淘汰赛、团体赛:采用五局三胜制
9 #2. 一局比赛: 先得11分为胜,10平后,多得2分为胜
10 #3. 一局比赛: 每队发球2次后,接发球方即成为发球方,依此类推,直至该局比赛结束
11 #或者到双方比分都达到10分时,发球和接发次序仍然不变,但每队只轮发一次球
12
13 from random importrandom14 from pandas importDataFrame15 from time importtime16 classSportCompetitionAnalyze:17
18 defPrintInfo(self):19 '''
20 function: 打印程序的介绍信息21 '''
22 print("{:*^70}".format("产品简介"))23 print("产品名称: 乒乓球竞技模拟分析器(采取单打淘汰赛制)")24 print("产品概述: 通过输入多个队伍的能力值(0到1之间的小数表示),能够模拟多次多个队伍的乒乓球竞技比赛,从而得出各自的胜率!")25 print("产品作者: 步平凡 - 04")26 print("{:*^70}".format("模拟开始"))27
28 defGetInputs_for_Singal(self):29 '''
30 function: 获得用户输入的参数 获得单打各队员的能力值31 '''
32 self.n = eval(input("请输入需要模拟比赛的场数:"))33 self.probAbilityList_Original = list(map(eval, input("(注:通过输入的次序进行两两配对, 即前两个分别为队员A和B;以此类推。)\n\34 请输入各队员的能力值(0~1), 请用英文逗号隔开(输入个数为2的倍数):").split(',')))35 self.probAbilityList =self.probAbilityList_Original36 self.probNum =len(self.probAbilityList)37
38 defGetInputs_for_Double(self):39 '''
40 function: 获得用户输入的参数 获得双打各队伍各队员的能力值41 probAbilityList: 使用各队伍中两队员的平均能力值作为该队伍的能力值 --- 双打42 probAbilityList_Original: 存储原生的各队员能力值, 后续可用43 '''
44 self.probAbilityList, self.probAbilityList_Original =[], []45 self.n = eval(input("请输入需要模拟比赛的场数:"))46 Original = list(map(eval, input("(注:通过输入的次序进行四四配对, 即前四个为队伍A和B;以此类推。)\n\47 请输入各队员的能力值(0~1), 请用英文逗号隔开(输入个数为4的倍数):").split(',')))48 for i in range(0, len(Original), 2):49 self.probAbilityList.append((Original[i] + Original[i+1])/2)50 self.probAbilityList_Original.append(list([Original[i], Original[i+1]]))51 self.probNum =len(self.probAbilityList)52
53 defPrintResult(self):54 '''
55 function: 输出模拟比赛的结果56 data: 存储每支的比赛信息57 '''
58 print("{:*^70}".format("模拟结束"))59 print("竞技分析结束,每组共模拟{}场比赛。".format(self.n))60 data =[]61 for i inrange(self.probNum):62 tmplist =[]63 tmplist.append(self.probAbilityList_Original[i]) #存储能力值
64 tmplist.append(self.probwinsList[i]) #存储获胜的场数
65 tmplist.append(self.probwinsList[i]/self.n) #存储胜率
66 data.append(tmplist)67 dataSheet = DataFrame(data , index=list(range(1, self.probNum+1)), columns=list(["Ability", "wins", "rate"]))68 #dataSheet.sort_values(by="wins", inplace=True) # 对比赛胜率rate进行排序, 会混乱比赛队伍的关系, 因此不采用
69 print(dataSheet)70
71 defsimNGames(self, GAMES, WINS):72 '''
73 function: 模拟n场比赛74 probwinsList: 存储每支队伍赢得比赛的场数 的列表75 winA, winB: 队伍A和B在一场比赛中获胜的局数76 winsA, winsB: 队伍A和B赢得比赛的场数,总共n场77 '''
78 self.probwinsList =[]79 for i in range(0, self.probNum, 2):80 print("队员:", i+1, 'VS' ,i+2, "比赛中...")81 winsA, winsB =0, 082 for _ inrange(self.n):83 winA, winB = self.simOneGame(self.probAbilityList[i], self.probAbilityList[i+1], GAMES, WINS)84 if winA >winB:85 winsA += 1
86 else:87 winsB += 1
88 self.probwinsList.append(winsA)89 self.probwinsList.append(winsB)90
91 defsimOneGame(self, probA, probB, GAMES, WINS):92 '''
93 function: 模拟一场比赛 》》》 GAMES局 WINS胜94 单打比赛,包括七局,采取七局四胜制95 双打比赛,包括五局,采取五局三胜制96 scoreA, scoreB: 分别为队伍A和B一局比赛的分数97 winA, winB: 分别为队伍A和B一场比赛赢的局数98 return: 返回双方赢的局数99 '''
100 winA, winB =0, 0101 for _ inrange(GAMES):102 scoreA, scoreB =self.simAGame(probA, probB)103 if scoreA >scoreB:104 winA += 1
105 else:106 winB += 1
107 if winA >=WINS or winB >=WINS:108 break
109 returnwinA, winB110
111 defsimAGame(self, probA, probB):112 '''
113 function: 模拟一局比赛114 probA, probB: 分别为队伍A和B的能力值115 return: 返回队伍A和B在本局比赛中获得的分数116 '''
117 scoreA, scoreB =0, 0118 serving = 'A' #发球方
119 servingNum = 2 #每方的发球次数
120 while notself.GameOver(scoreA, scoreB):121 if scoreA >= 10 and scoreB >= 10:122 servingNum = 1
123 for _ inrange(servingNum):124 if random() >probA:125 scoreB += 1
126 else:127 scoreA += 1
128 serving = 'B'
129 for _ inrange(servingNum):130 if random() >probB:131 scoreA += 1
132 else:133 scoreB += 1
134 serving = 'A'
135 returnscoreA, scoreB136
137 defGameOver(self, scoreA, scoreB):138 '''
139 function: 定义赢得一局的条件: 先得11分为胜,10平后,多得2分为胜140 '''
141 if scoreA >= 11 or scoreB >= 11:142 return (abs(scoreA-scoreB)>=2)143 elif (scoreA == 10 and scoreB > 11) or (scoreB == 10 and scoreA > 11):144 return (abs(scoreA-scoreB)>=2)145 else:146 return0147
148 defprint_MENU():149 print("程序简介:模拟乒乓球竞技")150 print("程序功能:\n\t1. 模拟多队员进行单打比赛\n\t2. 模拟多队伍多队员进行双打比赛")151 while 1:152 choose = input("功能选择:NO.")153 if choose in ['1', '2']:154 returneval(choose)155 else:156 print("输入有误, 请重新输入!")157
158 defsimGameMenu():159 choose =print_MENU()160 if choose == 1:161 pingpong =SportCompetitionAnalyze()162 pingpong.PrintInfo()163 pingpong.GetInputs_for_Singal()164 Time =time()165 pingpong.simNGames(7, 4)166 print("模拟用时: {:.1f}s".format(time()-Time))167 pingpong.PrintResult()168 else:169 pingpong =SportCompetitionAnalyze()170 pingpong.PrintInfo()171 pingpong.GetInputs_for_Double()172 Time =time()173 pingpong.simNGames(5, 3)174 print("模拟用时: {:.1f}s".format(time()-Time))175 pingpong.PrintResult()176
177 if __name__ == "__main__":178 simGameMenu()
5. 代码写好了,看一下运行效果怎么样呗 ^v^
Tips:为了使用方便,可以使用python的第三方库pyinstaller进行打包,生成exe文件,可以方便运行。
接下来,我们试一下吧~~~
① 首先要安装pyinstaller库
在cmd中输入下面一句代码,详情就不介绍了。
pip install pyinstaller
② 使用方法: pyinstaller 》具体使用方法《
注: 使用pyinstaller时,路径不能出现中文,否则出现编码出错;最好在上述代码的main函数的最后加上 input() 语句,防止程序一运行完就自动退出。
之后双击运行exe文件即可 ↓↓↓
好了,今天就分享到这里,学习去咯~~~
96>92>
python模拟足球比赛_python初体验 —— 模拟体育竞技相关推荐
- python网球比赛模拟_python初体验 —— 模拟体育竞技
python初体验 -->>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...
- python简单体育竞技模拟_python初体验 —— 模拟体育竞技
python初体验 -->>> 模拟体育竞技 一.排球训练营 1. 简介: 模拟不同的两个队伍进行排球的模拟比赛. 2. 模拟原理: 通过输入各自的能力值(Ⅰ),模拟比赛的进行( P ...
- python输入流和输出流_Python 初体验之 输入输出流
任何一个语言都有他的输入输出,对于文件的操作是非常有用的.在Java中曾经有对象序列化这么一个概念,在 Python中同样可以对对象进行序列化然后存放到文件中去,同时还能从文件中再读取出来,估计也可以 ...
- Python学习笔记:pandas初体验
Python学习笔记:pandas初体验 一.安装pandas模块 1.安装Python3.7 注意:必须勾选pip(python install package). 2.配置环境变量 3.下载 pa ...
- python从零学——scrapy初体验
2019独角兽企业重金招聘Python工程师标准>>> python从零学--scrapy初体验 近日因为一些事情,需要从网上爬取一些东西,故而想通过使用爬虫来顺便学习下强大的pyt ...
- 【python初学者日记】selenium初体验——“秒杀商品”、“清空购物车”技能养成记(一)
[python初学者日记]selenium初体验--"秒杀商品"."清空购物车"技能养成记(一) 用python解决"清空购物车".&quo ...
- python模拟足球比赛_2019-05-12 Python之模拟体育竞赛
from random import * #输出介绍信息 defprintIntro():print("这个程序模拟两个选手A和B的某种竞技比赛")print("程序运行 ...
- python简单体育竞技模拟_Python程序设计思维练习---体育竞技分析-阿里云开发者社区...
体育竞技分析:模拟N场比赛 计算思维:抽象 + 自动化 模拟:抽象比赛过程,自动模拟N场比赛,当N越大时,比赛结果分析越科学. 本次比赛规则:回合制,15分一局,先由一方发球,如胜利,则得1分并继续发 ...
- 世界足球2012java_足球比赛(JAVA简单模拟)
import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util ...
最新文章
- jqgrid 单元格绑定点击事件_自定义事件带参数的触发过程
- Logstash安装与测试
- 请教设计模式大牛们几点
- TypeScript - Interfaces
- PCA的本质----特征值分解
- 高通骁龙712移动平台正式发布!整体性能提升10%
- php 时间戳 24小时制,如何在php中添加24小时的unix时间戳?(How do I add 24 hours to a unix timestamp in php?)...
- interactive governor study for android
- OCCT命令集1(速查笔记)
- 正则表达式验证生日手机号信息
- 训练日记2019.11.11 莫队求区间众数
- 如何调整android手机正常颜色,安卓手机怎么调颜色反转
- Termux 使用常用命令
- 用java代码写的段子_网上调侃程序员的段子
- 计算机网络历年试题分析(大题待补充)
- 陌陌前端面试 - 凉面
- USB扫码枪获取数据流的实现方式
- “2012中国年度天使投资人”蔡文胜:彻底拥抱新趋势
- php 下载文件提示框,解决nginx打开php文件总是显示下载框的问题 | 学步园
- matlab中的数据导入和导出
热门文章
- friendly发音_欧路词典|英汉-汉英词典 friendly是什么意思_friendly的中文解释和发音_friendly的翻译_friendly怎么读...
- OpenHarmony轻量系统 子系统,组件那点事
- 扫黑除恶Team第四次团队作业
- 戴尔笔记本如何查看HTML代码,如何查看戴尔笔记本电脑的型号
- win10查看笔记本电脑电池健康度
- 航空管理系统c语言程序设计,2018年北京航空航天大学软件院991数据结构与C语言程序设计之C程序设计考研核心题库...
- 台式计算机c盘怎么清理空间,电脑C盘空间空间清理方法
- jzoj 1307. Jail
- Flash按键响应-键码值表
- 2019杭电多校 第七场 Kejin Player 6656(求期望值)