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/05/09 23:36] admin [El lenguaje Python] |
clase:iabd:pia:1eval:tema02 [2025/03/12 14:36] (actual) admin [Medición de rendimiento] |
||
---|---|---|---|
Línea 260: | Línea 260: | ||
- | ==== Estructuras de datos ==== | + | ===== Estructuras de datos ===== |
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 |
* Condicional | * Condicional | ||
Línea 500: | Línea 524: | ||
</ | </ | ||
- | ==== Funciones ==== | + | ===== Funciones |
* Función que retorna un valor | * Función que retorna un valor | ||
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 647: | Línea 750: | ||
* Importa la librería llamada '' | * Importa la librería llamada '' | ||
* Importa la librería llamada '' | * Importa la librería llamada '' | ||
- | * Importa una función '' | + | * Importa una función '' |
Una vez importadas esas librerías ejecuta el siguiente código, el cual mostrará una gráfica. | Una vez importadas esas librerías ejecuta el siguiente código, el cual mostrará una gráfica. | ||
<sxh python> | <sxh python> | ||
- | |||
df=pd.DataFrame({ | df=pd.DataFrame({ | ||
- | 'Nº Habitaciones':load_boston().data[:,5], | + | 'Perímetro medio':load_breast_cancer().data[:,2], |
- | 'Precio':load_boston().target, | + | '¿Benigno?':load_breast_cancer().target, |
}) | }) | ||
+ | |||
figure=plt.figure() | figure=plt.figure() | ||
axes = figure.add_subplot() | axes = figure.add_subplot() | ||
- | sns.scatterplot(data=df, | + | sns.scatterplot(data=df, |
</ | </ | ||
Línea 672: | Línea 774: | ||
- | ==== Ejercicio 4: Ayuda ==== | + | ==== Ejercicio 4.A: Ayuda ==== |
- | * Muestra la ayuda de la función '' | + | * Muestra la ayuda de la función '' |
- | ¿Como se llaman | + | |
+ | ==== Ejercicio 4.B: Ayuda ==== | ||
+ | * Muestra la ayuda de la función '' | ||
+ | |||
+ | ==== Ejercicio 4.C: Ayuda ==== | ||
+ | * Muestra | ||
+ | |||
+ | < | ||
+ | datos=load_breast_cancer() | ||
+ | </ | ||
+ | |||
==== Ejercicio 5: Operadores ==== | ==== Ejercicio 5: Operadores ==== | ||
Línea 703: | Línea 816: | ||
* Imprime todos sus números en una única línea y separados por un espacio | * Imprime todos sus números en una única línea y separados por un espacio | ||
* Imprime todos sus números de forma que se impriman 2 por línea | * Imprime todos sus números de forma que se impriman 2 por línea | ||
- | * Imprime todos sus números de forma que se impriman 3 por línea | + | * Imprime todos sus números de forma que se impriman 3 por línea |
==== Ejercicio 8: Matrices ==== | ==== Ejercicio 8: Matrices ==== | ||
* Crea la siguiente matriz: | * Crea la siguiente matriz: | ||
Línea 763: | Línea 875: | ||
==== Ejercicio 11: Funciones ==== | ==== Ejercicio 11: Funciones ==== | ||
- | * Haz una función llamada " | + | * Haz una función llamada " |
* Modifica la función para que retorne tanto el importe como la cantidad que se ha descontado del precio. Usa la función con los valores de 120€ y un 10% e imprime el resultado. | * Modifica la función para que retorne tanto el importe como la cantidad que se ha descontado del precio. Usa la función con los valores de 120€ y un 10% e imprime el resultado. | ||
* Modifica la función para que por defecto el descuento sea un 10% y no sea necesario pasar ese valor. Usa la función con el valor de 120€ e imprime el resultado. | * Modifica la función para que por defecto el descuento sea un 10% y no sea necesario pasar ese valor. Usa la función con el valor de 120€ e imprime el resultado. | ||
Línea 908: | 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. | ||