体育竞技分析 实例

import random


def printSummary(winA, winB):
    n = winA + winB
    print('A胜利了{}场,占比{:0.1%}'.format(winA, winA/n))
    print('B胜利了{}场,占比{:0.1%}'.format(winB, winB/n))

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

def competeOne(proA, proB):
    scoreA, scoreB = 0, 0
    serving = 'A'
    while not gameOver(scoreA, scoreB):
        if serving == 'A':
            if random.random() < proA:
                scoreA += 1
            else:
                serving = 'B'
        else:
            if random.random() < proB:
                scoreB += 1
            else:
                serving = 'A'
    return scoreA, scoreB

def competeN(proA, proB, n):
    winA, winB = 0, 0
    for i in range(n):
        scoreA, scoreB = competeOne(proA, proB)
        if scoreA > scoreB:
            winA += 1
        else:
            winB += 1
    return winA, winB


def getInfo():
    a = eval(input('请输入A的能力值(0-1之间的小数):'))
    b = eval(input('请输入B的能力值(0-1之间的小数):'))
    n = eval(input('请输入比赛场数:'))
    return a, b, n

def printInfo():
    print('这个程序将模拟A和B的某种竞技比赛')
    print('请分别输入A和B的能力值和比赛的场次')
    
def main():
    printInfo()
    proA, proB, n = getInfo()
    winA, winB = competeN(proA, proB, n)
    printSummary(winA, winB)

main()

运行结果:

这个程序将模拟A和B的某种竞技比赛
请分别输入A和B的能力值和比赛的场次
请输入A的能力值(0-1之间的小数):0.55
请输入B的能力值(0-1之间的小数):0.56
请输入比赛场数:1000
A胜利了482场,占比48.2%
B胜利了518场,占比51.8%

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你实现一个篮球比赛模拟程序。下面是一个简单的篮球比赛模拟程序的实现思路: 1. 定义两支球队,每支球队都有五名球员,每个球员有自己的能力值,如投篮、盘带、防守等。 2. 定义比赛规则,如每个球队能够投篮的次数、比赛时间等。 3. 开始比赛模拟每个球员的行动,包括传球、盘带、投篮、防守等。 4. 根据比赛规则计算每个队伍的得分,直到比赛结束。 5. 输出比赛结果。 下面是一个简单的篮球比赛模拟程序的代码实现,供你参考: ```python import random # 球员类 class Player: def __init__(self, name, shoot, dribble, defense): self.name = name self.shoot = shoot # 投篮能力值 self.dribble = dribble # 盘带能力值 self.defense = defense # 防守能力值 # 投篮 def shoot_ball(self): if random.randint(0, 100) < self.shoot: return True else: return False # 盘带 def dribble_ball(self): if random.randint(0, 100) < self.dribble: return True else: return False # 防守 def defend(self): if random.randint(0, 100) < self.defense: return True else: return False # 球队类 class Team: def __init__(self, name, players): self.name = name self.players = players self.score = 0 # 投篮 def shoot_ball(self): for i in range(5): if self.players[i].shoot_ball(): self.score += 2 return True return False # 盘带 def dribble_ball(self): for i in range(5): if self.players[i].dribble_ball(): return True return False # 防守 def defend(self): for i in range(5): if self.players[i].defend(): return True return False # 比赛类 class Game: def __init__(self, team1, team2, shoot_num, time): self.team1 = team1 self.team2 = team2 self.shoot_num = shoot_num # 每个队伍能够投篮的次数 self.time = time # 比赛时间 # 比赛开始 def start(self): t = 0 while t < self.time: # 队伍1进攻 if self.team1.dribble_ball(): if self.team1.shoot_ball(): print(self.team1.name, "得分了") else: print(self.team1.name, "未能得分") else: print(self.team1.name, "失误了") # 队伍2防守 if not self.team2.defend(): print(self.team2.name, "未能防守住") # 队伍2进攻 if self.team2.dribble_ball(): if self.team2.shoot_ball(): print(self.team2.name, "得分了") else: print(self.team2.name, "未能得分") else: print(self.team2.name, "失误了") # 队伍1防守 if not self.team1.defend(): print(self.team1.name, "未能防守住") t += 1 print("比赛结束") print(self.team1.name, "得分:", self.team1.score) print(self.team2.name, "得分:", self.team2.score) # 程序入口 if __name__ == '__main__': # 定义两支球队 player1 = Player("player1", 80, 70, 60) player2 = Player("player2", 90, 80, 70) player3 = Player("player3", 85, 75, 65) player4 = Player("player4", 85, 70, 60) player5 = Player("player5", 90, 85, 75) team1 = Team("team1", [player1, player2, player3, player4, player5]) player1 = Player("player1", 75, 65, 55) player2 = Player("player2", 85, 75, 65) player3 = Player("player3", 80, 70, 60) player4 = Player("player4", 85, 70, 60) player5 = Player("player5", 90, 85, 75) team2 = Team("team2", [player1, player2, player3, player4, player5]) # 开始比赛 game = Game(team1, team2, 20, 48) game.start() ``` 上面的代码中,我们定义了一个`Player`类和一个`Team`类来表示球员和球队。每个球员有自己的能力值,如投篮、盘带、防守等。每个球队由五名球员组成,可以进行投篮、盘带、防守等操作。比赛对象`Game`定义了两个球队、每个队伍能够投篮的次数、比赛时间等信息。在比赛开始时,我们模拟每个球队的进攻和防守,根据规则计算得分,直到比赛结束。最后输出比赛结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值