Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
clase:iabd:pia:1eval:tema02 [2023/11/04 12:10] admin |
clase:iabd:pia:1eval:tema02 [2025/03/12 14:36] (actual) admin [Medición de rendimiento] |
||
---|---|---|---|
Línea 392: | Línea 392: | ||
for key in a.keys(): | for key in a.keys(): | ||
- | print(key) | + | print(key,a[key]) |
</ | </ | ||
<sxh base> | <sxh base> | ||
- | nombre | + | nombre |
- | edad | + | edad 37 |
+ | </ | ||
+ | |||
+ | * Recorrer obteniendo clave y valor | ||
+ | <sxh python> | ||
+ | for key, value in a.items(): | ||
+ | print(key, | ||
</ | </ | ||
Línea 407: | Línea 413: | ||
from tabulate import tabulate | from tabulate import tabulate | ||
- | a=[ [5, | + | datos=[ [5, |
- | print(tabulate(a, headers=[" | + | print(tabulate(datos, headers=[" |
</ | </ | ||
Línea 422: | Línea 428: | ||
</ | </ | ||
+ | También podemos añadir una primera columna que sean también como " | ||
+ | <sxh python> | ||
+ | from tabulate import tabulate | ||
+ | |||
+ | datos=[ | ||
+ | epocas=[5, | ||
+ | |||
+ | print(tabulate(datos, | ||
+ | |||
+ | </ | ||
+ | <sxh base> | ||
+ | Épocas | ||
+ | -------- | ||
+ | | ||
+ | 10 | ||
+ | 20 | ||
+ | 60 11.396 | ||
+ | </ | ||
===== Estructuras de control ===== | ===== Estructuras de control ===== | ||
Línea 591: | Línea 615: | ||
</ | </ | ||
- | ===== Medición de rendimiento ===== | ||
- | |||
- | === timeit === | ||
- | IPython es como la forma genérica de los Jupyter Notebooks. Y tiene una serie de órdenes que podemos usar directamente. La orden '' | ||
+ | ===== Clases ===== | ||
+ | Para crear clases en python: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | * Vamos a crear la clase rectángulo | ||
<sxh python> | <sxh python> | ||
- | time = %timeit -n1 -r1 -o sum(range(10000000)) | + | class Rectangulo: |
+ | def __init__(self, | ||
+ | self.longitud | ||
+ | self.ancho = ancho | ||
+ | |||
+ | def calcular_area(self): | ||
+ | return self.longitud * self.ancho | ||
+ | |||
+ | def calcular_perimetro(self): | ||
+ | return 2 * (self.longitud + self.ancho) | ||
</ | </ | ||
- | Lo que hace es calcula el tiempo de ejecutar la orden '' | ||
- | Y para imprimirlo, se usa: | + | |
+ | * Ahora vamos a usar la clase que hemos creado | ||
<sxh python> | <sxh python> | ||
- | print(round(time.average,2),"seg") | + | mi_rectangulo = Rectangulo(5, |
+ | |||
+ | print(" | ||
+ | print(" | ||
+ | print(" | ||
+ | print("Perímetro:", mi_rectangulo.calcular_perimetro()) | ||
</ | </ | ||
<sxh base> | <sxh base> | ||
- | 0.21 seg | + | Longitud: 5 |
+ | Ancho: 10 | ||
+ | Área: 50 | ||
+ | Perímetro: 30 | ||
</ | </ | ||
- | + | ===== Medición | |
- | Sin embargo el problema | + | Para medir el tiempo que ha tardado algo se usa el método '' |
- | + | ||
- | === perf_counter | + | |
- | Para solucionar el problema anterior podemos simplemente | + | |
<sxh python> | <sxh python> | ||
- | from time import | + | from time import |
- | t = perf_counter() | + | t = monotonic() |
resultado=sum(range(10000000)) | resultado=sum(range(10000000)) | ||
- | t=perf_counter()-t | + | t=monotonic()-t |
print(resultado) | print(resultado) | ||
Línea 633: | Línea 674: | ||
El resultado se muestra en segundos | El resultado se muestra en segundos | ||
+ | |||
+ | <note tip> | ||
+ | El problema de '' | ||
+ | </ | ||
Mas información: | Mas información: | ||
+ | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | |||
+ | ===== Poetry ===== | ||
+ | A veces no quieremos usar conda sino tener una carpeta con todo lo que necesita el proyecto, al estilo de //NodeJS//. En ese caso podemos usar una herramienta llamada [[https:// | ||
+ | |||
+ | * Instalar poetry | ||
+ | <sxh bash> | ||
+ | pip install --user poetry | ||
+ | |||
+ | </ | ||
+ | |||
+ | |||
+ | * Comprobar que tenemos poetry instalado | ||
+ | |||
+ | <sxh bash> | ||
+ | poetry --version | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Para decir que las librerías se instalen en nuestra propia carpeta del proyecto. | ||
+ | <sxh bash> | ||
+ | poetry config virtualenvs.in-project true | ||
+ | |||
+ | </ | ||
+ | |||
+ | * Para tener un proyecto con python y todas sus dependencias en la misma carpeta haremos lo siguiente: | ||
+ | <sxh bash> | ||
+ | poetry init | ||
+ | poetry add libclang = "< | ||
+ | poetry install | ||
+ | </ | ||
+ | |||
+ | <note important> | ||
+ | Si al hacer el '' | ||
+ | '' | ||
+ | deberemos crear la siguiente variable de entorno: | ||
+ | '' | ||
+ | </ | ||
+ | |||
+ | Para ejecutar el código hay 2 formas: | ||
+ | |||
+ | * Desde la línea de comandos: | ||
+ | <sxh python> | ||
+ | poetry run python my_script.py | ||
+ | </ | ||
+ | |||
+ | * Desde VS Code seleccionar en los entornos de ejecución la carpeta '' | ||
+ | {{ : | ||
+ | |||
+ | * Si queremos usar el entorno de poetry pero no está en nuestra carpeta se puede indicar a VS Code cual es el ejecutable de python que debe usar siempre para ello hay que crear en la carpeta de nuestro proyecto el fichero '' | ||
+ | |||
+ | <sxh base> | ||
+ | { | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
===== Ejercicios ===== | ===== Ejercicios ===== | ||
Línea 917: | Línea 1020: | ||
| 64, 128, 64, 8, 1 | 20 | | | 64, 128, 64, 8, 1 | 20 | | ||
| 64, 128, 64, 8, 1 | 40 | | | 64, 128, 64, 8, 1 | 40 | | ||
+ | |||
+ | ==== Ejercicio 20 ==== | ||
+ | Crea una clase llamada '' | ||
+ | |||
+ | La clase debe tener los siguientes atributos: | ||
+ | |||
+ | * '' | ||
+ | * '' | ||
+ | * | ||
+ | La clase debe tener los siguientes métodos: | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Usa la clase de forma que | ||
+ | * Se cree un objeto | ||
+ | * Se depositen 100€ | ||
+ | * Se retiren 75€. | ||
+ | * Imprimas el titular y el saldo. | ||