预测球队比赛结果及利用pyinstaller打包文件
一、预测乒乓球球队比赛成绩
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打包文件的更多相关文章
- 利用PyInstaller打包exe文件
前言 平常我们通过Python写完一些小脚本之后,如果使用不频繁的话,一般会选择在DOS界面直接跑脚本,或者在IDE中运行.但当我们需要频繁使用某些脚本,或者在没有Python环境的机器上也能顺利运行 ...
- 利用pyinstaller 打包Python文件
1.下载安装pyinstaller模块 cmd 命令: pip install pyinstaller cmd命令: pip list 查看自己安装的模块 2.建议把要大包的Python文件单独放到新 ...
- 利用pyinstaller生成exe之后,运行不能正常产生结果文件问题记录
https://segmentfault.com/q/1010000011284617/a-1020000011493026 在此链接已解决问题,现在在这里在详细记录一次 问题描述: 利用pychar ...
- 利用pyinstaller将python脚本打包发布
之前写了一个小工具,将excel配置表转换为json.xml.lua等配置文件.最近在学习egret,正好需要转换配置文件,刚好就用上了.然而当我想把工具拷到工作目录时,就发愁了.之前我为了方便扩展, ...
- win10环境下利用pyinstaller把python代码(.py)打包成可执行文件(.exe)
前言 最近写了一个小小的检测程序,python写起来只需要短短一百行,可是打包起来就没有C那么容易了.下面记录一下我艰难的"打包"过程. 方法一:py2exe py2exe是一种经 ...
- python3.6利用pyinstaller模块打包程序为.exe可执行程序
步骤: 1.安装pyinstaller模块:(必须在联网情况下进行) 操作原理: python3.6已经自带了pip,所以只需要在cmd中执行 pip install pyinstaller 就可以安 ...
- pyinstaller打包第一个wxPython程序HelloWorld
pyinstaller 打包hello 7Mb ================= www.pyinstaller.org pip install pypiwin32 pip install pyin ...
- Pyinstaller打包附带DLL、图标和压缩EXE方法
Pyinstaller打包附带DLL.图标和压缩EXE方法 转载: https://blog.csdn.net/xinyingzai/article/details/80282856 目的 ...
- 利用pyinstaller生成exe文件碰到的一些问题及解决方法
在“开源图像标注工具labelme的安装使用及汉化”这篇博客中,使用pyinstaller将labelme项目的入口python文件main.py打包,生成了main.exe文件,可以在Windows ...
随机推荐
- 运行npm安装wepy2踩坑error EEXIST 问题
windows 10安装wepy2 以前用过wepy1,现在要学习wepy2,运行以下命令出错 npm install @wepy/cli -g # 全局安装 WePY CLI 工具 打开log文件, ...
- GO gRPC教程-环境安装(一)
前言 gRPC 是一个高性能.开源和通用的 RPC 框架,面向移动和 HTTP/2 设计,带来诸如双向流.流控.头部压缩.单 TCP 连接上的多复用请求等特.这些特性使得其在移动设备上表现更好,更省电 ...
- 浅谈动态规划(Dynamic Programming)
利用Leetcode#198打劫家舍 浅谈动态规划 Origin:https://leetcode-cn.com/problems/house-robber/ 题目本身不难,就是一个动态规划的问题.在 ...
- Iscsi技术
Iscsi技术 1案例1:发布iSCSI网络磁盘 1.1问题 本 ...
- Linux服务器架设篇,DNS服务器(一),基础知识
一.端口 DNS监听端口 注意: DNS通常是以UDP协议来进行数据传输协议的,但是若没有办法查询到完整的信息是.DNS的daemon是named,它会启动TCP和UDP的53端口,所以启用DSN服务 ...
- BMI的Python实现
str1 = float(input('请输入您的身高(单位:米):')) # input默认转化为字符串型 用float转化为浮点型 str2 = float(input('请输入您的体重(单位:千 ...
- 计算机网络-CSMA/CD
假定1km长的CSMA/CD网络的传输速率为1Gbit/s.设信号在网络上的传播速率为200000km/s,则能够使用此协议的最短帧长是? 答案:2×104bit/s 解析:C=2×105km/s,即 ...
- 动态网页D-html
BOM(Browser Object Model)浏览器对象模型 window对象(window – 代表浏览器中打开的一个窗口) 1.alert()方法 – 定义一个消息对话框 window.ale ...
- redis集群搭建-3.0/4.0版本
1. Redis的安装 1.1. Redis的安装 Redis是c语言开发的. 安装redis需要c语言的编译环境.如果没有gcc需要在线安装.yum install gcc-c++ 安装步骤: 第 ...
- 动态规划_01背包_从Dijikstra和Floyd入手,彻底理解01背包
dp一直是短板,现在从最基础的地方开始补 给定背包总容量 M ,n个商品选择,分别有价值vi,占量wi,从中取商品放入背包,令.容量和W=Σwi不超过M,令背包中的价值和V=Σvi最大 然后取法有很多 ...