這是模擬體育競技的代碼
from random import random
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 printSummary(winsA,winsB):
n = winsA + winsB
print("雙人擊球競技分析開始!")
print("共模擬{}場比賽!\n{:*^30}\n選手A獲勝{}場比賽,占比{:0.1%}\n選手B獲勝{}場比賽,占比{:0.1%}".format(n,"比賽結果",winsA,winsA/n,winsB,winsB/n))
def simNGames(n,proA,proB):
winsA , winsB = 0 , 0
for i in range(n):
scoreA,scoreB = simOneGame(proA,proB)
if scoreA > scoreB :
winsA += 1
else:
winsB += 1
return winsA,winsB
def simOneGame(proA,proB):
scoreA,scoreB = 0,0
serving = "A"
while not gameOver(scoreA,scoreB):
if serving == "A":
if random() < proA:
scoreA += 1
else:
serving = "B"
else:
if random() < proB:
scoreB += 1
else:
serving = "A"
return scoreA,scoreB
def gameOver(a,b):
return a==15 or b==15
def main():
printIntro()
proA,proB,n = getInputs()
winsA,winsB = simNGames(n,proA,proB)
printSummary(winsA,winsB)
main()
uj5u.com熱心網友回復:
試著加一個while回圈,贏一局獲得一分,
其中一方獲得三分跳出回圈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/109431.html
