zoukankan      html  css  js  c++  java
  • 体育竞技分析

                                                  体育竞技分析

    一、模拟体育竞技比赛1(羽毛球)

    1、比赛规则:

      

    2、实现代码:

      

     1 #体育竞技
     2 from random import random
     3 def printInfo():
     4     print("这个程序模拟两个选手A和B的羽毛球竞技比赛")
     5     print("程序需要两个选手的能力值0-1") 
     6     print("规则:三局两胜--21分制")
     7     print("作者:一枚小可爱--08")
     8 
     9 def getInput():
    10     a = eval(input("请输入选手A的能力值(0-1):"))
    11 
    12     b = eval(input("请输入选手B的能力值(0-1):"))
    13 
    14     m=eval(input("比赛的局数:"))
    15 
    16     n = eval(input("模拟比赛的场次:"))
    17     return a,b,m,n
    18 
    19 
    20 def printSummary(winsA,winsB):
    21 
    22     n = winsA + winsB
    23 
    24     print("竞技分析开始,共模拟{}场比赛".format(n))
    25 
    26     print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))
    27           
    28     print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))
    29 
    30 
    31 def simNGames(m,n,probA,probB):
    32 
    33     winsA,winsB = 0,0
    34     wa,wb=0,0
    35 
    36     for i in range(n):
    37         for i in range(m):
    38 
    39             scoreA,scoreB = simOneGame(probA,probB)
    40 
    41             if scoreA > scoreB:
    42                  wa += 1
    43             else:
    44                 wb += 1
    45 
    46             if wa==2:
    47                 winsA+=1
    48                 wa,wb=0,0
    49                 break
    50             if wb==2:
    51                 winsB+=1
    52                 wa,wb=0,0
    53                 break
    54  
    55 
    56     return winsA,winsB
    57         
    58     
    59 def simOneGame(probA,probB):
    60 
    61     scoreA,scoreB = 0,0
    62 
    63     serving = "A"
    64     while not gameOver(scoreA,scoreB):
    65 
    66         if serving == "A":
    67 
    68             if random() < probA:
    69 
    70                 scoreA += 1
    71             else:
    72                 serving = "B"
    73         else:
    74             if random() < probB:
    75                 scoreB += 1
    76             else:
    77                 serving = "A"
    78     return scoreA,scoreB
    79 def gameOver(a,b):
    80     if(a>=20 or b>=20):
    81         if(abs(a-b)==2 and a<=29 and b<=29):
    82             return True
    83         else:
    84             return a==30 or b==30
    85     else:
    86         return False
    87     
    88 def main():
    89     printInfo()
    90     probA,probB,m,n = getInput()
    91     winsA,winsB = simNGames(m,n,probA,probB)
    92     printSummary(winsA,winsB)
    93  
    94 main()    

    运行结果如下:

      

    3、用pyinstaller打包文件

    使用pyinstaller打包,把Python脚本打包成可执行的文件。即把.py文件打包成.exe文件

    我的文件路径为: C:UsersAdministrator.spyder-py3 emp.py

    操作如下:

      1、通过cmd命令

      2、输入pyinstaller  C:UsersAdministrator.spyder-py3 emp.py(即pyinstaller+文件路径)

    运行结果如下:

      

    有运行结果知:生成的文件放在了"C:UsersAdministratordist emp"中

    如图所示:

        

    打开这个文件后,所示如下:

      

    可以在这个页面里输入哦~~~~

    二、模拟体育竞技比赛2(篮球)

    1、比赛规则:

      

      

  • 相关阅读:
    字符串匹配算法
    密码学概述
    java实现的一道编程题
    java实现二进制的加法
    递归实现任意个字符的排列组合
    java中的断言
    java中的可变参
    SSH框架之Spring
    简单工厂模式
    String ,StringBuilder,StringBuffer
  • 原文地址:https://www.cnblogs.com/sun0618-/p/10868603.html
Copyright © 2011-2022 走看看