预测球队比赛结果及利用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 ...
随机推荐
- A 密码锁
时间限制 : - MS 空间限制 : - KB 评测说明 : 1s,128m 问题描述 何老板有一把奇特的密码锁.密码锁上有n个数字(范围0到9)排成一排.密码锁上有两个按钮:每按一次1号按钮, ...
- Docker常用yml
GitLib version: '3.1' services: web: image: 'twang2218/gitlab-ce-zh:11.0.5' restart: always hostname ...
- Java8 学习笔记--函数式接口
通过之前的函数式接口与lambda表达式的关系那篇文章,大家应该对函数式接口有了一定的了解了,在Java中它是lambda表达式的基础,没有函数式接口就没有办法使用lambda表达式. 函数式接口如此 ...
- HDU1074:Doing Homework(状压DP)
Doing Homework Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- Scratch 第2课淘气男孩儿
素材及视频下载 链接:https://pan.baidu.com/s/1qX0T2B_zczcLaCCpiRrsnA提取码:xfp8
- 关于Git我们不得不知道的事(一)
一.什么是Git? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git可以协助我们很方便的管理我们的项目,我们随时可以找回(或者回到)我们之前任何一个时刻的项目:还可以让同事或者开发小 ...
- 数据科学 R语言速成
文章更新于:2020-03-07 按照惯例,需要的文件附上链接放在文首: 文件名:R-3.6.2-win.exe 文件大小:82.4M 下载链接:https://www.lanzous.com/i9c ...
- python 函数--装饰器
一.装饰器 1.为什么要用装饰器? 装饰器的功能:在不修改原函数以及调用方式的情况下对原函数功能进行扩展. 二.开放和封闭原则 1.对扩展是开放的 2.对修改是封闭的 三.装饰器的固有结构 impor ...
- openwrite使用说明
访问官网https://openwrite.cn/注册登录 访问https://openwrite.cn/plugin-chrome/ 下载插件和安装插件"OpenWrite助手1.1.4& ...
- google protobuf c++ 反射
const Descriptor *desc = DescriptorPool::generated_pool()->FindMessageTypeByName(msg_name); asser ...