問題分析:體育競技分析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")