一、预测乒乓球球队比赛成绩

1、乒乓球比赛规则

一局比赛:在一局比赛中,先得11分的一方为胜方;10平后,先多得2分的一方为胜方。

一场比赛:单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜制。

2、程序总体框架:

(1)打印程序的介绍信息式

(2)获得程序运行参数:probA 、probB 、n

(3)利用球员A和B的能力值,模拟n局比赛

(4)输出球员A和B获胜比赛的场次及概率

3、代码如下

 from random import random
def printInfo():
print("")
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("模拟比赛的场次: "))
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 gameOver(a,b):
if a>=10 and b>=10:
if abs(a-b)==2:
return 1
elif a<10 and b<10:
if a==11 or b==11:
return 1
else:
return 0
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):
n=winsA+winsB
print("竞技分析开始,一共模拟{}场比赛".format(n))
print("选手A获胜{}场比赛,占比{:0.1%}".format(winsA,winsA/n))
print("选手B获胜{}场比赛,占比{:0.1%}".format(winsB,winsB/n))
def main():
printInfo()
probA,probB,n=getInputs()
winsA,winsB=simNGames(n,probA,probB)
printSummary(winsA,winsB)
main()
python3: input("please input any key to exit!")

特别提醒:可以在要打包的py文件主函数添加input,不然打包后的.exe文件执行后可能会闪退

最后一行可以添加一下代码(区分python2和python3)

 python2: raw_input("please input any key to exit!")
python3: input("please input any key to exit!")

4、运行结果如下:

二、利用pyinstaller打包文件

1、先打开cmd安装pyinstaller

2、打包:需要在要打包的文件内打开命令行,输入pyinstaller -F 你的文件名

3、打包成功后找到dist文件里面就是生成后的可执行文件啦

4、点击运行,试试吧

三、采用篮球比赛规则模拟比赛

1、代码

import random
def printInfo():
    print("by 2019310143011")
    print("这个程序模拟两支球队A和B的篮球比赛")
    print("程序运行需要球队A和B的能力值(以0到1之间的小数表示)")
def getInputis():
    a = eval(input("请输入球队A的能力值(0-1): "))
    b = eval(input("请输入球队B的能力值(0-1): "))
    n = eval(input("请输入模拟场次:"))
    return a, b, n
def simOneGame(n,probA, probB):
    scoreA, scoreB = 0, 0
    serving = "A"
    a=0
    while (a<=n) or (a>n) and (scoreA==scoreB):
        if serving == "A":
            if random.random() < probA:
                scoreA += 1
            else:
                serving="B"
        else:
            if random.random() < probB:
                scoreB += 1
            else:
                serving="A"
        a+=1
    return scoreA, scoreB
def printSummary(n, scoreA, scoreB):
    print("竞技分析开始,共模拟{}场比赛".format(n))
    print("球队A获得{}分".format(scoreA))
    print("球队B获得{}分".format(scoreB))
    if scoreA>scoreB:
        char='A'
    else:
        char='B'
    print("获胜方是球队{}".format(char))
def main():
    printInfo()
    probA, probB, n = getInputs()
    scoreA, scoreB = simOneGame(n,probA, probB)
    printSummary(n, scoreA, scoreB)
main()
input("input any keyword")

2、结果如下

预测球队比赛结果及利用pyinstaller打包文件的更多相关文章

  1. 利用PyInstaller打包exe文件

    前言 平常我们通过Python写完一些小脚本之后,如果使用不频繁的话,一般会选择在DOS界面直接跑脚本,或者在IDE中运行.但当我们需要频繁使用某些脚本,或者在没有Python环境的机器上也能顺利运行 ...

  2. 利用pyinstaller 打包Python文件

    1.下载安装pyinstaller模块 cmd 命令: pip install pyinstaller cmd命令: pip list 查看自己安装的模块 2.建议把要大包的Python文件单独放到新 ...

  3. 利用pyinstaller生成exe之后,运行不能正常产生结果文件问题记录

    https://segmentfault.com/q/1010000011284617/a-1020000011493026 在此链接已解决问题,现在在这里在详细记录一次 问题描述: 利用pychar ...

  4. 利用pyinstaller将python脚本打包发布

    之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...

  5. win10环境下利用pyinstaller把python代码(.py)打包成可执行文件(.exe)

    前言 最近写了一个小小的检测程序,python写起来只需要短短一百行,可是打包起来就没有C那么容易了.下面记录一下我艰难的"打包"过程. 方法一:py2exe py2exe是一种经 ...

  6. python3.6利用pyinstaller模块打包程序为.exe可执行程序

    步骤: 1.安装pyinstaller模块:(必须在联网情况下进行) 操作原理: python3.6已经自带了pip,所以只需要在cmd中执行 pip install pyinstaller 就可以安 ...

  7. pyinstaller打包第一个wxPython程序HelloWorld

    pyinstaller 打包hello 7Mb ================= www.pyinstaller.org pip install pypiwin32 pip install pyin ...

  8. Pyinstaller打包附带DLL、图标和压缩EXE方法

    Pyinstaller打包附带DLL.图标和压缩EXE方法     转载: https://blog.csdn.net/xinyingzai/article/details/80282856   目的 ...

  9. 利用pyinstaller生成exe文件碰到的一些问题及解决方法

    在“开源图像标注工具labelme的安装使用及汉化”这篇博客中,使用pyinstaller将labelme项目的入口python文件main.py打包,生成了main.exe文件,可以在Windows ...

随机推荐

  1. 接口测试彻底弄懂Session、Cookie、Token的区别及联系hold住面试官--hold住了开3万,hold不住开3K!

    一.前言:接口测试之伤:cookie,session,token本是一家! cookie,session,token的区别早就已经成为测试同行的心病,各大论坛,各大博客,各大视频网站无不充斥着各种疑问 ...

  2. IDEA初学者实用小技巧

    创建Web项目:1.(File-->new project)JavaEnterprise-->Web Application-->Next.2.配置Tomcat服务器:右上角的Edi ...

  3. 什么是ansible

                                                                 什么是ansible l Ansible是2013年推出的一款IT自劢化和De ...

  4. egg.js部署到服务器

    关于egg.js项目部署服务器的问题 我使用的是腾讯云centos , 部署前需要确保服务器上安装了mysql, node . mysql下载:https://dev.mysql.com/downlo ...

  5. 这个案例写出来,还怕跟面试官扯不明白 OAuth2 登录流程?

    昨天和小伙伴们介绍了 OAuth2 的基本概念,在讲解 Spring Cloud Security OAuth2 之前,我还是先来通过实际代码来和小伙伴们把 OAuth2 中的各个授权模式走一遍,今天 ...

  6. Java第十六天,list接口

    List接口 1.三大特点: ① 有序.② 有索引. ③ 允许存在重复元素. 注意: ① 利用list接口的索引执行操作时,要防止索引越界引起的程序错误. 2.基本使用: 针对List接口有索引的特点 ...

  7. javascript 入门 之select2选择本地数据

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> <meta lan ...

  8. MySQL学习之路4-数据的导入导出

    数据的导入 通过数据库管理工具,先建表,然后导入表记录. 通过sql语句导入: load data local infile '表路径' into table stuscore fields term ...

  9. 37.2 net-- tcp传输 ServerSocket、Socket

    一.打开server端 package day35_net_网络编程.tcp传输; import java.io.IOException; import java.io.InputStream; im ...

  10. springboot web项目创建及自动配置分析(thymeleaf+flyway)

    @ 目录 源码分析 webjars thymeleaf thymeleaf语法 springmvc 启动配置原理 集成flyway插件 springboot 创建web项目只需要引入对应的web-st ...