python循环乒乓球赛模拟

from random import random

def printTntro():
    print("typist :  23")
    print("模拟比赛")
    print("需要A和B的能力值(以0到1之间的小数表示)")
def getInputs():
    a = eval(input("请输入A的能力值(0-1):"))
    b = eval(input("请输入B的能力值(0-1):"))
    return a,b

def printSummary(winsA,winsB):
    if winsA==2:
        print("A获胜")
        return True
    else:
        print("B获胜")
        return False

def gameOver(a,b):
    return a==11 or b==11

def simOneGame(probA,probB):
    scoreA,scoreB = 0,0
    s1,s2 = 0,0
    serving = 'A'
    while not gameOver(scoreA,scoreB):
        if scoreB==scoreA and scoreA==10:
            while not s1==2 or s2==2:
                if serving == 'A':
                    if random()<probA:
                        serving = 'B'
                    else:
                        s2 += 1
                else:
                    if random()<probB:
                        serving = 'A'
                    else:
                        s1 += 1
        if serving == 'A':
            if random()<probA:
                serving = 'B'
            else:
                scoreB += 1
        else:
            if random()<probB:
                serving = 'A'
            else:
                scoreA += 1
    if s1==2:
        s2=0
    else:
        s1=0
    return scoreA+s1,scoreB+s2

def simNGames(probA,probB):
    winsA,winsB = 0,0
    for i in range(3):
        scoreA,scoreB = simOneGame(probA,probB)
        print("第{}局".format(i+1))
        print("{} --- {}".format(scoreA,scoreB))
        if scoreA>scoreB:
            winsA += 1
            if winsA==2:
                break
        else:
            winsB += 1
            if winsB==2:
                break
    return winsA,winsB

class player:
    def __init__(self,name,prob):
        self.name = name
        self.prob = prob

def gameBetwen(pA,pB):
    print('参赛双方:'+pA.name + '-' + pB.name)
    winsA, winsB = simNGames(pA.prob, pB.prob)
    if printSummary(winsA, winsB):
        return True
    else:
        return False

def main():
    printTntro()
    playerA = player(input('输入该选手名字:'), eval(input('输入该选手的能力值:')))
    playerB = player(input('输入该选手名字:'), eval(input('输入该选手的能力值:')))
    playerC = player(input('输入该选手名字:'), eval(input('输入该选手的能力值:')))
    playerD = player(input('输入该选手名字:'), eval(input('输入该选手的能力值:')))
    players = [playerA,playerB,playerC,playerD]
    scores = [0,0,0,0]
    for i in range(4):
        for j in range(4-i-1):
            if gameBetwen(players[i],players[i+j+1]):
                scores[i] += 1
            else:
                scores[i+j+1] += 1
    print('总分如下:')
    for score in scores:
        print(score)
main()

 

posted @ 2020-11-23 00:39  我的人生不止一部戏  阅读(204)  评论(0)    收藏  举报