06 python基础--编程思想

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%

猜你喜欢

转载自blog.csdn.net/qq_25672165/article/details/85054214