模拟体育竞技分析:
一.采用乒乓球比赛规则
一局比赛:在一局比赛中,先得11分的一方为胜方;10平后,先多得2分的一方为胜方。
一场比赛:单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜制。
二.基本要求
1.打印程序的介绍性信息式(要求包括你们学号后两位信息)
2.输入I(input):两个球员(球队)的能力值,模拟比赛的次数
3.处理P(process):模拟比赛过程
4.输出O(output):两个球员(球队)获胜的概率(输出谁做的结果截图),
5. 运用pyinstaller打包可以执行的文件。
(2)采用篮球或者足球规则模拟比赛,分析体育竞技规则,模拟比赛。(良好),基本要求同上。
(3)采用乒乓球、羽毛球、篮球、足球等规则中的一种。同时采用循环赛或者晋级赛形式,模拟分析4个队及以上体育竞技,并输出排名。建议可以采用面向对象方法或者改动上面程序。参考面向对象:https://www.cnblogs.com/wangmo/p/7751199.html
代码如下:
from random import random
def printIntro(): #打印程序介绍信息
print("51")
print("这个程序模拟两个队伍A和B的某种竞技比赛")
print("程序运行需要队伍A和队伍B的能力值(以0到1之间的小数表示)")
def getInputs(): #获得程序运行参数
a= eval(input("请输入队伍A的能力值(0-1):"))
b= eval(input("请输入队伍B的能力值(0-1):"))
n= eval(input("模拟比赛的场次:"))
return a, b, n
def simNGames(n, probA, probB): # 进行N场比赛
winsA, winsB= 0, 0
for i in range(n):
for j in range(7): #进行7局4胜的比赛
scoreA, scoreB=simOneGame(probA, probB)
if scoreA >scoreB:
winsA += 1
else:
winsB += 1
return winsA, winsB
def gameOver(a,b):
#进行抢12比赛结束
if a>=10 and b>=10:
return abs(a-b)2
#正常比赛结束
else:
return a11 or b==11
def simOneGame(probA, probB): #进行一场比赛
scoreA, scoreB= 0, 0#初始化AB的得分
serving= "A"
while not gameOver(scoreA, scoreB): #用while循环来执行比赛
if serving == "A":
if random()< probA:
scoreA += 1
else:
serving ="B"
else:
if random()< probB:
scoreB += 1
else:
serving="A"
return scoreA, scoreB
def printSummary(winsA, winsB):
n= winsA +winsB
print("竞技分析开始,共模拟{}场比赛".format(n))
print("队伍A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
print("队伍B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))
def main():
printIntro()
probA, probB, n=getInputs()
winsA, winsB=simNGames(n, probA, probB)
printSummary(winsA, winsB)
main()
标签:winsB,winsA,比赛,probB,乒乓球,py123,def,体育竞技,模拟 From: https://www.cnblogs.com/lmpy1228/p/17933453.html