羽毛球比赛规则:

1、21分制,三局两胜为佳

2、每球得分制

3、每回合中取胜的一方的一分

4、双方均为20分时,领先对方2分一方获胜

5、双方均为29分时,先到达30分一方获胜

6、一局比赛中获胜方在下一局率先开球

代码如下:

from random import random

print("学号尾数08")

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("模拟比赛的场次: "))

m = eval(input("模拟次数:"))

return a, b, n, m

def simNGames(n, probA, probB):

winsA, winsB = 0, 0

scoreA_ls=[]

scoreB_ls=[]

for i in range(n):

scoreA, scoreB = simOneGame(probA, probB)

scoreA_ls.append(scoreA)

scoreB_ls.append(scoreB)

if scoreA > scoreB:

winsA += 1

else:

winsB += 1

return winsA, winsB,scoreA_ls,scoreB_ls

def gameOver(a,b):

if(a>=20 or b>=20):

if(abs(a-b)==2 and a<=29 and b<=29):

return True

else:

return a==30 or b==30

else:

return False

def simOneGame(probA, probB):

scoreA, scoreB = 0, 0

serving = "A"

while not gameOver(scoreA, scoreB):

if serving == "A":

if random() < probA:

scoreA += 1

else:

serving="B"

else:

if random() < probB:

scoreB += 1

else:

serving="A"

return scoreA, scoreB

def printSummary(winsA, winsB,m,scoreA_ls,scoreB_ls):

n = winsA + winsB

print("模型模拟次数{}".format(m))

print("竞技分析开始,共模拟{}场比赛".format(n))

print("A选手各场次得分比分:")

print(scoreA_ls)

print("B选手各场次得分比分:")

print(scoreB_ls)

print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))

print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB, winsB/n))

def main():

printIntro()

probA, probB, n, m= getInputs()

for i in range(m):

winsA, winsB,scoreA_ls,scoreB_ls = simNGames(n, probA, probB)

printSummary(winsA, winsB,m,scoreA_ls,scoreB_ls)

main()

运行结果如下:

学号尾数08

这个程序模拟两个选手A和B的羽毛球竞技比赛

程序运行需要A和B的能力值(以0到1之间的小数表示)

请输入选手A的能力值(0-1): 0.4

请输入选手B的能力值(0-1): 0.3

模拟比赛的场次: 6

模拟次数:8

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[30, 20, 30, 30, 30, 30]

B选手各场次得分比分:

[15, 18, 11, 11, 7, 18]

选手A获胜6场比赛,占比100.0%

选手B获胜0场比赛,占比0.0%

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[21, 30, 30, 30, 21, 30]

B选手各场次得分比分:

[19, 23, 19, 13, 23, 12]

选手A获胜5场比赛,占比83.3%

选手B获胜1场比赛,占比16.7%

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[18, 30, 30, 30, 30, 22]

B选手各场次得分比分:

[20, 20, 15, 18, 14, 20]

选手A获胜5场比赛,占比83.3%

选手B获胜1场比赛,占比16.7%

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[30, 30, 30, 30, 30, 30]

B选手各场次得分比分:

[7, 10, 18, 8, 17, 20]

选手A获胜6场比赛,占比100.0%

选手B获胜0场比赛,占比0.0%

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[20, 21, 21, 23, 21, 30]

B选手各场次得分比分:

[18, 19, 19, 25, 19, 23]

选手A获胜5场比赛,占比83.3%

选手B获胜1场比赛,占比16.7%

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[30, 30, 30, 30, 30, 26]

B选手各场次得分比分:

[12, 20, 18, 4, 13, 28]

选手A获胜5场比赛,占比83.3%

选手B获胜1场比赛,占比16.7%

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[18, 30, 30, 18, 30, 30]

B选手各场次得分比分:

[20, 21, 15, 20, 18, 19]

选手A获胜4场比赛,占比66.7%

选手B获胜2场比赛,占比33.3%

模型模拟次数8

竞技分析开始,共模拟6场比赛

A选手各场次得分比分:

[30, 30, 30, 20, 28, 30]

B选手各场次得分比分:

[15, 13, 14, 18, 26, 21]

选手A获胜6场比赛,占比100.0%

选手B获胜0场比赛,占比0.0%

