预测乒乓球队比赛成绩

 一、相关内容

模拟是用来解决现实师姐问题的重要手段和技术。计算机可以通过模拟现实世界的运行过程提供一般情况下无法获得的信息,使用计算机模拟解决问题的实例包括天气预测、飞机涉及、电影特效、核试验甚至军事对抗等,如果不采用计算机模拟,这些应用则需要机器复杂的实施过程,往往代价巨大。即使很简单的模拟也可以揭示一些困难问题的本质规律。

二、模拟比赛代码如下

"""
@author: Jun
学号:32号
"""
import math
from random import random
print("模拟乒乓球比赛,谁先得到11分,谁就胜出。如果打平,就是球数差为2时,球数多的胜出")
def printIntro():
    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):#单人:赢4局的胜场+1
    winsA ,winsB=0,0
    x,y=0,0
    for i in range(n):
        scoreA,scoreB=simOneGame(probA,probB)if scoreA>scoreB:#得分多的胜局+1
            x+=1
        else:
            y+=1
        if x==4:
            winsA +=1
            x=0
        elif y==4:
            winsB +=1
            y=0
    return winsA,winsB
def simMGames(n,probA,probB):#团队:赢3局的胜场+1
    winsA ,winsB=0,0
    x,y=0,0
    for i in range(n):
        scoreA,scoreB=simOneGame(probA,probB)if scoreA>scoreB:
            x+=1
        else:
            y+=1
        if x==3:
            winsA +=1
            x=0
        elif y==3:
            winsB +=1
            y=0
    return winsA,winsB
def gameOver(a,b):#得分差大于等于2,一场比赛就结束
    if a==11 and b<10:
        return True
    elif b==11 and a<10:
        return True
    elif a>=10 and b>=10:#打平后,先领先2球,本局就结束
        if math.fabs(a-b)==2: 
            return True
def simOneGame(probA,probB):#模拟一场比赛的得分
    scoreA,scoreB = 0,0
    serving = "A"
    while not gameOver(scoreA,scoreB):
        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()

运行成果如下:

 三、打包文件

首先,我们要用pip 下载pyinstaller,就输入pip install pyinstaller,即可下载

如图:

下载成功后,找到你要打包的文件所在的文件位置

如图,输入pyinstaller “文件名”

出现,表示打包成功了。

然后,就可以找到一个文件名为,就是带有exe的文件

这就是今天要说的内容了,后续,我们将继续深入研究python语言。

猜你喜欢

转载自www.cnblogs.com/asd516970982/p/10873003.html