一、Python設計思維和方法
實例:體育競技分析
#雙人擊球比賽:A&B,回合制,5局3勝
#開始時一方先發球,直至判分,接下來勝者發球
#球員只能在發球局得分,15分勝一局
#實例:體育競技分析.py
from random import *
def printInfo(): #打印程序的介紹信息
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 gameOver(scoreA,scoreB):#判斷比賽是否結束
if scoreA == 15 or scoreB == 15:
return True
else:
return False
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 simNGames(n,proA,proB): #程序模擬n局比賽
winsA,winsB = 0,0
for i in range(n):
scoreA,scoreB = simOneGame(proA,proB)
if scoreA > scoreB:
winsA += 1
else:
winsB += 1
return winsA,winsB
def printSummary(winsA,winsB): #輸出球員A和B獲勝比賽的場次及概率
n = winsA+winsB
print("競技分析開始,共模擬{}場比賽".format(n))
print("選手A贏得了{}場比賽,佔比{:0.1%}".format(winsA,winsA/n))
print("選手B贏得了{}場比賽,佔比{:0.1%}".format(winsB,winsB/n))
print("競技分析開始,共模擬{}場比賽".format(n))
def main():
printInfo()
proA,proB,n = getInputs()
winsA,winsB = simNGames(n,proA,proB)
printSummary(winsA,winsB)
main()
三種人類思特徵
-
邏輯思維:推理和演繹,數學爲代表,A->B B->C 可證 A->C
-
實證思維:實驗和驗證,物理爲代表
-
計算思維:設計和構造,計算機爲代表
計算思維
抽象爲=問題的計算過程,利用計算機自動化求解
計算生態
以開源項目爲組織形式,充分利用“共識原則”和“社會利他”組織人員,在競爭發展、相互依存和迅速迭代中完成技術的更新換代,形成技術的自我演化路徑
14.OS庫
os庫提過通用的、基本的操作系統交互功能 和C中的<system>類似
三個常用操作
1.路徑操作:os.path子庫以path爲入口,用於操作和處理文件路徑
os.path.abspath(path) #返回path在當前系統中的絕對路徑
#例如
#os.path.abspath("file.txt") = 'c:\\Users\\file.txt'
os.path.normpath(path) #歸一化path的表示形式,統一用\\分隔路徑
#例如
#os.path.normpath("c://Users//file.txt") = 'c:\\Users\\file.txt'
os.path.relpath(path) #返回當前程序和文件的相對路徑
os.path.dirname(path) #返回path中的目錄名稱
os.path.basename(path) #返回path中最後的文件名稱
#例如
#os.path.basename("c:\\Users\\file.txt") = 'file.txt'
os.path.join(path,*paths) #組合path和paths,返回一個路徑字符串
#例如
#os.path.join("C:/","PYE/file.txt") = "C:/PYE/file.txt"
os.path.exists(path) #判斷path對應的文件是否爲已存在的目錄是否存在 返回True或False
os.path.isfile(path) #判斷path對應的是否爲已存在的文件 返回True或False
os.path.isdir(path) #判斷path對應的是否爲已存在的目錄 返回True或False
2.進程管理:執行程序或命令command,win中返回cmd的調用返回信息
os.system(command)
#例如 執行計算器程序 返回一個0
import os
os.system("C:\\Windows\\System32\\calc.exe")
3.環境參數:獲取或改變OS中環境信息
os.chdir(path) #修改當前程序操作的路徑 os.chdir(”D:“)
os.getcwd() #返回程序的當前路徑
os.getlogin() #獲取當前系統登錄用戶名
os.cpu_count() #獲取CPU的數量
os.urandom(n) #獲得n個字節長度的隨機字符串,用於加解密運算
實例:第三方庫自動安裝腳本
#第三方庫自動安裝程序
import os
libs = {"numpy","matplotlib","pillow","sklearn","requests",\
"jieba","beautifulsoup4","wheel","networkx","sympy",\
"pyinstaller","django","flask","werobot","pyqt5",\
"pandas","pyopengl","pypdf2","docopt","pygame"}
cnt = 0
try:
for lib in libs:
os.system("pip install " + lib)
cnt += 1
print("{} is ok!".format(cnt))
print("All Successful")
except:
print("Failed Somehow")
二、Python計算生態概覽
1.從數據處理到人工智能
數據表示->數據清洗->數據統計->數據可視化->數據挖掘->人工智能
數據表示:採用合適方式用程序表達數據 -
數據清理:數據歸一化、數據轉換、異常值處理
數據統計:數據的概要理解,數量、分佈、中位數等
數據可視化:直觀展示數據內涵的方式
數據挖掘:從數據分析獲得知識,產生數據外的價值
人工智能:數據/語言/圖像/視覺等方面深度分析與決策
1.1 .Python庫之數據分析
Numpy:表達N維數組的最基礎庫
Pandas:Python數據分析高層次應用庫
SciPy:數學、科學共工程計算功能庫,基於Numpy
1.2.Python庫之數據可視化
Matplotlib:高質量的二維數據可視化庫
Seaborn:統計類數據可視化功能庫
Mayavi:三維科學數據可視化
1.3.Python庫之文本處理
PyPDF:用來處理pdf文件
NLTK:自然語言文本處理第三方庫
Python-docx:創建或更新MS Word文件的第三方庫
1.4.Python庫之機器學習
Scikit-learn :機器學習方法工具集
TensorFlow:AlphaGo後的機器學習計算框架
MXNet:基於神經網絡的深度學習計算框架
2.從Web解析到網絡空間
2.1 .Python庫之網絡爬蟲
使用程序將Web頁面中的信息爬取下來
Requests:最友好的網絡爬蟲功能庫
Scrapy:優秀的網絡爬蟲框架
pyspider:強大Web頁面爬取系統
2.2 .Python庫之Web信息獲取
Beautiful Soup:HTML和XML的解析庫 和 爬蟲庫一起應用
Re:正則表達式解析和處理功能庫
Python-Goose:提取文章類型Web頁面的功能庫
2.3 .Python庫之Web網站開發
Django:最流行的web應用框架
Pyramid:規模適中的Web應用框架
Flask:Web應用開發微框架
F < P < D
2.4.Python庫之網絡應用開發
WeRobot:微信公衆號開發框架
aip:百度AI開放平臺接口
MyQR:二維碼生成的第三方庫
正如嵩天老師所說:編程不重要,思想才重要