【Programación Python (8)】 Metodología de programación

1 Ejemplo: análisis de competición deportiva

Análisis de problemas: análisis de competición deportiva

  • Demanda: ¿Cuánto cuesta? ¿Cómo analizar científicamente las competiciones deportivas?
  • Entrada: nivel del jugador
  • Salida: resultados predecibles del juego

Reglas del juego: Intercambio de porciones. Al principio, un lado sirve primero, y el lado que sirve gana. El lado que sirve obtiene 1 punto, pero el lado receptor no anota. El lado que sirve pierde y ninguno de los lados anota. Si A sirve, A gana 1 punto y B no anota; A no pierde ninguno. Luego cambie B para servir. Consigue 15 puntos primero para ganar.

De arriba hacia abajo y de abajo hacia arriba

  • De arriba a abajo: una forma efectiva de resolver problemas complejos. Exprese un problema total como una forma de varios problemas pequeños, y use el mismo método para descomponer aún más los problemas pequeños hasta que la computadora pueda resolverlos de manera simple y clara.
  • De abajo hacia arriba (ejecución): un método de prueba efectivo para construir gradualmente sistemas complejos. Prueba unidad por unidad, ensamblaje paso a paso, y siga la ruta inversa de arriba a abajo hasta que todas las partes del sistema hayan sido probadas y verificadas con la idea del ensamblaje.

El marco general y los pasos del programa.

  • Paso 1: Imprima la información introductoria del programa-printInfo ()
  • Paso 2: Obtenga los parámetros de ejecución del programa: proA, proB, n-getInputs ()
  • Paso 3: Usa los valores de habilidad de los jugadores A y B para simular n juegos-simNGames ()
  • Paso 4: Muestra el número y la probabilidad de los partidos ganados por los jugadores A y B-printSummary ()

El programa se divide en cuatro partes, imprime la información de introducción, obtiene los parámetros operativos, simula n juegos y genera los resultados. Simular n juegos puede descomponerse en simular un juego n veces. Simular simultáneamente un juego debe determinar si el juego actual se ha decidido.

Inserte la descripción de la imagen aquí

from random import *
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获胜{}场比赛,占比{:.1%}".format(winsA, winsA/n))
    print("选手B获胜{}场比赛,占比{:.1%}".format(winsB, winsB/n))

def gameover(scoreA, scoreB):
    return scoreA == 15 or scoreB == 15

def simOneGame(proA, proB):
    scoreA, scoreB = 0, 0
    serving = "A"
    while not gameover(scoreA, scoreB):
        if serving == "A":
            if random() < proA:
                scoreA += 1
            else:
                serving = "B"
        else:
            if random() < proB:
                scoreB += 1
            else:
                serving = "A"
    return scoreA, scoreB

