6.1 计算思维
人类思维特征:逻辑思维->实证思维->计算思维
基于计算机强大的算力及海量数据,以计算机程序设计以主要实现的手段
计算思维实例:汉诺塔、圆周率计算
6.2 计算生态
计算生态特点:竞争发展、相互依存、迅速更迭
python语言提供>13万个第三方库,且同一功能具有2个以上第三方库
优质的计算生态:https://www.python123.io
6.3 用户体验
进度展示、多步提示、异常处理、日志文件、帮助信息
6.4 基本的程序设计模式
从IPO开始、自顶向下、模块化、配置化
6.5 应用开发的步骤
产品定义:理解和明确定义需求(产品),考虑商业角度
系统架构:关注数据流、模块化、体系架构
设计与实现:编码设计
用户体验:用户至上
6.6 模块化、自顶向下设计实例
# -*- coding: utf-8 -*-
from random import random
import encodings
## 打印信息
def PrintIntro():
print('根据两个选手的能力值,模拟两个选手的n场比赛')
## 获取参数
def getInputs():
a = eval(input('请输入选手A的能力值a:'))
b = eval(input('请输入选手B的能力值b:'))
n = eval(input('请输入比赛的总场次n:'))
return a,b,n
## 模拟n场比赛
def simNgame(n,a,b):
wina,winb = 0,0
for i in range(n):
scoreA, scoreB = simoneGame(a, b)
if scoreA>scoreB:
wina += 1
else:
winb += 1
return wina,winb
## 定义游戏结束条件
def gameover(e,f):
return e== 15 or f == 5
## 定义首球由谁发
def firstHit():
if random() < 0.5:
st = 'A'
else:
st = 'B'
return st
## 模拟一场比赛的得分
def simoneGame(a,b):
scoreA,scoreB = 0,0
st = 'B'
while not gameover(scoreA,scoreB):
if st == 'A':
if random()< a:
scoreA +=1
else:
st = 'B'
else:
if random()< b:
scoreB +=1
else:
st = 'A'
return scoreA,scoreB
## 打印输出
def PrintSummary(wina,winb):
n = wina + winb
print('竞技分析开始,共进行了{}场比赛'.format(n))
print('选手A获胜{}场,占比{:0.1%}'.format(wina,wina/n))
print('选手A获胜{}场,占比{:0.1%}'.format(winb,winb/n))
## 主函数
def main():
PrintIntro()
a,b,n = getInputs()
wina,winb = simNgame(n,a,b)
PrintSummary(wina,winb)
main()
##输出
根据两个选手的能力值,模拟两个选手的n场比赛
请输入选手A的能力值a:0.3
请输入选手B的能力值b:0.4
请输入比赛的总场次n:1000
竞技分析开始,共进行了1000场比赛
选手A获胜223场,占比22.3%
选手A获胜777场,占比77.7%