问题分析:体育竞技分析python
比赛规则:交换发球,开始时一方先发球,发球方获胜,发球放得 1 分,接球放不得分。发球方输,双方均不得分。如 A 发球,A 胜得 1 分,B 不得分;A 输两人都不得分。而后换 B 发球。先得 15 分胜出。django
自顶向下和自底向上flask
程序整体框架及步骤微信
程序分为四个部分,打印介绍信息,得到运行参数,模拟 n 局比赛,输出结果。模拟 n 场比赛能够分解为模拟一场比赛 n 次,同时模拟一场比赛的每局比赛须要判断当前比赛是否已经决出胜负。网络
from random import * 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("模拟比赛的场次: ")) return a, b, n def printSummary(winsA, winsB): n = winsA + winsB print("竞技分析开始,共模拟{}场比赛".format(n)) print("选手A获胜{}场比赛,占比{:.1%}".format(winsA, winsA/n)) print("选手B获胜{}场比赛,占比{:.1%}".format(winsB, winsB/n)) def gameover(scoreA, scoreB): return scoreA == 15 or scoreB == 15 def simOneGame(proA, proB): scoreA, scoreB = 0, 0 serving = "A" while not gameover(scoreA, scoreB): if serving == "A": if random() < proA: scoreA += 1 else: serving = "B" else: if random() < proB: scoreB += 1 else: serving = "A" return scoreA, scoreB 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 main(): printIntro() probA, probB, n = getInputs() winsA, winsB = simNGames(n, probA, probB) printSummary(winsA, winsB) main()
优质得三方库平台:框架
python123 平台能够学习,也整理了不少三方库,整理了国内得镜像 https://python123.io/
Python 社区 PyPI(Python Package Index),13 万个第三方库 https://pypi.org/dom
经常使用的 pip 命令机器学习
命令 | 说明 |
---|---|
pip install <第三方库名> | 安装指定的第三方库 |
pip install –U <第三方库名> | 使用 -U 标签更新已安装的指定第三方库 |
pip uninstall <第三方库名> | 卸载指定的第三方库 |
pip download <第三方库名> | 下载但不安装指定的第三方库 |
pip show <第三方库名> | 列出某个指定第三方库的详细信息 |
pip search <关键词> | 根据关键词在名称和介绍中搜索第三方库 |
pip list | 列出当前系统已经安装的第三方库 |
集成安装:结合特定 Python 开发工具的批量安装
Anaconda
https://www.continuum.io
支持近 800 个第三方库,包含多个主流工具,适合数据计算领域开发ide
安装文件下载地址
http://www.lfd.uci.edu/~gohlke/pythonlibs/
文件安装方法函数
os库提供通用的、基本的操做系统交互功能,os库是Python标准库,包含几百个函数。经常使用路径操做、进程管理、环境参数等几类
os.path 子库以 path 为入口,用于操做和处理文件路径
import os.path 或 import os.path as op
函数 | 描述 |
---|---|
os.path.abspath(path) | 返回 path 在当前系统中的绝对路径 >>>os.path.abspath( “file.txt” ) ‘C:\\Users\\Tian Song\\Python36-32\\file.txt’ |
os.path.normpath(path) | 归一化 path 的表示形式,统一用 \\ 分隔路径 >>>os.path.normpath( “D://PYE//file.txt” ) ‘D:\\PYE\\file.txt’ |
os.path.relpath(path) | 返回当前程序与文件之间的相对路径 (relative path) >>>os.path.relpath( “C://PYE//file.txt” ) ’…\\…\\…\\…\\…\\…\\…\\PYE\\file.txt’ |
– | – |
os.path.dirname(path) | 返回 path 中的目录名称 >>>os.path.dirname( “C://PYE//file.txt” ) ‘D://PYE’ |
os.path.basename(path) | 返回 path 中最后的文件名称 >>>os.path.basename( “C://PYE//file.txt” ) ‘file.txt’ |
os.path.join(path, *paths) | 组合 path 与 paths,返回一个路径字符串 >>>os.path.join( “D:/”, “PYE/file.txt” ) ‘D:/PYE/file.txt’ |
– | – |
os.path.exists(path) | 判断 path 对应文件或目录是否存在,返回 True 或 False >>>os.path.exists( “D://PYE//file.txt” ) False |
os.path.isfile(path) | 判断 path 所对应是否为已存在的文件,返回 True 或 False >>>os.path.isfile( “D://PYE//file.txt” ) True |
os.path.isdir(path) | 判断 path 所对应是否为已存在的目录,返回 True 或 False >>>os.path.isdir( “D://PYE//file.txt” ) False |
– | – |
os.path.getatime(path) | 返回 path 对应文件或目录上一次的访问时间 >>>os.path.getatime( “D:/PYE/file.txt” ) 1518356633.7551725 |
os.path.getmtime(path) | 返回 path 对应文件或目录最近一次的修改时间 >>>os.path.getmtime( “D:/PYE/file.txt” ) 1518356633.7551725 |
os.path.getctime(path) | 返回 path 对应文件或目录的建立时间 >>>time.ctime(os.path.getctime( “D:/PYE/file.txt” )) ‘Sun Feb 11 21:43:53 2018’ |
os.path.getsize(path) | 返回 path 对应文件的大小,以字节为单位 >>>os.path.getsize( “D:/PYE/file.txt” ) 180768 |
os.system(command)
import os os.system("C:\\Windows\\System32\\calc.exe") >>>0
获取或改变系统环境信息
函数 | 描述 |
---|---|
os.chdir(path) | 修改当前程序操做的路径 >>>os.chdir(“D:”) |
os.getcwd() | 返回程序的当前路径 >>>os.getcwd() ‘D:\’ |
获取操做系统环境信息
函数 | 描述 |
---|---|
os.getlogin() | 得到当前系统登陆用户名称 >>>os.getlogin() ‘Tian Song’ |
os.cpu_count() | 得到当前系统的 CPU 数量 >>>os.cpu_count() 8 |
获取操做系统环境信息
函数 | 描述 |
---|---|
os.urandom(n) | 得到 n 个字节长度的随机字符串,一般用于加解密运算 >>>os.urandom(10) b’=l>7}\xca\x7f\x14\xe3\x0b’ |
库名 | 用途 |
---|---|
NumPy | N 维数据表示和运算 |
Matplotlib | 二维数据可视化 |
PIL | 图像处理 |
Scikit-Learn | 机器学习和数据挖掘 |
Requests | HTTP 协议访问及网络爬虫 |
Jieba | 中文分词 |
Beautiful Soup | HTML 和 XML 解析器 |
Wheel | Python 第三方库文件打包工具 |
PyInstaller | 打包 Python 源文件为可执行文件 |
Django | Python最流行的 Web 开发框架 |
Flask | 轻量级 Web 开发框架 |
WeRoBot | 微信机器人开发框架 |
SymPy | 数学符号计算工具 |
Pandas | 高效数据分析和计算 |
Networkx | 复杂网络和图结构的建模和分析 |
需求:批量安装第三方库,实现自动安装?
import os libs = {"numpy","matplotlib","pillow","sklearn","requests",\ "jieba","beautifulsoup4","wheel","networkx","sympy",\ "pyinstaller","django","flask","werobot","pyqt5",\ "pandas","pyopengl","pypdf2","docopt","pygame"} try: for lib in libs: os.system("pip install " + lib) print("Successful") except: print("Failed Somehow")