====== Introducción a la programación con Python ====== Notas de la formación por parte de la Consellería de Promoción do Emprego e Igualdade y el [[https://formacion.clusterticgalicia.com|Clúster TIC Galicia]] impartida en 2023. ===== Objetivos ===== * Introducir los distintos entornos de desarrollo. El entorno interactivo Jupyter para ejecutar y crear programas. * Conocer los elementos básicos del lenguaje, las estructuras de control, estructuras de datos, y elementos sintácticos específicos de Python. * Introducir algunas de las bibliotecas más habituales del lenguaje. * Realizar prácticas y ejercicios sencillos de programación con Python. ===== Temario ===== * **Bloque I: Introducción a Python y E/S básica** * Mostrar mensajes por pantalla -print() * Cadenas de texto -strings * Introducción de datos –input() * Ejercicios prácticos * **[[informatica:programacion:python:cursos:introduccion_programacion_python:variables_y_tipos_de_datos|Bloque II: Variables y tipos de datos]]** * Variables * Tipos de datos * Integers * Floats * Conversiones entre tipos de datos * Formatear cadenas * Operadores matemáticos * Redondeo * Ejercicios prácticos * **[[informatica:programacion:python:cursos:introduccion_programacion_python:cadenas_de_caracteres_y_tipos_de_datos_abstractos|Bloque III: Cadenas de caracteres y tipos de datos abstractos]]** * Método index * Extraer substrings * Métodos de string * Propiedades de string * Tipos de datos * Listas * Diccionarios * Tuplas * Sets * Booleanos * Ejercicios prácticos * **[[informatica:programacion:python:cursos:introduccion_programacion_python:sentencias_de_control|Bloque IV: Sentencias de control]]** * Operadores de comparación * Operadores lógicos * Control de flujo * Loops * for * while * Rango * Enumerador * Zip * Min y Max * Random * Comprensión de listas * Match * Ejercicios prácticos * **[[informatica:programacion:python:cursos:introduccion_programacion_python:funciones|Bloque V: Funciones]]** * Métodos ayuda y documentación * Crear funciones * Return * Funciones dinámicas * Interacción entre funciones * Argumentos indefinidos -* args * Argumentos indefinidos -* kwargs * Ejercicios prácticos * **[[informatica:programacion:python:cursos:introduccion_programacion_python:ficheros|Bloque VI: Ficheros]]** * Abrir y manipular archivos * Crear y escribir archivos * Directorios * Pathlib * Path * Limpiar la consola * Archivos y funciones * Ejercicios prácticos * **[[informatica:programacion:python:cursos:introduccion_programacion_python:programacion_orientada_a_objetos|Bloque VII: Programación Orientada a Objetos]]** * Programación orientada a objetos * Atributos * Métodos * Tipos de métodos * Herencia * Polimorfismo * Métodos especiales * Ejercicios prácticos * [[informatica:programacion:python:cursos:introduccion_programacion_python:ejemplos_practicos|Ejemplos prácticos]] ===== Software necesario ===== * [[https://www.python.org/downloads/|Intérprete y bibliotecas de Python]] (versión 3.x) * Editor de texto o IDE. Algunas opciones: * [[https://code.visualstudio.com/|Visual Studio Code]] (con extensión de Python) * PyCharm * [[https://jupyter.org/install|Jupyter]] * Terminal (Bash, Zsh, CMD, PowerShell, ...) * [[https://aka.ms/terminal|Windows Terminal]] ==== Jupyter Lab ==== Para instalar, desde el terminal: python3 -m venv .venv source .venv/bin/activate Instalamos el módulo de Jupyter Lab: pip install jupyterlab Lanzamos el entorno: source .venv/bin/activate jupyter-lab ===== Ejercicios ===== Investigue algún paquete en https://pypi.org de entre los siguientes: * Django * Flask * PyQt6 * BeautifulSoup * Colorama * pandas * scikit-learn * matplotlib * seaborn * SQLAlchemy Elija uno y descríbalo, indicando los siguientes puntos: - Nombre del paquete - Descripción - Fecha de publicación de la última versión - Fecha de publicación de la primera versión - Licencia - Versión mínima requerida de Python ===== Cuestionario ===== **¿En qué se diferencian las listas y las tuplas de Python?** * Las listas son inmutables, mientras que las tuplas se pueden modificar. * **Las tuplas son inmutables, mientras que las listas se pueden modificar** * Se comportan exactamente igual **¿Qué secuencia de números genera ''range(5)''?** * **0, 1, 2, 3, 4** * 1, 2, 3, 4, 5 * 0, 1, 2, 3, 4, 5 **¿Cuántas veces se puede llegar a repetir un bucle while?** * Una o ninguna * 1 o más * **0 o más** **¿Qué representa ''self'' dentro del código de una clase en Python?** * Define una representación textual del objeto * Indica el nombre de la clase * **Se refiere al mismo objeto con el que se está trabajando**. **¿Una función puede recibir más de un parámetro opcional?** * No, solamente se admite uno. * **Sí, siempre que se declare después de los que son obligatorios**. * Sí, independientemente de donde sea declarado en la lista de parámetros. **¿Qué tipo de datos propio de Python permite asociar claves y valores?** * Conjuntos (set) * Tuplas (tuple) * **Diccionarios (dict)** **¿Cómo se puede añadir un elemento al final de una lista en Python?** * ''listaz.add(x)'' * No se puede porque las listas son inmutables * **''lista.append(x)''** **Las instrucciones que se colocan después de un bloque ''else'', ¿cuándo se ejecuta?** * Cuando la condición del ''if'' es verdadera. * **Cuando la condición del ''if'' es falsa**. * Incondicionalmente, sea cual sea el resultado de la condición. **¿Qué hace la palabra clave ''break'' en un bucle?** * **Interrumpir el bucle, continuando la ejecución en el código que está después de dicho bucle**. * Saltarse instrucciones para continuar en la siguiente vuelta o iteracción. * Termina forzosamente la ejecución de un programa. **¿Qué diferencia hay entre los operadores ''%%==%%'' y ''='' en Python?** * Son lo mismo * Con ''%%==%%'' se asignan los valores a una variable; con ''='' se compara si son equivalentes dos expresiones. * **Con ''='' se asignan los valores a una variable; con ''%%==%%'' se compara si son equivalentes dos expresiones**. ===== Bibliotecas de terceros ===== Algunas bibliotecas de Python interesantes: * [[https://www.djangoproject.com/|Django]]: framework para desarrollo web. * Flask: biblioteca para el desarrollo web. * [[informatica:programacion:python:modulos:pyqt|PyQt6]]: para crear interfaces gráficas de usuario * [[https://docs.python.org/3/library/tkinter.html|TkInter]]: para crear interfaces gráficas de usuario ([[https://realpython.com/python-gui-tkinter/|Tutorial]]) * **BeautifulSoup**: biblioteca para procesar elementos en texto estructurado (XML y HTML). Muy utilizada para la práctica del "web scrapping", o extracción de datos de páginas y servicios web. * **Colorama**: permite imprimir textos en colores en la salida de la terminal o consola, incluyendo el fondo o estilo del texto, en múltiples plataformas * [[informatica:programacion:python:modulos:pandas|Pandas]]: biblioteca para el análisis y manipulación de datos. Hay quien lo utiliza con cantidades ingentes de información, para procesar y transformar datos. * NumPy * Scikit-learn * MatplotLib * Seaborn * SQLAlchemy: proporciona las herramientas necesarias para administrar la conectividad a una base de datos relacional, interactuar con las consultas y los resultados de las bases de datos y la construcción de las declaraciones en SQL. * Natural Language Toolkit: procesamiento del lenguaje natural * Requests: Biblioteca para realizar peticiones HTTP desde Python de forma sencilla y obtener las respuestas de las mismas. Python incluye por defecto la biblioteca ''http'', pero Requests es más fácil de usar. * [[https://python-pillow.org/|Pillow]]: procesar y generar imágenes con Python. * [[https://geopandas.org/en/stable/|GeoPandas]]: es una biblioteca que complementa a Pandas, ampliando las funciones de esta última para poder procesar datos geoespaciales. ===== Diseño de proyectos ===== Está todo centrado en Programación Orientada a Objetos. * https://devexperto.com/ley-de-demeter/ * https://en.wikipedia.org/wiki/Law_of_Demeter * https://es.wikipedia.org/wiki/SOLID