python基础学习与编程练习笔记(7)——模块化设计方法,体育竞技分析,安装脚本

  • Post author:
  • Post category:python


今天的学习目标:

模块化设计方法


相对而言,从大学开始接触C编程,除了算法,我觉得最重要的就是设计方法了,不管是类与对象,还是结构化编程,设计方法如果不明确,设计的程序结构混乱,也许按照随意设计的方法可以实现程序的功能,简单的程序尚可这样做,但是,如果一旦程序有上万行代码,这样的程序要维护,修改其源代码,就会非常的困难,指针问题,内存问题,调用问题等等都会出现

程序结构图,自顶向下

在这里插入图片描述

应用开发的四个步骤是必不可少的

1.产品定义,不仅仅需要考虑基本功能,还要考虑实用性和商用性

2.系统架构,明确应用所需要的技术是什么,要分那些模块,假如是开发物联网智能应用,就不能只考虑软件那一部分,还需要考虑电路,考虑通讯,最后到应用软件部分

3.设计与实现,开始进行编程设计,或者电路设计,还有扩展性设计,需要能够进行版本更新

4.用户体验,重中之重,这点是非常重要的,是必须要重视的,产品应用最终是服务于人,不是服务于机器

在这里插入图片描述


1.体育竞技分析

from random import random


def printIntro():  # 输出提示语
    print("这个程序模拟两个选手A和B的某种竞技比赛")
    print("程序运行需要A和B的能力值(以0到1之间的小数表示)")


def getInputs():  # 获取输入值,A和B选手能力值,模拟比赛场数
    a = eval(input("请输入选手A的能力值(0-1): "))
    b = eval(input("请输入选手B的能力值(0-1): "))
    n = eval(input("模拟比赛的场次: "))
    return a, b, n


def simNGames(n, probA, probB):  # 玩n场的赢得次数,输入能力值,输出为双方赢得次数
    winsA, winsB = 0, 0
    for i in range(n):
        scoreA, scoreB = simOneGame(probA, probB)#玩一局之后得到得分数
        if scoreA > scoreB:  # 如果A大于B的得分,则A赢
            winsA += 1
        else:#反之,B大于A的得分,则B赢
            winsB += 1
    return winsA, winsB#最后返回双方赢得次数


def gameOver(a, b):
    return a == 15 or b == 15


def simOneGame(probA, probB):  # 玩一场的胜负,输入A和B能力值,得到双方的模拟分数
    scoreA, scoreB = 0, 0
    serving = "A"
    while not gameOver(scoreA, scoreB):  # 判断一场是否玩完,如果有一方先到15分,则一场游戏结束
        if serving == "A":  # A先开局
            if random() < probA:  # 如果随机值小于A的能力,则A得分
                scoreA += 1
            else:  # A不得分就让B去开局
                serving = "B"
        else:  # B开局
            if random() < probB:  # 如果随机值小于B的能力,则B得分
                scoreB += 1
            else:  # B不得分就让A去开局
                serving = "A"
    return scoreA, scoreB


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))


def main():
    printIntro()#打印提示
    probA, probB, n = getInputs()#获得输入
    winsA, winsB = simNGames(n, probA, probB)#获得双方赢得场数
    printSummary(winsA, winsB)#打印结果

while True:
    main()


2.安装脚本


这段脚本比较简单,常用于环境配置

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("pip3 install "+lib)#使用os模块进行执行cmd命令,要注意空格,不能有遗漏
    print("Successful")        
except:
    print("Failed Somehow")#否则就输出未知原因出错



版权声明:本文为felldeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。