首页 > 编程语言 > 详细

Python学习(七)

时间:2021-04-14 00:03:18      阅读:36      评论:0      收藏:0      [点我收藏+]

python程序设计方法

方法论:理解并掌握一批python程序设计思维
实践能力:会编写更有设计感的程序。

实例13:体育竞技分析

  1. 体育竞技分析:如何科学分析体育竞技比赛?
    输入:球员水平;
    输出:比赛可能的结果;

  2. 计算思维:模拟体育比赛,n越大结果越科学。

  3. 比赛规则:双人击球比赛,五局三胜,开始时一方先发球,直至判分,接下来胜者发球,球员只在发球局得分,先到15分则获胜。

自顶向下的设计:把大问题分解为小问题。
自底向上的执行:逐步执行单元,逐步组装成复杂模块再测试。

from random import random
def printIntro():
    print("这个程序模拟两个选手A和B的某种竞技比赛")
    print("程序需要获得A和B的能力值(以零到一之间的小数表示)")

def getInputs():
    a = eval(input("请输入选手A的能力值:"))
    b = eval(input("请输入选手B的能力值:"))
    n = eval(input("请输入需要模拟比赛的次数"))
    return a, b, n
    
def simNgames(n, proa, prob):
    wina = 0
    winb = 0
    for i in range(n):
        scorea, scoreb = simOnegame(proa, prob)
        if scorea > scoreb:
            wina +=1
        else:
            winb +=1
    return wina, winb

def simOnegame(proa, prob):
    scorea, scoreb = 0, 0
    while not (scorea==3 or scoreb==3):
        if simOneroundgame(proa, prob):
            scorea += 1
        else:
            scoreb += 1
    return scorea, scoreb

def simOneroundgame(proa, prob):
    scorea, scoreb = 0, 0
    serving = ‘a‘    
    while not (scorea==15 or scoreb==15):
        if serving == ‘a‘:
            if proa > random():
                scorea += 1
            else:
                serving = ‘b‘
        else:
            if prob > random():
                scoreb += 1
            else:
                serving = ‘a‘
    return scorea > scoreb

def printSummary(wina, winb):
    n = wina + winb
    print("竞技分析开始,共模拟{}场比赛".format(n))
    print("选手A获得{}场比赛胜利,占比{:.1%}".format(wina, wina/n))
    print("选手B获得{}场比赛胜利,占比{:.1%}".format(winb, winb/n))

def main():
    printIntro()
    proa, prob, n = getInputs()
    wina, winb = simNgames(n, proa, prob)
    printSummary(wina, winb)

main()

我这里把五局三胜的规则补充了出来,会发现差距更大了,因为这个游戏对发球一方显然太过有利,而又固定由A来发球,从现实的比赛来分析,一旦A的能力压制了B恐怕B很难取胜。所以这个游戏规则不太公平啊。
关于课上提出的从结果反推能力值之差的问题,我认为仍然用当前函数的情况下,写一个迭代函数,确定精度,做一个固定步长的变化,不断输入ab的能力值,通过是否达到精度来判断是否跳出迭代,这样应该能得到比较好的结果。

python程序设计思维

本节的内容较为抽象。

计算思维与程序设计

逻辑思维、实证思维、计算思维。
抽象和自动化:抽象问题的计算过程,用计算机进行计算的自动化。
逻辑思维更多是逻辑推理,而计算通常都是模拟计算过程。
计算思维根植于计算机强大的算力以及海量数据,计算思维不关心因果的公式,更注重过程的模拟和描述。
抽象是对问题模型的构建,自动化是对问题的实现,

计算生态与python语言

计算生态:没有顶层设计,以功能为目的。库之间广泛调用,社区庞大。库通过野蛮生长到紫髯选择。
编程不再是算法,而是搭积木,运用计算生态。

用户体验和软件产品

关心功能实现只是第一步,关心用户体验,才是目的。
方法1: 进度显示,提示用户还有多少操作要执行
方法2:异常处理,一般要对用户输入的合规性进行检查,否则程序就会报错。
方法3:打印输出,设计日志文件,打印帮助信息等等。

基本的程序设计模式

IPO:程序需要有输入,处理,输出。
自顶向下设计:不断划分程序的设计功能
模块化设计:把程序分为不同模块,方便设置模块复用
配置化设计:将程序变为引擎,把配置变为配置文件编写,关键在于接口设计。