def simNGames(n, probA, probB):
    winsA, winsB = 0, 0
    for i in range(n):
        scoreA, scoreB = simOneGame(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()

2 Instalación de la biblioteca de terceros de Python

Plataforma de biblioteca tripartita de alta calidad:

La plataforma python123 puede aprender, y también organizar muchas bibliotecas de terceros, y organizar espejos domésticos https://python123.io/
Python community PyPI (Python Package Index), 130,000 bibliotecas de terceros https://pypi.org/

2.1 método de instalación de pip de bibliotecas de terceros

Comandos pip comúnmente utilizados

Comando Explicación
pip install <nombre de biblioteca de terceros> Instalar la biblioteca de terceros especificada
pip install --U <nombre de biblioteca de terceros> Use la etiqueta -U para actualizar la biblioteca de terceros especificada instalada
desinstalación de pip <nombre de biblioteca de terceros> Desinstale la biblioteca de terceros especificada
descarga de pip <nombre de biblioteca de terceros> Descargue pero no instale la biblioteca de terceros especificada
pip show <nombre de biblioteca de terceros> Listar detalles de una biblioteca de terceros específica
pip search <palabra clave> Buscar bibliotecas de terceros en nombres e introducciones basados ​​en palabras clave
lista de pepitas Enumerar las bibliotecas de terceros que se han instalado en el sistema actual.

2.2 Método de instalación integrado de bibliotecas de terceros.

Instalación integrada:
Anaconda
https://www.continuum.io es
compatible con casi 800 bibliotecas de terceros, incluidas múltiples herramientas convencionales, adecuadas para el desarrollo en el campo de la computación de datos.

2.3 Métodos de instalación de archivos de bibliotecas de terceros

Dirección de descarga del archivo de instalación
http://www.lfd.uci.edu/~gohlke/pythonlibs/
Inserte la descripción de la imagen aquí
Método de instalación del archivo

  • Paso 1: busque archivos en la página UCI
  • Paso 2: descargue la versión correspondiente del archivo
  • Paso 3: Use pip install <nombre de archivo> para instalar

3 Uso de la biblioteca os

La biblioteca os proporciona funciones generales y básicas de interacción del sistema operativo.La biblioteca os es una biblioteca estándar de Python y contiene cientos de funciones. Operaciones de ruta común, gestión de procesos, parámetros ambientales, etc.

3.1 Operación de ruta de la biblioteca os

La sub-biblioteca os.path toma la ruta como entrada, utilizada para manipular y procesar la ruta del archivo
import os.path o import os.path como op

Función Descripción
os.path.abspath (ruta) Devuelve la ruta absoluta de la ruta en el sistema actual
>>> os.path.abspath ( "file.txt" )
'C: \\ Users \\ Tian Song \\ Python36-32 \\ file.txt'
os.path.normpath (ruta) Representación normalizada de la ruta, use \\ para separar las rutas al unísono
>>> os.path.normpath ( "D: //PYE//file.txt" )
'D: \\ PYE \\ file.txt'
os.path.relpath (ruta) Devuelve la ruta relativa entre el programa actual y el archivo (ruta relativa)
>>> os.path.relpath ( "C: //PYE//file.txt" )
'… \\… \\… \\… \\… \\… \\… \\ PYE \\ file.txt '
- -
os.path.dirname (ruta) Devuelva el nombre del directorio en la ruta
>>> os.path.dirname ( "C: //PYE//file.txt" )
'D: // PYE'
os.path.basename (ruta) Devuelve el último nombre de archivo en la ruta
>>> os.path.basename ( "C: //PYE//file.txt" )
'file.txt'
os.path.join (ruta, * rutas) Combine ruta y rutas, devuelva una cadena de ruta
>>> os.path.join ( "D: /" , "PYE / file.txt" )
'D: /PYE/file.txt'
- -
os.path.exists (ruta) Determine si el archivo o directorio correspondiente a la ruta existe, devuelva Verdadero o Falso
>>> os.path.exists ( "D: //PYE//file.txt" )
False
os.path.isfile (ruta) Determine si la ruta corresponde a un archivo existente, devuelva True o False
>>> os.path.isfile ( "D: //PYE//file.txt" )
True
os.path.isdir (ruta) 判断 path 所对应是否为已存在的目录,返回 True 或 False
>>>os.path.isdir( “D://PYE//file.txt” )
False
os.path.getatime(path) 返回 path 对应文件或目录上一次的访问时间
>>>os.path.getatime( “D:/PYE/file.txt” )
1518356633.7551725
os.path.getmtime(path) 返回 path 对应文件或目录最近一次的修改时间
>>>os.path.getmtime( “D:/PYE/file.txt” )
1518356633.7551725
os.path.getctime(path) 返回 path 对应文件或目录的创建时间
>>>time.ctime(os.path.getctime( “D:/PYE/file.txt” ))
‘Sun Feb 11 21:43:53 2018’
os.path.getsize(path) 返回 path 对应文件的大小,以字节为单位
>>>os.path.getsize( “D:/PYE/file.txt” )
180768

3.2 os 库之进程管理

os.system(command)

  • 执行程序或命令 command
  • 在 Windows 系统中,返回值为 cmd 的调用返回信息
import os
os.system("C:\\Windows\\System32\\calc.exe")
>>>0

3.3 os 库之环境参数

获取或改变系统环境信息

函数 描述
os.chdir(path) 修改当前程序操作的路径
>>>os.chdir(“D:”)
os.getcwd() 返回程序的当前路径
>>>os.getcwd()
‘D:\’

获取操作系统环境信息

函数 描述
os.getlogin() 获得当前系统登录用户名称
>>>os.getlogin()
‘Tian Song’
os.cpu_count() 获得当前系统的 CPU 数量
>>>os.cpu_count()
8

获取操作系统环境信息

函数 描述
os.urandom(n) 获得 n 个字节长度的随机字符串,通常用于加解密运算
>>>os.urandom(10)
b’=l>7}\xca\x7f\x14\xe3\x0b’

4 常用第三方库

库名 用途
NumPy N 维数据表示和运算
Matplotlib 二维数据可视化
PIL 图像处理
Scikit-Learn Aprendizaje automático y minería de datos.
Peticiones Acceso al protocolo HTTP y rastreador web
Jieba Segmentación de palabras chinas
Hermosa sopa Analizadores HTML y XML
Rueda Herramienta de empaquetado de archivos de bibliotecas de terceros de Python
PyInstaller Empaquetar archivos fuente de Python como archivos ejecutables
Django El marco de desarrollo web más popular de Python
Matraz Marco de desarrollo web ligero
WeRoBot Marco de desarrollo de robots WeChat
SymPy Herramienta de cálculo de símbolos matemáticos
Pandas Análisis y cálculo de datos eficientes.
Networkx Modelado y análisis de redes complejas y estructuras gráficas.

5 Ejemplo: secuencia de comandos de instalación de biblioteca de terceros

Requisitos: ¿Instalar bibliotecas de terceros en lotes para lograr la instalación automática?

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("Failed Somehow")
Publicado 298 artículos originales · elogiado 181 · 100,000+ vistas

Supongo que te gusta

Origin blog.csdn.net/happyjacob/article/details/105390822
Recomendado
Clasificación