clase:iabd:pia:1eval:tema02
Diferencias
Muestra las diferencias entre dos versiones de la página.
| — | clase:iabd:pia:1eval:tema02 [2025/11/03 11:37] (actual) – creado - editor externo 127.0.0.1 | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| + | ====== 2. Python ====== | ||
| + | Para poder programar con Python vamos a usars el siguiente software: | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * Extensiones de VS Code | ||
| + | * Diversas librerías de Python | ||
| + | |||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | {{ : | ||
| + | |||
| + | |||
| + | ===== Instalación ===== | ||
| + | Pasemos ahora a indicar todo lo que hay que instalar para poder trabajar en Python y los Jupyter notebooks. | ||
| + | |||
| + | ==== Instalar Visual Studio Code ==== | ||
| + | Ejecutar los siguiente comandos en las consola de Linux para instalar VS Code | ||
| + | |||
| + | <sxh base> | ||
| + | sudo rpm --import https:// | ||
| + | cd / | ||
| + | sudo sh -c 'echo -e " | ||
| + | sudo dnf check-update | ||
| + | sudo dnf install code | ||
| + | </ | ||
| + | |||
| + | ==== Instalar Miniconda ==== | ||
| + | Descargar Miniconda desde [[https:// | ||
| + | |||
| + | |||
| + | Ejecutar los siguiente comandos en las consola de Linux para instalar Anaconda | ||
| + | <sxh base> | ||
| + | cd Descargas | ||
| + | chmod +x Miniconda3-latest-Linux-x86_64.sh | ||
| + | ./ | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | |||
| + | |||
| + | ==== Instalar Extensiones de VS Code ==== | ||
| + | Instalar las siguientes extensiones en VS Code | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ==== Instalar paquetes de Python ==== | ||
| + | Instalar antes que nada el paquete de Linux de [[https:// | ||
| + | |||
| + | |||
| + | <sxh base> | ||
| + | sudo dnf install graphviz | ||
| + | </ | ||
| + | |||
| + | <note tip>Lo normal es que ya esté instalado en Fedora</ | ||
| + | |||
| + | Ahora vamos a instalar una serie de paquetes de Python en Anaconda. Se usa el comando '' | ||
| + | |||
| + | <sxh python> | ||
| + | conda install numpy | ||
| + | conda install pandas | ||
| + | conda install matplotlib | ||
| + | conda install seaborn | ||
| + | conda install scikit-learn | ||
| + | conda install tensorflow | ||
| + | conda install keras | ||
| + | conda install tabulate | ||
| + | conda install pymysql | ||
| + | conda install sqlalchemy | ||
| + | conda install pydotplus | ||
| + | conda install ipympl | ||
| + | conda install opencv --channel conda-forge | ||
| + | conda install pillow --channel anaconda | ||
| + | conda install pandas_profiling --channel conda-forge | ||
| + | </ | ||
| + | |||
| + | <note tip>El paquete '' | ||
| + | |||
| + | |||
| + | ===== Trabajar con Jupyter Notebooks ===== | ||
| + | Para crear un nuevo Jupyter Notebook en VS Code deberemos pulsar las teclas '' | ||
| + | |||
| + | |||
| + | Dentro de un Jupyter Notebook podemos: | ||
| + | * "+ Codigo": | ||
| + | * " | ||
| + | * " | ||
| + | |||
| + | |||
| + | Mas información: | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | |||
| + | |||
| + | ===== El lenguaje Python ===== | ||
| + | |||
| + | Un libro sobre Python lo puedes descargar aqui:{{ : | ||
| + | un sitio web sobre python es [[https:// | ||
| + | |||
| + | |||
| + | |||
| + | ==== Librerías ==== | ||
| + | |||
| + | |||
| + | * Importar la librería '' | ||
| + | |||
| + | <sxh python> | ||
| + | import numpy as np | ||
| + | </ | ||
| + | |||
| + | * Importar una función '' | ||
| + | |||
| + | <sxh python> | ||
| + | from sklearn.datasets import load_iris | ||
| + | </ | ||
| + | |||
| + | ==== Tipos ==== | ||
| + | |||
| + | * Booleanos: '' | ||
| + | * transformación de tipos | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * Redondear | ||
| + | * '' | ||
| + | |||
| + | ==== Imprimir ==== | ||
| + | |||
| + | * Imprimir | ||
| + | <sxh python> | ||
| + | a=5 | ||
| + | b=" | ||
| + | c=True | ||
| + | d=6.7 | ||
| + | print(a, | ||
| + | print(d) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 5 Hola True | ||
| + | 6.7 | ||
| + | </ | ||
| + | |||
| + | * Para evitar el final de linea, se usa '' | ||
| + | |||
| + | <sxh python> | ||
| + | a=5 | ||
| + | b=" | ||
| + | c=True | ||
| + | d=6.7 | ||
| + | print(a, | ||
| + | print(d) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 5 Hola True6.7 | ||
| + | </ | ||
| + | |||
| + | * Para quitar el separador, se usar '' | ||
| + | |||
| + | <sxh python> | ||
| + | a=5 | ||
| + | b=" | ||
| + | c=True | ||
| + | d=6.7 | ||
| + | print(a, | ||
| + | print(d) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 5HolaTrue | ||
| + | 6.7 | ||
| + | </ | ||
| + | |||
| + | * Para que el separador sea una coma, se usar '' | ||
| + | |||
| + | <sxh python> | ||
| + | a=5 | ||
| + | b=" | ||
| + | c=True | ||
| + | d=6.7 | ||
| + | print(a, | ||
| + | print(d) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 5,Hola,True | ||
| + | 6.7 | ||
| + | </ | ||
| + | |||
| + | ==== Ayuda ==== | ||
| + | |||
| + | * Obtener información de una función, objeto ,etc. Solo hay que añadir la incógnita al final del nombre del método | ||
| + | |||
| + | <sxh python> | ||
| + | abs? | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | Signature: abs(x, /) | ||
| + | Docstring: Return the absolute value of the argument. | ||
| + | Type: builtin_function_or_method | ||
| + | </ | ||
| + | |||
| + | * Usado el método '' | ||
| + | |||
| + | <sxh python> | ||
| + | help(abs) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | Help on built-in function abs in module builtins: | ||
| + | |||
| + | abs(x, /) | ||
| + | Return the absolute value of the argument. | ||
| + | </ | ||
| + | |||
| + | <note tip>A veces interesa la información del método '' | ||
| + | |||
| + | * Las propiedades y métodos de una clase | ||
| + | |||
| + | <sxh python> | ||
| + | from sklearn.preprocessing import StandardScaler | ||
| + | standard_scaler = StandardScaler() | ||
| + | dir(standard_scaler) | ||
| + | </ | ||
| + | |||
| + | |||
| + | <sxh base> | ||
| + | [' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ...... | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | </ | ||
| + | |||
| + | ==== Operadores ==== | ||
| + | |||
| + | * División entera ''< | ||
| + | * Resto de la división '' | ||
| + | * Potencia '' | ||
| + | |||
| + | |||
| + | ===== Estructuras de datos ===== | ||
| + | |||
| + | |||
| + | * Arrays. Como Listas en Python. | ||
| + | |||
| + | <sxh python> | ||
| + | a=[1,2,3] | ||
| + | a[1] | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 2 | ||
| + | </ | ||
| + | |||
| + | * Tamaño de un Array | ||
| + | <sxh python> | ||
| + | a=[1, | ||
| + | len(a) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 6 | ||
| + | </ | ||
| + | |||
| + | * Sumar los elementos de un array | ||
| + | <sxh python> | ||
| + | a=[1, | ||
| + | sum(a) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 12 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | * Añadir un elemento a un array | ||
| + | |||
| + | <sxh python> | ||
| + | a=[8,9,10] | ||
| + | a.append(77) | ||
| + | a | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | [8, 9, 10, 77] | ||
| + | </ | ||
| + | |||
| + | * Concatenar arrays con el operador '' | ||
| + | |||
| + | <sxh python> | ||
| + | a=[1,2,3] | ||
| + | b=[10, | ||
| + | a+b | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | [1, 2, 3, 10, 20, 30] | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Usar '' | ||
| + | |||
| + | <sxh python> | ||
| + | a=[1,2,3] | ||
| + | b=[10, | ||
| + | a.append(b) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | [1, 2, 3, [10, 20, 30]] | ||
| + | </ | ||
| + | |||
| + | * Matrices. Como Arrays de Arrays en Python. | ||
| + | |||
| + | $$ | ||
| + | \begin{pmatrix} | ||
| + | 1 & 11\\ | ||
| + | 2 & 22\\ | ||
| + | 3 & 33 | ||
| + | \end{pmatrix} | ||
| + | $$ | ||
| + | |||
| + | |||
| + | <sxh python> | ||
| + | a=[ [1,11], [2,22], [3, | ||
| + | a[2][1] | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 33 | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Tuplas | ||
| + | |||
| + | <sxh python> | ||
| + | a=(1,2,3) | ||
| + | a[1] | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 2 | ||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | La diferencia entre un array y una tupla, es que la tupla es inmutable | ||
| + | </ | ||
| + | |||
| + | * Diccionarios | ||
| + | |||
| + | <sxh python> | ||
| + | a= { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | a[' | ||
| + | </ | ||
| + | |||
| + | <sxh python> | ||
| + | 37 | ||
| + | </ | ||
| + | |||
| + | * Claves diccionarios. Para obtener las claves de un diccionario se usa el método '' | ||
| + | |||
| + | <sxh python> | ||
| + | a= { | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | |||
| + | for key in a.keys(): | ||
| + | print(key, | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | nombre Juan | ||
| + | edad 37 | ||
| + | </ | ||
| + | |||
| + | * Recorrer obteniendo clave y valor | ||
| + | <sxh python> | ||
| + | for key, value in a.items(): | ||
| + | print(key, | ||
| + | </ | ||
| + | |||
| + | ==== Imprimir matrices ==== | ||
| + | Para imprimir datos en forma tabular, es necesario tenerlas en una matriz. Y para imprimir usaremos la librería [[https:// | ||
| + | |||
| + | |||
| + | <sxh python> | ||
| + | from tabulate import tabulate | ||
| + | |||
| + | datos=[ | ||
| + | |||
| + | |||
| + | print(tabulate(datos, | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | Épocas | ||
| + | -------- | ||
| + | | ||
| + | 10 | ||
| + | 20 | ||
| + | 60 11.396 | ||
| + | </ | ||
| + | |||
| + | 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 ===== | ||
| + | |||
| + | * Condicional | ||
| + | |||
| + | <sxh python> | ||
| + | a=1 | ||
| + | if a==1: | ||
| + | b=4 | ||
| + | else: | ||
| + | b=5 | ||
| + | print(b) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 4 | ||
| + | </ | ||
| + | |||
| + | <sxh python> | ||
| + | a=2 | ||
| + | if a==1: | ||
| + | b=4 | ||
| + | elif a==2: | ||
| + | b=-1 | ||
| + | else: | ||
| + | b=5 | ||
| + | print(b) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | -1 | ||
| + | </ | ||
| + | |||
| + | * Bucles | ||
| + | <sxh python> | ||
| + | a=[0,1,2,3] | ||
| + | for i in a: | ||
| + | print(i) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 0 | ||
| + | 1 | ||
| + | 2 | ||
| + | 3 | ||
| + | </ | ||
| + | |||
| + | <sxh python> | ||
| + | for i in range(0,4): | ||
| + | print(i) | ||
| + | </ | ||
| + | |||
| + | |||
| + | <sxh base> | ||
| + | 0 | ||
| + | 1 | ||
| + | 2 | ||
| + | 3 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | * enumerate: Permite recorres un array pero obteniendo tanto el valor como el índice dentro del array | ||
| + | |||
| + | <sxh python> | ||
| + | precios=[45, | ||
| + | for index_precio, | ||
| + | print(index_precio, | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 0 45 | ||
| + | 1 234 | ||
| + | 2 6.99 | ||
| + | 3 7 | ||
| + | </ | ||
| + | |||
| + | ===== Funciones ===== | ||
| + | |||
| + | * Función que retorna un valor | ||
| + | |||
| + | <sxh python> | ||
| + | def sumar(a,b): | ||
| + | return a+b | ||
| + | |||
| + | resultado=sumar(3, | ||
| + | print(resultado) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 7 | ||
| + | </ | ||
| + | |||
| + | * Función que retorna 2 valores y se almacenan en dos variables | ||
| + | |||
| + | <sxh python> | ||
| + | def sumar_y_multiplicar(a, | ||
| + | return a+b,a*b | ||
| + | |||
| + | a, | ||
| + | print(a) | ||
| + | print(b) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 7 | ||
| + | 12 | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | * Función que retorna 2 valores y se almacenan en una única variable | ||
| + | |||
| + | <sxh python> | ||
| + | def sumar_y_multiplicar(a, | ||
| + | return a+b,a*b | ||
| + | |||
| + | resultado=sumar_y_multiplicar(3, | ||
| + | print(resultado) | ||
| + | print(resultado[0]) | ||
| + | print(resultado[1]) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | (7, 12) | ||
| + | 7 | ||
| + | 12 | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Llamar a funciones por nombre de los parámetros | ||
| + | |||
| + | <sxh python> | ||
| + | def dividir(dividendo, | ||
| + | return dividendo/ | ||
| + | |||
| + | print(dividir(10, | ||
| + | print(dividir(dividendo=10, | ||
| + | print(dividir(divisor=2, | ||
| + | print(dividir(10, | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 5.0 | ||
| + | 5.0 | ||
| + | 5.0 | ||
| + | 5.0 | ||
| + | </ | ||
| + | |||
| + | * Parámetros opcionales | ||
| + | |||
| + | <sxh python> | ||
| + | def dividir(dividendo, | ||
| + | return dividendo/ | ||
| + | |||
| + | print(dividir(10, | ||
| + | print(dividir(10)) | ||
| + | print(dividir(10, | ||
| + | print(dividir(dividendo=10)) | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 5.0 | ||
| + | 5.0 | ||
| + | 2.5 | ||
| + | 5.0 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Clases ===== | ||
| + | Para crear clases en python: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | * Vamos a crear la clase rectángulo | ||
| + | <sxh python> | ||
| + | class Rectangulo: | ||
| + | def __init__(self, | ||
| + | self.longitud = longitud | ||
| + | self.ancho = ancho | ||
| + | |||
| + | def calcular_area(self): | ||
| + | return self.longitud * self.ancho | ||
| + | |||
| + | def calcular_perimetro(self): | ||
| + | return 2 * (self.longitud + self.ancho) | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Ahora vamos a usar la clase que hemos creado | ||
| + | <sxh python> | ||
| + | mi_rectangulo = Rectangulo(5, | ||
| + | |||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | Longitud: 5 | ||
| + | Ancho: 10 | ||
| + | Área: 50 | ||
| + | Perímetro: 30 | ||
| + | </ | ||
| + | ===== Medición de rendimiento ===== | ||
| + | Para medir el tiempo que ha tardado algo se usa el método '' | ||
| + | |||
| + | <sxh python> | ||
| + | from time import monotonic | ||
| + | |||
| + | t = monotonic() | ||
| + | resultado=sum(range(10000000)) | ||
| + | t=monotonic()-t | ||
| + | |||
| + | print(resultado) | ||
| + | print(round(t, | ||
| + | </ | ||
| + | |||
| + | <sxh base> | ||
| + | 49999995000000 | ||
| + | 0.21 seg | ||
| + | </ | ||
| + | |||
| + | El resultado se muestra en segundos | ||
| + | |||
| + | <note tip> | ||
| + | El problema de '' | ||
| + | |||
| + | Según la documentación de python [[https:// | ||
| + | |||
| + | |||
| + | Sin embargo en Python 3.10.12 con Linux Mint 22 da el mismo resultado '' | ||
| + | </ | ||
| + | |||
| + | 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 ===== | ||
| + | |||
| + | ==== Ejercicio 1: Instalación ==== | ||
| + | Instala todo lo indicado en el apartado " | ||
| + | |||
| + | ==== Ejercicio 2: Librerías ==== | ||
| + | * Importa la librería llamada '' | ||
| + | * Importa la librería llamada '' | ||
| + | * Importa la librería llamada '' | ||
| + | * Importa la librería llamada '' | ||
| + | * Importa una función '' | ||
| + | |||
| + | Una vez importadas esas librerías ejecuta el siguiente código, el cual mostrará una gráfica. | ||
| + | <sxh python> | ||
| + | df=pd.DataFrame({ | ||
| + | ' | ||
| + | ' | ||
| + | }) | ||
| + | |||
| + | figure=plt.figure() | ||
| + | axes = figure.add_subplot() | ||
| + | sns.scatterplot(data=df, | ||
| + | </ | ||
| + | |||
| + | ==== Ejercicio 3: Tipos ==== | ||
| + | * Crea 2 variables booleanas una con el valor verdadero y otra con el valor falso. | ||
| + | * Crea una variable de tipo '' | ||
| + | * Crea una variable de tipo '' | ||
| + | * Crea una variable de tipo '' | ||
| + | * Crea una variable de tipo '' | ||
| + | * Crea una variable de tipo '' | ||
| + | * Crea una variable de tipo '' | ||
| + | |||
| + | |||
| + | ==== Ejercicio 4.A: Ayuda ==== | ||
| + | * Muestra la ayuda de la función '' | ||
| + | |||
| + | |||
| + | ==== Ejercicio 4.B: Ayuda ==== | ||
| + | * Muestra la ayuda de la función '' | ||
| + | |||
| + | ==== Ejercicio 4.C: Ayuda ==== | ||
| + | * Muestra los campos del objeto '' | ||
| + | |||
| + | <sxh> | ||
| + | datos=load_breast_cancer() | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ==== Ejercicio 5: Operadores ==== | ||
| + | * Haz la división con decimales de 5/3 | ||
| + | * Haz la división entera de 5/3 | ||
| + | * Calcula $2^{16}$ | ||
| + | |||
| + | ==== Ejercicio 6: Arrays ==== | ||
| + | |||
| + | * Crea una array con los siguiente números primos e imprime el cuarto número: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 | ||
| + | * Calcula la longitud del anterior array | ||
| + | * Calcula la suma de los elementos del anterior array | ||
| + | * Añade al array el elemento 97 | ||
| + | * Crea una tupla con los siguiente números primos e imprime el cuarto número: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 | ||
| + | * Añade a la tupla el elemento 97. ¿Porqué no te deja?. | ||
| + | * Crea una array que sea la unión de los elementos de los siguientes dos arrays '' | ||
| + | * Añade al array '' | ||
| + | |||
| + | ==== Ejercicio 7: Print y arrays ==== | ||
| + | Dado el array: | ||
| + | <sxh python> | ||
| + | a=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97] | ||
| + | </ | ||
| + | |||
| + | * Imprime todos sus números cada un en una línea distinta | ||
| + | * Imprime todos sus números en una única línea y separados por punto y coma | ||
| + | * 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 3 por línea | ||
| + | ==== Ejercicio 8: Matrices ==== | ||
| + | * Crea la siguiente matriz: | ||
| + | |||
| + | |||
| + | $$ | ||
| + | \begin{pmatrix} | ||
| + | 1 & 0 & 0 & 0\\ | ||
| + | 0 & 1 & 7 & 0\\ | ||
| + | 0 & 0 & 1 & 0\\ | ||
| + | 0 & 0 & 0 & 1\\ | ||
| + | \end{pmatrix} | ||
| + | $$ | ||
| + | |||
| + | * Obtén el elemento de la fila 2º y la columna 3º. Es el valor del 7. | ||
| + | * Crea un nuevo array con los elementos de la 3º Fila de la matriz | ||
| + | * Crea un nuevo array con los elementos de la 2º Columna de la matriz | ||
| + | * Imprime la matriz y haz que las cabeceras de cada columna sean A, B , C y D | ||
| + | |||
| + | ==== Ejercicio 9: Diccionarios ==== | ||
| + | |||
| + | * Crea una variable llamada '' | ||
| + | <sxh base> | ||
| + | nombre: Juan | ||
| + | apellidos: Pérez García | ||
| + | teléfono | ||
| + | | ||
| + | fijo: 963789654 | ||
| + | dirección: | ||
| + | tipo via: calle | ||
| + | numero: 45 | ||
| + | puerta: 7 | ||
| + | numero facturas: | ||
| + | compras: 234/2020, 345/2021, 675/2021, 561/2022 | ||
| + | ventas: | ||
| + | |||
| + | </ | ||
| + | * Del anterior diccionario muestra la siguiente información: | ||
| + | * nombre | ||
| + | * El teléfono móvil | ||
| + | * El tipo de vía | ||
| + | * El número de la 3º factura que vendió | ||
| + | * La cantidad de compras que ha hecho. | ||
| + | * Imprime el nombre de las claves del "// | ||
| + | |||
| + | |||
| + | ==== Ejercicio 10: Estructuras de control ==== | ||
| + | Usando la variable '' | ||
| + | * Muestra el texto " | ||
| + | * Muestra el texto " | ||
| + | * Haz que se muestre por pantalla los números del 0 al 999 | ||
| + | * Haz que se muestre por pantalla los números del 1 al 1000 | ||
| + | * Crea un array con los números primos hasta el 100, que son '' | ||
| + | * Muestra cada número por pantalla. | ||
| + | * Haz que se muestren por pantalla el número junto con el orden que ocupan. Por ejemplo '' | ||
| + | * Modifica el ejercicio anterior de forma que si es el primer número primo del array, se muestre '' | ||
| + | |||
| + | ==== Ejercicio 11: Funciones ==== | ||
| + | |||
| + | * 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 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. | ||
| + | |||
| + | ==== Ejercicio 12 ==== | ||
| + | Vamos a volver al ejercicio de redes neuronales del tema 1 del tipo de flor . | ||
| + | |||
| + | Modifica el siguiente programa: | ||
| + | |||
| + | <sxh python> | ||
| + | model=Sequential() | ||
| + | model.add(Dense(6, | ||
| + | model.add(Dense(12, | ||
| + | model.add(Dense(6, | ||
| + | model.add(Dense(1, | ||
| + | model.compile(loss=' | ||
| + | |||
| + | model.fit(x, | ||
| + | </ | ||
| + | |||
| + | Para que en vez de poner tantas líneas como capas hay , se haga con un array. Es decir que dado el array '' | ||
| + | |||
| + | ==== Ejercicio 13 ==== | ||
| + | Modifica el ejercicio anterior de forma que el código esté en una función llamada '' | ||
| + | |||
| + | Prueba a llamar a la función con los siguientes datos | ||
| + | |||
| + | <sxh python> | ||
| + | capas_red1=[6, | ||
| + | model1=compile_fit(capas_red1, | ||
| + | |||
| + | capas_red2=[8, | ||
| + | model2=compile_fit(capas_red2, | ||
| + | </ | ||
| + | |||
| + | Además, encapsula la obtención de los datos en la función '' | ||
| + | <sxh python> | ||
| + | x, | ||
| + | </ | ||
| + | |||
| + | ==== Ejercicio 14 ==== | ||
| + | Siguiendo con el ejercicio anterior, haz un programa que muestre lo siguiente | ||
| + | |||
| + | <sxh python> | ||
| + | Red Result 1 Result 2 | ||
| + | ------ | ||
| + | 1 0.06094426 0.9634158 | ||
| + | 2 0.06094426 0.9634158 | ||
| + | ... | ||
| + | 5 0.06094426 0.9634158 | ||
| + | </ | ||
| + | |||
| + | Pero los números con decimales que se muestran son el resultado de llamar a la red neuronal con los valores (4.9, 1.4) y (6.3, 4.9). | ||
| + | Y cada red va a tener las siguientes capas con las neuronas: | ||
| + | |||
| + | ^ Red ^ Nº Neuronas en cada capa ^ | ||
| + | | 1º | | ||
| + | | 2º | | ||
| + | | 3º | 8, 12, ,24, 12, 1 | | ||
| + | | 4º | 8, 16, 8, 1 | | ||
| + | | 5º | 16, 32, 1 | | ||
| + | |||
| + | |||
| + | |||
| + | Para hacer eso deberás crear un array en la que cada elemento será otro array con las neuronas de cada capa. | ||
| + | Ejemplo: | ||
| + | <sxh python> | ||
| + | redes=[ | ||
| + | </ | ||
| + | |||
| + | |||
| + | * Recorre el array y en cada vuelta | ||
| + | * Obtén las neuronas de cada capa | ||
| + | * Llama al método '' | ||
| + | * Obtén los resultados de predecir con los valores (4.9, 1.4) y (6.3, 4.9). | ||
| + | * Añade los resultados a una matriz de resultados | ||
| + | * Imprime la matriz de resultados | ||
| + | |||
| + | |||
| + | ==== Ejercicio 15 ==== | ||
| + | Modifica el ejercicio anterior para que el método '' | ||
| + | |||
| + | Y que en la tabla se muestre también el tiempo | ||
| + | |||
| + | <sxh python> | ||
| + | Red Result 1 Result 2 | ||
| + | ------ | ||
| + | 1 0.06094426 0.9634158 | ||
| + | 2 0.06094426 0.9634158 | ||
| + | ... | ||
| + | 5 0.06094426 0.9634158 | ||
| + | </ | ||
| + | |||
| + | ==== Ejercicio 16 ==== | ||
| + | Modifica el ejercicio anterior pero ahora modifica en el array de cada red para que la columna //Red// sea el //nombre// de la red para que podamos saber cual es cada una. El nombre será las neuronas de cada capa | ||
| + | |||
| + | |||
| + | <sxh base> | ||
| + | Red | ||
| + | ---------- | ||
| + | 2,4,1 0.06094426 0.9634158 | ||
| + | 4, | ||
| + | ... | ||
| + | 16, | ||
| + | </ | ||
| + | |||
| + | ==== Ejercicio 17 ==== | ||
| + | Modifica el ejercicio anterior pero ahora incluye en el array de cada red un nuevo campo con el número de épocas con las que se ha entrenado. | ||
| + | |||
| + | Por ello , deberás incluir un nuevo valor para cada red que será el número de épocas a entrenar. | ||
| + | |||
| + | Ejemplo: | ||
| + | <sxh python> | ||
| + | redes=[ | ||
| + | </ | ||
| + | |||
| + | El último elemento de cada array en el número de épocas que se va a entrenar la red. | ||
| + | |||
| + | |||
| + | <sxh base> | ||
| + | Red | ||
| + | ---------- | ||
| + | 2,4,1 | ||
| + | 4, | ||
| + | ... | ||
| + | 16, | ||
| + | </ | ||
| + | |||
| + | ==== Ejercicio 18 ==== | ||
| + | Modifica la función '' | ||
| + | |||
| + | ==== Ejercicio 19 ==== | ||
| + | Repite el ejercicio anterior pero ahora con la red neuronal del cáncer de mama y las siguientes capas de la red: | ||
| + | |||
| + | ^ Nº Neuronas en cada capa ^ Épocas ^ | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | | | ||
| + | | 16, 32, 16, 8, 1 | 20 | | ||
| + | | 16, 32, 16, 8, 1 | 40 | | ||
| + | | 32, 64, 32, 8, 1 | 20 | | ||
| + | | 32, 64, 32, 8, 1 | 40 | | ||
| + | | 64, 128, 64, 8, 1 | 20 | | ||
| + | | 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. | ||
| + | |||
