数字类型及操作:
字符串类型及操作:
程序的分支结构:
程序的循环结构:
函数的定义与使用:
代码复用与函数递归
集合类型及操作:
序列类型及操作:
字典类型及操作:
文件的使用:
一维数据的格式化和处理:
二维数据的格式化和处理:
自顶向下程序设计
#体育竞技分析,主要学习自顶向下编程的方法会拆解成几个小模块分别实现再聚合,但是实现起来还是得自底向上
# 需要引入库
from random import random
#便于交互 打印提示语
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获胜{}场比赛,占比{:0.1%}".format(winsA, winsA/n))
print("选手B获胜{}场比赛, 占比{:0.1%}".format(winsB, winsB/n))
#一场比赛over就是得分15
def gamesOver(a, b):
return a == 15 or b == 15
#模拟一次比赛
def gameOneGame(probA, probB):
scoreA, scoreB = 0, 0
serving = "A"
while not gamesOver(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
#模型N次比赛
def simNGames(n, probA, probB):
winsA, winsB = 0, 0
for i in range(n):
scoreA, scoreB = gameOneGame(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()
举一反三:
可否通过胜负差别别求得能力差别呢?
我们上面是通过能力差别求得胜负差别、
计算思维= 抽象+自动
计算思维真的很有用》。。。。。
因为API是顶层设计,而生态是野蛮生长。
https://pypi.org/
总结:
本内容只介绍上面是三个所对应的函数:
记得几个?
也可以给参数 比如打开画板 在画板程序的后面 空格 然后打开对应的图片:
以上20个库我们怎么用程序安装呢?
#第三方库安装插件
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("install Faild")
在IDE下写好,然后在cmd中找到相应路径运行py程序
举一反三: