from random import *
STUDENT_ID_LAST_TWO = "31"
def printIntro():
print(f"篮球比赛模拟程序 - 学生学号后两位:{STUDENT_ID_LAST_TWO}")
print("此程序用于模拟两个球员(或球队)之间的篮球比赛")
print("需要输入每个球员的能力值(0到1之间的小数)以及模拟比赛的次数")
def getInputs():
a = float(input("请输入球员A的能力值(0-1): "))
b = float(input("请输入球员B的能力值(0-1): "))
n = int(input("模拟比赛的场次: "))
return a, b, n
def simNGames(n, probA, probB):
winsA, winsB = 0, 0
for i in range(n):
scoreA, scoreB = simOneGame(probA, probB)
if scoreA > scoreB:
winsA += 1
else:
winsB += 1
return winsA, winsB
def simOneGame(probA, probB):
scoreA, scoreB = 0, 0
serving = "A"
while scoreA < 50 and scoreB < 50: # 假设先达到50分者获胜
if serving == "A":
if random() < probA:
scoreA += 2 # 假设每次得分为2分
serving = "B"
else:
if random() < probB:
scoreB += 2 # 假设每次得分为2分
serving = "A"
return scoreA, scoreB
def printSummary(winsA, winsB, n):
print("竞技分析开始,共模拟{}场比赛".format(n))
total_games = winsA + winsB
win_rate_A = winsA / total_games if total_games > 0 else 0
win_rate_B = winsB / total_games if total_games > 0 else 0
print("球员A获胜{}场,占比{:0.2%}".format(winsA, win_rate_A))
print("球员B获胜{}场,占比{:0.2%}".format(winsB, win_rate_B))
def main():
printIntro()
probA, probB, n = getInputs()
winsA, winsB = simNGames(n, probA, probB)
printSummary(winsA, winsB, n)
if __name__ == "__main__":
main()