Herramientas de usuario

Herramientas del sitio


informatica:programacion:python:cursos:introduccion_programacion_python

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:python:cursos:introduccion_programacion_python [2023/04/20 18:43] – [Temario] tempwininformatica:programacion:python:cursos:introduccion_programacion_python [2023/04/29 00:33] (actual) – [Temario] tempwin
Línea 17: Línea 17:
     * Introducción de datos –input()     * Introducción de datos –input()
     * Ejercicios prácticos     * Ejercicios prácticos
-  * **Bloque II: Variables y tipos de datos**+  * **[[informatica:programacion:python:cursos:introduccion_programacion_python:variables_y_tipos_de_datos|Bloque II: Variables y tipos de datos]]**
     * Variables     * Variables
     * Tipos de datos     * Tipos de datos
Línea 81: Línea 81:
     * Métodos especiales     * Métodos especiales
     * Ejercicios prácticos     * Ejercicios prácticos
 +  * [[informatica:programacion:python:cursos:introduccion_programacion_python:ejemplos_practicos|Ejemplos prácticos]]
  
 +===== Software necesario =====
  
-===== Variables tipos de datos =====+  * [[https://www.python.org/downloads/|Intérprete 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]]
  
-==== Definición de variables ====+==== Jupyter Lab ====
  
-<code python> +Para instalar, desde el terminal:
-nombre_de_la_variable = valor +
-</code>+
  
-Python es un lenguaje de tipado "débil" y dinámico. No es necesario definir el tipo de dato que va a contener una variable. Python lo infiere. +<code> 
- +python3 -m venv .venv
-<code python+
-a = 1 +
-type(a) # int +
- +
-a = "hola" +
- +
-type(a) # str+
 </code> </code>
  
-<WRAP center round info 60%> +<code> 
-La función ''type'' permite averiguar qué tipo de dato es lo que se le pasa por argumento +source .venv/bin/activate
-</WRAP> +
- +
-Definición de una variable como resultado de una operación: +
- +
-<code python+
-b = 5 * 3 +
- +
-b # 15 +
- +
-c = (b + 1) +
- +
-c # 8.0 +
- +
-type(c) # float+
 </code> </code>
  
-Como la división podría dar lugar a un número con decimales, Python lo transforma en un tipo de dato flotante. El operador de división ''/'' tiene que servir tanto para enteros como para flotantes. Si queremos hacer explícitamente una división entera, existe el operador ''%%//%%''. Con el operador ''%'' podríamos obtener el resto de la división:+Instalamos el módulo de Jupyter Lab:
  
-<code python+<code> 
-r = 7 % 2 +pip install jupyterlab
- +
-r # 1+
 </code> </code>
  
-==== Operaciones aritméticas ==== +Lanzamos el entorno:
- +
-  * Suma''a + b'' +
-  * Resta: ''a - b'' +
-  * Cambio de signo: ''-a'' +
-  * Multiplicación: ''a * b'' +
-  * División: ''a / b'', ''a %%//%% b'' +
-  * Potencia: ''a %%**%% b'' +
-  * Módulo / resto división entera: ''a % b''+
  
-<code python+<code> 
-f = 1 + c * 5 - (b + 1) 3+source .venv/bin/activate 
 +jupyter-lab
 </code> </code>
 +===== Ejercicios =====
  
-Primero se evalúa lo que hay entre paréntesis y luego operaciones de potencia, multiplicación, división y finalmente suma y resta:+Investigue algún paquete en https://pypi.org de entre los siguientes:
  
-  - (b + 1) +  * Django 
-  - / 3 +  * Flask 
-  - c 5 +  * PyQt6 
-  - 1 + +  * BeautifulSoup 
 +  * Colorama 
 +  * pandas 
 +  * scikit-learn 
 +  * matplotlib 
 +  * seaborn 
 +  * SQLAlchemy
  
-==== Operaciones lógicas ====+Elija uno y descríbalo, indicando los siguientes puntos:
  
-Afectan a valores lógicos o //booleanos//+  - 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
  
-  * ''%%==%%'': igualdad +===== Cuestionario =====
-  * ''>'': mayor que +
-  * ''<'': menor que +
-  * ''>='': mayor o igual que +
-  * ''<='': menor o igual que +
-  * ''!='': distinto +
-  * ''and'' +
-  * ''or'' +
-  * ''not''+
  
-Tabla de verdad del operador ''and'':+**¿En qué se diferencian las listas y las tuplas de Python?**
  
-^    Expresión    ^ Se evalúa a ^ +  * Las listas son inmutables, mientras que las tuplas se pueden modificar. 
-| True and True   |   True      | +  * **Las tuplas son inmutables, mientras que las listas se pueden modificar** 
-| True and False  |   False     | +  * Se comportan exactamente igual
-| False and True  |   False     | +
-| False and False |   False     |+
  
-Tabla de verdad del operador ''or'':+**¿Qué secuencia de números genera ''range(5)''?**
  
-^    Expresión    ^ Se evalúa a ^ +  * **0, 1, 2, 3, 4** 
-| True and True   |   True      | +  * 1, 2, 3, 4, 5 
-| True and False  |   True      | +  * 0, 1, 2, 3, 4, 5
-| False and True  |   True      | +
-| False and False |   False     |+
  
 +**¿Cuántas veces se puede llegar a repetir un bucle while?**
  
-Tabla de verdad del operador ''not'':+  * Una o ninguna 
 +  * 1 o más 
 +  * **0 o más**
  
-^    Expresión  ^ Se evalúa a ^ +**¿Qué representa ''self'' dentro del código de una clase en Python?**
-| not True      |   False     | +
-| not False       True      |+
  
 +  * Define una representación textual del objeto
 +  * Indica el nombre de la clase
 +  * **Se refiere al mismo objeto con el que se está trabajando**.
  
-<code python> +**¿Una función puede recibir más de un parámetro opcional?**
-p = True +
-q = False +
-s = True+
  
-pqs # (TrueFalse, True)+  * Nosolamente 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.
  
-w = p or q # True +**¿Qué tipo de datos propio de Python permite asociar claves valores?**
-= p and s # True +
-z = not q # True +
-</code>+
  
-Aunque no existe la operación **XOR** (or exclusivo), se puede emular como:+  Conjuntos (set) 
 +  Tuplas (tuple) 
 +  * **Diccionarios (dict)**
  
-<code python> +**¿Cómo se puede añadir un elemento al final de una lista en Python?**
-x = (p and not q) or (not p and q) +
-</code>+
  
-Orden de precedencia de operaciones lógicas:+  * ''listaz.add(x)'' 
 +  * No se puede porque las listas son inmutables 
 +  * **''lista.append(x)''**
  
-  - Se evalúa lo que haya entre paréntesis +**Las instrucciones que se colocan después de un bloque ''else'', ¿cuándo se ejecuta?**
-  - not +
-  - and +
-  - or+
  
-En Python se utiliza la **lógica de cortocircuito**, que quiere decir que si una expresión lógica compleja sabemos que va a dar un determinado resultado sin necesidad de evaluar todos sus componentes, ya no sigue procesando. Por ejemplo, en una operación ''a and b'', si ''a'' es falsoya no es necesario evaluar ''b'' para conocer el resultado.+  * Cuando la condición del ''if'' es verdadera. 
 +  * **Cuando la condición del ''if'' es falsa**. 
 +  * Incondicionalmentesea cual sea el resultado de la condición.
  
-=== Operaciones con cadenas de caracteres  ===+**¿Qué hace la palabra clave ''break'' en un bucle?**
  
-  * Concatenación de las cadenas ''a'' y ''b'': ''a + b'' +  * **Interrumpir el bucle, continuando la ejecución en el código que está después de dicho bucle**. 
-  Repetición de la cadena ''a'' n veces (''n'' debe ser un número entero): ''n'' +  * Saltarse instrucciones para continuar en la siguiente vuelta iteracción. 
-  * Longitud número de caracteres de una cadena: ''len(a)'' +  * Termina forzosamente la ejecución de un programa.
-  * Conversión de cualquier valor a cadena: ''str(x)''+
  
-<code python> +**¿Qué diferencia hay entre los operadores ''%%==%%'' y ''='' en Python?**
-"Hola" +
-"Mundo"+
  
-s, t # ('Hola''Mundo')+  * 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**.
  
-s + t # 'HolaMundo'+===== Bibliotecas de terceros =====
  
-s * 3 # 'HolaHolaHola'+Algunas bibliotecas de Python interesantes:
  
-len(s# 4+  * [[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 =====
- +
-str(q) # '4' +
-</code> +
- +
-Si quisiéramos unir cadenas con algún caracter, podemos usar el método ''join'': +
- +
-<code python> +
-"Hola" +
-"mundo" +
- +
-"_".join # 'Hola_mundo' +
-</code> +
- +
-<WRAP center round tip 60%> +
-Todas las operaciones que podríamos hacer con cadenas de caracteres podemos verlas con ''help(str)'' o en la [[https://docs.python.org|documentación oficial]] +
-</WRAP> +
- +
-=== Operaciones de comparación  === +
- +
-Sirven para comparar dos valores de varias formas diferentes, dando como resultado un valor booleano: +
- +
-  * Igualdad: ''a %%==%% b'' +
-  * Diferente o no es igual: ''a != b'' +
-  * Mayor que: ''a > b'' +
-  * Menor que: ''a < b'' +
-  * Mayor o igual que: ''a >= b'' +
-  * Menor o igual que: ''a <= b'' +
- +
-Los tipos de datos que se pueden comparar deben tener definido un orden, como ocurre con los números enteros, los números de coma flotante o las cadenas de caracteres, entre otros. +
- +
-<code python> +
-a = 3 +
-b = 4 +
-c = 3 +
- +
-a == b # False +
- +
-a !=b # True +
- +
-a > c # False +
- +
-a >= c # True +
- +
-b < c # False +
- +
-a = "Alpha" +
-b = "Bravo" +
- +
-a < b # True (por el orden lexicográfico) +
-</code> +
- +
-=== Formato de cadena de caracteres === +
- +
-<code python> +
-mi_variable #34.6666666666666664 +
-</code> +
- +
-Queremos imprimir la variable ''mi_variable'' con cierto formato, podemos emplear varias técnicas. +
- +
-Usando ''f'' antes de la cadena. +
- +
-<code python> +
-print(f"La variable a vale {mi_variable:5.3f}") # La variable a vale 34.677 +
-</code> +
- +
-En el ejemplo anterior también estamos indicando el número de posiciones (al menos) y número de decimales. En ese caso, el número de posiciones (5) no parece muy útil salvo que se quiera dejar espacios delante del número. Si solo queremos trabajar con los decimales, omitimos la parte de las posiciones: +
- +
-<code python> +
-print(f"La variable a vale {mi_variable:.3f}") # La variable a vale 34.677 +
-</code> +
- +
-Otra variante utilizando el método ''format'': +
- +
-<code python> +
-print("La variable a vale {mi_variable:.3f}".format(mi_variable)) # La variable a vale 34.677 +
-</code> +
- +
-<WRAP center round info 60%> +
-Más información sobre formato de cadena de caracteres en la [[https://docs.python.org/3/library/string.html#format-examples|documentación oficial]] +
-</WRAP> +
- +
- +
-=== Redondeado y truncado de decimales === +
- +
-Podríamos truncar (quitar) la parte decimal de un número convirtiéndolo a entero: +
- +
-<code python> +
-a = 34.6666666666666664 +
- +
-int(a) # 34 +
-</code> +
- +
-Si queremos redondear decimales, es decir, el entero más próximo, podemos usar la función ''round'': +
- +
-<code python> +
-round(a, 2) # 34.67 +
- +
-round(a) # 35 +
-</code> +
- +
-==== Ejercicios de ejemplo ==== +
- +
-<code python> +
-# Cálculo del área y perímetro de un rectángulo +
- +
-# Primer paso: toma de datos +
-base = float(input("Base del rectángulo: ")) +
-altura = float(input("Altura del rectángulo: ")) +
- +
-# Segundo paso: procesamiento +
-area = base * altura +
-perimetro = 2 * (base + altura) +
- +
-# Tercer paso: mostrar resultados +
-print(f"Área del rectángulo: {area:g}"+
-print(f"Perímetro del rectángulo: {perimetro:.2f}) +
-</code> +
- +
-<code python> +
-# Cálculo de una ecuación de segundo grado +
-from math import sqrt # Cargamos el módulo 'math', pero nos quedamos con su función 'sqrt' +
-# import math # importaríamos todo el módulo +
- +
-# Primer paso: toma de datos; coeficientes a, b y c +
-print("ax^2 + bx + c = 0") +
-a = float(input("Coeficiente a: ")) +
-b = float(input("Coeficiente b: ")) +
-c = float(input("Coeficiente c: ")) +
- +
-# Segundo paso: cálculo de las raíces/soluciones +
-x1 (-b + sqrt(b**2 - 4 * a * c)) / 2 * a +
- +
-x2 (-b - sqrt(b**2 - 4 * a * c)) / 2 * a +
- +
-# Tercer paso: mostrar resultados +
-print(f"Soluciones: {x1} y {x2}"+
-</code>+
  
 +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
informatica/programacion/python/cursos/introduccion_programacion_python.1682008982.txt.gz · Última modificación: por tempwin