【20171011】python_语言设计(6)程序设计方法与面向对象程序设计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xumeng7231488/article/details/78221092

1.程序设计方法
计算思维:给定有限资源、设定并行流程、得出最好效果
2.自顶向下的设计

from random import*
def main():
    printIntro()
    probA,probB,n=getInputs()
    winsA,winsB=simNGames(n,probA,probB)
    PrintSummary(winsA,winsB)
def printIntro():
    print('This program simulates a game between two')
    print('There are two players,A and B')
    print('Probability(a number between 0 and 1)is used')
def getInputs():
    a=eval(input('What is the prob.player A wins?'))
    b=eval(input('What is the prob.player B wins?'))
    n=eval(input('How many games to simulate?'))
    return a,b,n
def simNGames(n,probA,probB):
    winsA=0
    winsB=0
    for i in range(n):
        scoreA,scoreB=simOneGame(probA,probB)
        if scoreA>scoreB:
            winsA=winsA+1
        else:
            winsB=winsB+1
    return winsA,winsB
def simOneGame(probA,probB):
    scoreA=0
    scoreB=0
    serving="A"
    while not gameOver(scoreA,scoreB):
        if serving=="A":
            if random() < probA:
                scoreA=scoreA+1
            else:
                serving="B"
        else:
            if random() < probB:
                scoreB=scoreB+1
            else:
                serving="A"
    return scoreA,scoreB
def gameOver(a,b):
    return a==15 or b==15
def PrintSummary(winsA,winsB):
    n=winsA+winsB
    print('\nGames simulated:%d'%n)
    print('Wins for A:{0}({1:0.1%})'.format(winsA,winsA/n))
    print('Wins for B:{0}({1:0.1%})'.format(winsB,winsB/n))
main()

3.自底向上的测试:单元测试

猜你喜欢

转载自blog.csdn.net/xumeng7231488/article/details/78221092