采用排球比赛规则

该程序模拟两个队伍A和B之间的排球比赛,根据用户输入的队伍能力和比赛次数进行随机模拟。每场比赛包含五局,通过比较每局得分来决定胜负。最终,程序会输出模拟比赛的结果,包括每个队伍的胜场数和胜率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

from random import random
def printInfo():
'''
打印程序的功能信息
'''
print("\t\t这个程序模拟2个队伍A和B的排球竞技比赛!")
print("\t 程序运行需要队伍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 NGames(n, probA, probB):
'''
模拟n场比赛
'''
winA, winB = 0, 0
for _ in range(n):
scoreA, scoreB = OneGame(probA, probB)
if scoreA > scoreB:
winA += 1
else:
winB += 1
return winA, winB

def OneGame(probA, probB):
'''
模拟一场比赛,包括五局
'''
scoreA, scoreB, N = 0, 0, 0
serving = 'A'
while not GameOver(N, scoreA, scoreB):
if serving == 'A':
if random() > probA:
scoreB += 1
serving = 'B'
else:
scoreA += 1
if serving == 'B':
if random() > probB:
scoreA += 1
serving = 'A'
else:
scoreB += 1
N += 1
return scoreA, scoreB

def GameOver(N, a, b):
'''
定义赢得一局的条件
N: 当前局次(第五局为决胜局)
'''
if N <= 4:
return (a>=25 and b>=25 and abs(a-b)>=2)
else:
return (a>=15 and b>=15 and abs(a-b)>=2)

def printResult(n, winA, winB):
print("竞技分析开始,共模拟{}场比赛".format(n))
print("队伍A获胜{}场比赛,占比{:0.1%}".format(winA,winA/n))
print("队伍B获胜{}场比赛,占比{:0.1%}".format(winB,winB/n))

if __name__ == "__main__":
printInfo()
probA, probB, n = getInputs()
winA, winB = NGames(n, probA, probB)
printResult(n, winA, winB)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值