产品定义:对用户的需求的理解。
系统架构:在应用中的数据流动,具体的设计与实现。
用户体验:从用户的角度来考虑设计。

python第三方库的安装

Pypi: Python Package Index
利用Pypi的计算生态找到适合自己的第三方库。

第三方库的pip安装方法

pip安装方法:直接用命令行输入pip 指令进行安装
主要参数:

参数 功能
pip install <库名称> 安装相应的第三方库
pip install -u <库名称> 升级相应的第三方库
pip uninstall <库名> 卸载相应的第三方库
pip download <库名> 下载并不安装相应的第三方库
pip show <库名> 展示库的详细信息
pip search <关键词> 搜索相应的关键字
pip list 列出已安装的第三方库

第三方库的集成安装方法

Anaconda主要是针对数据处理方面。
集成安装是指针对相应的功能安装第三方库。

第三方库的文件安装方法

有时使用第三方库通过pip下载到本地之后会出现安装错误。
UCI页面:可以用相应的网页安装编译后的第三方库。

模块7 OS库的使用

OS库是标准库,提供了基本的同操作系统沟通的功能。
路径操作:OS.path 字库,处理文件路径及信息。
进程管理:启动系统中的其他程序
环境参数:提供系统的软硬件信息

OS库的路径操作

OS.path 简称op
主要函数:

函数 功能
os.path.abspath(path) 返回当前目录的绝对路径
os.path.normpath() 对一个路径名进行标准化
os.path.normpath("D:/1:/2")
>>>"D:\\1\\2"
os.path.relpath() 返回一个路径相对当前路径的相对路径
os.path.relpath("C:\\PYE\\file.txt")
>>>".. \\ .. \\ .. \\ PYE\\file.txt"
os.path.dirname(path) 返回path中的路径名
os.path.dirname("C:\\PYE\\file.txt")
>>>"C: \\ PYE"
os.path.basename() 返回path中最后的文件名
os.path.basename("C:\\PYE\\file.txt")
>>>"file.txt"
os.path.join(path, *path) 把两个路径名合并在一起
os.path.join("C:/","/PYE/file.txt")
>>>"C:\\PYE\\file.txt"
os.path.exists() 判断当前路径是否存在
os.path.isfile() 判断当前路径是否为文件
os.path.relpath("C:\\PYE\\file.txt")
>>>False
os.path.isdir() 判断当前路径是否为路径
os.path.relpath("C:\\PYE\\file.txt")
>>>True
os.path.getatime() 返回对应文件或目录上一次的访问时间
注意返回的是系统时间,需要用time.ctime()转换为可读时间
os.path.getmtime() 返回对应文件或目录上一次的修改时间
os.path.getctime() 返回对应文件或目录的建立时间
os.path.getsize() 返回一个文件或目录的容量大小以字节为单位

os库的进程管理

os.system()函数
有两个参数,参数一为相应的程序的目录,参数二为希望用程序打开的文件。

import os
os.system("c:\\windows\\system32\\ospaint.exe		   D:\\PYE\\wordcloud.png)

os库的环境参数

可以通过os库来提取主要的环境参数

函数 功能
os.chdir(path) 改变当前程序操作的路径
os.getcwd() 返回当前程序路径
os.getlogin() 返回当前系统登陆用户名
os.cpu_count() 返回cpu的个数
os.unrandom(n) 返回一个n字节的随机字符串

实例14:批量安装第三方库的

import os

libs = {"numpy", "matplotlib", "pillow", "sklearn", "requests"       "jieba", "beautifulsoup4", "wheel", "networkx", "sympy"       "pyinstaller", "django", "flask", "werobot", "pyqt5"       "pandas", "pyopeng1", "pypdf2", "docopt", "pygame"}

try:
    for lib in libs:
        os.system("pip install"+ lib)
    print("Scuccess")
except:
    print("Error")

以上内容为学习嵩天老师的python语言程序设计第八周内容的笔记。感谢嵩天老师的团队给我们带来这样优质的课程。

中国大学生MOOC《Python语言程序设计》,嵩天 、黄天羽 、礼欣

Python学习(七)

原文:https://www.cnblogs.com/modered-study/p/14654488.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!