python求打几场比赛-用python实行羽毛球比赛规则。相关推荐

  1. python求5的阶乘_用python分享5的阶乘 (咋办)用python计算阶乘

    (急)用python计算阶乘 小编需要用python列出一个阶乘的表. 小编不太清楚python的阶乘公式 以阶乘reduce为逐次操作list里的每项,接收的参数为 2个,最后返回的为一个结果 &g ...

  2. python编程竞赛规则_用python实行羽毛球比赛规则。

    羽毛球比赛规则: 1.21分制,三局两胜为佳 2.每球得分制 3.每回合中取胜的一方的一分 4.双方均为20分时,领先对方2分一方获胜 5.双方均为29分时,先到达30分一方获胜 6.一局比赛中获胜方 ...

  3. python求向量函数的雅可比矩阵_在python Numpy中求向量和矩阵的范数实例

    np.linalg.norm(求范数):linalg=linear(线性)+algebra(代数),norm则表示范数. 函数参数 x_norm=np.linalg.norm(x, ord=None, ...

  4. python 求均值_数据分析:寻找Python最优计算性能

    1.场景描述 在数据统计分析过程中,求累计值(总和)是最常用的统计指标之一,市面上的各种流行数据库均支持的查询方式基本如下: select sum(c) from table_name; 当数据量在小 ...

  5. python 求函数最大值_遗传算法与Python图解

    import matplotlib.pyplot as plt import numpy as np import random import pandas as pd 遗传算法求函数最值 遗传算法的 ...

  6. python求均值标准差不用numpy_【Python】不用numpy用纯python求极差、平均数、中位数、众数与方差,python的打印...

    python作为数据分析的利器,求极差.平均数.中位数.众数与方差是很常用的,然而,在python进行统计往往要使用外部的python库numpy,这个库不难装,然而,如果单纯只是求极差.平均数.中位 ...

  7. python求向量函数的雅可比矩阵_使用python,pytorch求海森Hessian矩阵

    考虑一个函数$y=f(\textbf{x}) (R^n\rightarrow R)$,y的Hessian矩阵定义如下: 考虑一个函数:$$f(x)=b^Tx+\frac{1}{2}x^{T}Ax\\其 ...

  8. python求123逆序数_应用Python来计算排列中的逆序数个数

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数.一个排列中所有逆序总数叫做这个排列的逆序数.也就是说,对于 ...

  9. python求成绩平均值_(生活)使用Python计算学生成绩平均值

    今天发现了一个比较复杂的成绩文本,个人并不想手动去除其中的空格以及其他数据,于是就使用了python中的正则表达式来计算 下面放的是这次的成绩文本,文本文件名我命名为a.txt 433 91 89 4 ...

最新文章

  1. Android UI体验之全屏沉浸式透明状态栏效果
  2. Java笔记14:泛型初探
  3. 去掉一个linux的ip,linux – iptables删除除一个IP之外的所有传入ICMP请求
  4. 多线程处理list_数组两元素的最大差:从暴力到多线程
  5. VIVO X1手机通过USB连接电脑访问tomcat
  6. 《盘点那些秀你一脸的秒天秒地算法》(1)
  7. 嵌入式电路设计(最小系统)
  8. EXTJS学习系列提高篇:第八篇(转载)作者殷良胜,制作树形菜单之二
  9. 计算机程序领域专利撰写,干货 | 计算机软件专利撰写模板
  10. 二极管整流和同步整流区别
  11. 基于arduino的WiFi无线传输
  12. Java生成csv文件设置文本格式
  13. Linux ssh 文件 authorized_keys 和 known_hosts
  14. FPGA电源设计方案
  15. 使用HTML语言和CSS开发商业站点
  16. ant如何形成时间轴和图库_安利会员如何办理?办理安利会员的好处是什么?
  17. 游戏设计与开发_Unity游戏开发——设计模式概述
  18. VB 共享软件防破解设计技术初探(三)
  19. linux替换文件中内容
  20. DSP数据手册和技术参考手册的使用

热门文章

  1. java 挡泥板,Canyon推出Grail AL铝合金Gravel Bike
  2. 删除所有奇数顺序表c语言,如何删除列表中的所有奇数序数项?
  3. Redis实现在线用户列表(按登录时间排序、可查询、踢人)
  4. c调用python第三方包_cbillington_Python包维护者_第三方库作者_PyPI项目模块Package - Python中文网...
  5. C# 接口和抽象类的区别和使用场景
  6. 一个简单的ADFR的re-docking教程
  7. 极验滑块验证码破解与研究(二):缺口图片还原
  8. 《JSP程序设计》手机销售网后台设计
  9. GB28181国标2016版本协议文档(正式版)解读(三)
  10. 【面试】JAVA三年经验面试题