Guía Completa de Python 3
🐍
GUÍA COMPLETA DE APRENDIZAJE
PYTHON 3
De Principiante a Intermedio
Incluye:
✓ Definiciones y Sintaxis Completa
✓ Ejemplos Prácticos Detallados
✓ Mapas Mentales de Cada Tema
✓ +19 Ejercicios Prácticos Resueltos
✓ Consejos de Implementación
✓ Glosario y Referencia Completa
10 Capítulos • 2 Apéndices
Learning Series — 2024
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
TABLA DE CONTENIDOS
Capítulo 1: Fundamentos de Python Instalación, Variables, Tipos, Comentarios, Entrada de
datos
Capítulo 2: Operadores en Python Aritméticos, Relacionales, Lógicos, Asignación,
print(sep/end)
Capítulo 3: Estructuras Condicionales if, if-else, elif, anidadas + Ejercicios 1, 2, 3
Capítulo 4: Bucles e Iteración while, break/continue, for, range() + Ejercicios 4, 5, 7, 8, 9
Capítulo 5: Manipulación de Cadenas (Strings) len, format, f-strings, strip, mayúsculas,
búsqueda, slicing + Ejercicio 6
Capítulo 6: Listas Métodos, listas anidadas, matrices + Ejercicios 10, 11, 12, 13, 14
Capítulo 7: Diccionarios Todos los métodos, iteración + Ejercicio 15
Capítulo 8: Tuplas Desempaquetado, zip(), tuple() + Ejercicios 16, 17, 18, 19
Capítulo 9: Conjuntos (Sets) Operaciones matemáticas, métodos de modificación
Capítulo 10: Temas Avanzados Comprensiones, enumerate, import, random, try-except
Apéndice A: Glosario
Apéndice B: Referencia Completa – Palabras Reservadas, Métodos y Funciones
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
PRÓLOGO
Esta Guía Completa de Aprendizaje de Python está diseñada para llevarte desde los
conceptos más básicos hasta el manejo fluido de las estructuras de datos fundamentales
del lenguaje. Cada tema está presentado de manera progresiva, con definiciones claras,
sintaxis detallada, ejemplos prácticos, mapas mentales y consejos de implementación del
mundo real.
Python es hoy uno de los lenguajes de programación más demandados en el mercado
laboral, utilizado en desarrollo web, ciencia de datos, inteligencia artificial, automatización,
desarrollo de aplicaciones de escritorio, y mucho más. Aprender Python es una inversión
que te abrirá puertas en prácticamente cualquier área de la tecnología.
¿Cómo usar esta guía?
1. Lee cada sección en orden — los capítulos están diseñados para construirse uno
sobre el otro.
2. Escribe el código — no lo copies: escribirlo ayuda a memorizar la sintaxis.
3. Resuelve los ejercicios antes de ver la solución.
4. Consulta los apéndices como referencia rápida mientras programas.
5. Practica todos los días — la consistencia es más importante que la intensidad.
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
CAPÍTULO 1: Fundamentos de Python
Este capítulo sienta las bases de tu viaje como programador Python. Aprenderás desde
cómo instalar el lenguaje hasta declarar tus primeras variables y comprender los tipos de
datos fundamentales.
1.1 Introducción e Instalación de Python
📖 ¿Qué es Python?
Python es un lenguaje de programación de alto nivel, interpretado, de propósito general y de
tipado dinámico, creado por Guido van Rossum en 1991. Se distingue por su sintaxis clara y
legible, lo que lo hace ideal tanto para principiantes como para profesionales.
🔑 Características Principales
• Interpretado: el código se ejecuta línea a línea sin compilación previa.
• Multiplataforma: funciona en Windows, macOS y Linux.
• Multiparadigma: soporta programación procedural, orientada a objetos y funcional.
• Gran ecosistema: más de 400,000 paquetes disponibles en PyPI.
• Open source y gratuito.
⚙️ Instalación Paso a Paso
6. Visita [Link]
7. Descarga la versión más reciente (Python 3.x).
8. En Windows: ejecuta el instalador y marca "Add Python to PATH".
9. En macOS/Linux: usa el instalador o el gestor de paquetes (brew install python3 /
sudo apt install python3).
10. Verifica la instalación abriendo una terminal y escribiendo:
python --version
# o en algunos sistemas:
python3 --version
📝 IDEs Recomendados
• VS Code (gratuito, extensión Python de Microsoft)
• PyCharm (Community Edition gratuito)
• Thonny (ideal para principiantes)
• Jupyter Notebook (para ciencia de datos)
💡 Consejo Práctico
Instala siempre la última versión estable de Python 3.
Activa "Add Python to PATH" durante la instalación en Windows para poder usar python
desde cualquier directorio.
Puedes verificar la instalación escribiendo: python --version en la terminal.
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
1.2 Ejecución y Compilación de un Programa Python
📖 ¿Cómo funciona Python internamente?
Python es un lenguaje interpretado. Cuando ejecutas un archivo .py, el intérprete convierte
el código fuente a bytecode (.pyc) y luego la máquina virtual de Python (PVM) lo ejecuta
línea a línea.
📐 Sintaxis Básica – Tu Primer Programa
# mi_primer_programa.py
print("¡Hola, mundo!")
print("Bienvenido a Python")
▶️ Formas de Ejecutar Python
• Modo interactivo: escribe python en la terminal → aparece el prompt >>>
• Ejecutar archivo: python nombre_archivo.py
• Desde el IDE: botón Run (▶) o F5
# Ejecutar desde terminal:
python hola_mundo.py
# Modo interactivo:
>>> print("Hola")
Hola
>>> 2 + 3
5
💡 Consejo Práctico
Siempre guarda tus archivos con extensión .py
Usa nombres descriptivos como [Link], no [Link]
En Linux/macOS, puedes hacer el archivo ejecutable con: chmod +x mi_script.py
1.3 Variables en Python
📖 ¿Qué es una Variable?
Una variable es un espacio en memoria con un nombre que permite almacenar y manipular
datos. En Python, las variables no requieren declaración de tipo; se crean automáticamente
al asignarles un valor.
📐 Sintaxis de Declaración
nombre_variable = valor
# Ejemplos:
edad = 25
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
nombre = "Carlos"
precio = 99.99
es_activo = True
📏 Reglas para Nombrar Variables
• Deben comenzar con letra o guion bajo (_).
• Solo pueden contener letras, números y guiones bajos.
• No pueden ser palabras reservadas (if, for, while, etc.).
• Python distingue MAYÚSCULAS de minúsculas: edad ≠ Edad ≠ EDAD.
• Convención: usar snake_case → nombre_completo, precio_total.
# Variables válidas:
nombre = "Ana"
_contador = 0
precio_total = 150.50
nombreCliente = "Juan" # camelCase (válido pero no recomendado)
# Variables NO válidas:
# 1edad = 25 # Error: comienza con número
# mi-nombre = "" # Error: guion medio no permitido
# for = 5 # Error: palabra reservada
🔄 Asignación Múltiple
# Asignar el mismo valor a varias variables:
a = b = c = 0
# Asignar diferentes valores en una línea:
x, y, z = 1, 2, 3
nombre, edad = "Maria", 30
# Intercambiar valores (swap):
a, b = b, a
MAPA MENTAL: Variables en Python
◆ Declaración
→ nombre = valor
→ sin declarar tipo
→ tipado dinámico
◆ Tipos Automáticos
→ int → edad = 25
→ float → precio = 9.99
→ str → nombre = "Ana"
→ bool → activo = True
◆ Convenciones
→ snake_case recomendado
→ nombres descriptivos
→ CONSTANTES_EN_MAYUSCULA
◆ Operaciones
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
→ Asignación: =
→ Múltiple: a, b = 1, 2
→ Swap: a, b = b, a
💡 Consejo Práctico
Usa nombres descriptivos: precio_total es mucho mejor que pt o x.
Las CONSTANTES se escriben en MAYÚSCULAS por convención: PI = 3.14159
Puedes ver el tipo de una variable con: type(variable)
1.4 Tipos de Datos en Python
📖 Tipos de Datos
Los tipos de datos definen qué clase de información puede almacenar una variable y qué
operaciones se pueden realizar sobre ella. Python asigna el tipo automáticamente según el
valor asignado.
Tipo Descripción Ejemplo Función type()
int Números enteros 42, -7, 0 <class 'int'>
float Números decimales 3.14, -0.5 <class 'float'>
str Cadenas de texto "Hola", 'Python' <class 'str'>
bool Verdadero/Falso True, False <class 'bool'>
list Lista ordenada mutable [1, 2, 3] <class 'list'>
tuple Tupla ordenada inmutable (1, 2, 3) <class 'tuple'>
dict Diccionario clave-valor {'a': 1} <class 'dict'>
set Conjunto sin duplicados {1, 2, 3} <class 'set'>
NoneType Ausencia de valor None <class 'NoneType'>
# Ejemplos con type():
entero = 42
decimal = 3.14
texto = "Python"
booleano = True
nada = None
print(type(entero)) # <class 'int'>
print(type(decimal)) # <class 'float'>
print(type(texto)) # <class 'str'>
print(type(booleano)) # <class 'bool'>
# Conversión de tipos (casting):
numero_str = "123"
numero_int = int(numero_str) # "123" → 123
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
numero_float = float(numero_str) # "123" → 123.0
texto_num = str(456) # 456 → "456"
💡 Consejo Práctico
Usa int() para convertir strings a enteros, float() para decimales.
Ten cuidado: int("3.14") dará error; usa int(float("3.14")).
isinstance(variable, tipo) es mejor que type() para comprobar tipos.
1.5 Palabras Reservadas en Python
📖 Palabras Reservadas (Keywords)
Son palabras que Python reserva para su propio uso. No pueden usarse como nombres de
variables, funciones ni clases. Python 3 tiene 35 palabras reservadas.
Palabra Uso Principal Palabra Uso Principal
False Valor booleano falso None Ausencia de valor
True Valor booleano verdadero and Operador lógico Y
or Operador lógico O not Operador lógico NO
if Condicional elif Condicional alternativo
else Alternativa condicional for Bucle para
while Bucle mientras break Romper bucle
continue Saltar iteración pass Sin operación
def Definir función return Retornar valor
class Definir clase import Importar módulo
from Importar desde as Alias en import
try Manejo de errores except Capturar excepción
finally Siempre se ejecuta raise Lanzar excepción
with Gestor de contexto lambda Función anónima
in Pertenencia is Identidad
del Eliminar variable global Variable global
nonlocal Variable no local yield Generador
assert Verificar condición async Async/Await
await Esperar tarea async
💡 Consejo Práctico
Si Python te da un SyntaxError al declarar una variable, verifica que no sea una palabra
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
reservada.
Puedes ver todas las palabras reservadas con: import keyword; print([Link])
1.6 Comentarios en Python
📖 Comentarios
Los comentarios son anotaciones en el código que el intérprete de Python ignora
completamente. Se usan para documentar el código, explicar su propósito y facilitar el
mantenimiento.
📐 Sintaxis
# Comentario de una sola línea
"""
Comentario de múltiples líneas (docstring).
Se usa para documentar módulos, funciones y clases.
También para deshabilitar bloques de código temporalmente.
"""
nombre = "Python" # Comentario al final de una línea de código
# Ejemplo práctico:
# Calculamos el área de un círculo
PI = 3.14159 # Constante matemática Pi
radio = 5 # Radio del círculo en metros
area = PI * radio ** 2 # Fórmula: A = π * r²
print(f"El área es: {area:.2f} m²")
💡 Consejo Práctico
Comenta el "por qué", no el "qué". El código muestra QUÉ hace; el comentario debe explicar
POR QUÉ.
Usa docstrings (""") para documentar funciones y módulos; usa # para notas dentro del
código.
Evita comentarios obvios: x = x + 1 # suma 1 a x → no aporta valor.
1.7 Entrada de Datos desde el Teclado
📖 La función input()
La función input() detiene la ejecución del programa y espera que el usuario escriba algo y
presione Enter. Siempre devuelve un valor de tipo string (str), sin importar qué escriba el
usuario.
📐 Sintaxis
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
variable = input("Mensaje al usuario: ")
# Para obtener números, debes convertir:
edad = int(input("¿Cuántos años tienes? "))
precio = float(input("Ingresa el precio: "))
# Ejemplo completo:
nombre = input("¿Cuál es tu nombre? ")
edad = int(input("¿Cuántos años tienes? "))
print(f"Hola, {nombre}. Tienes {edad} años.")
# Salida si el usuario escribe Ana y 28:
# Hola, Ana. Tienes 28 años.
⚠️ Advertencia
input() SIEMPRE devuelve un string. Si necesitas números, debes convertir con int() o
float(). Si el usuario escribe texto donde esperas un número, obtendrás un ValueError.
💡 Consejo Práctico
Siempre valida la entrada del usuario con try-except cuando esperas números.
Escribe mensajes claros en input() para indicar qué se espera: input("Ingresa tu edad
(número entero): ")
CAPÍTULO 2: Operadores en Python
Los operadores son símbolos que realizan operaciones sobre valores y variables. Python
cuenta con operadores aritméticos, relacionales, lógicos y de asignación.
2.1 Operadores Aritméticos
📖 Operadores Aritméticos
Realizan operaciones matemáticas entre valores numéricos (int o float).
Operador Nombre Ejemplo Resultado
+ Suma 5 + 3 8
- Resta 10 - 4 6
* Multiplicación 6 * 7 42
/ División (float) 10 / 3 3.3333...
// División entera 10 // 3 3
% Módulo (resto) 10 % 3 1
** Potencia 2 ** 8 256
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
a = 15
b = 4
print(a + b) # 19
print(a - b) # 11
print(a * b) # 60
print(a / b) # 3.75
print(a // b) # 3 ← parte entera
print(a % b) # 3 ← resto
print(a ** b) # 50625 ← 15^4
⚡ Precedencia de Operadores (de mayor a menor)
• 1° Paréntesis: ()
• 2° Potencia: **
• 3° Unario: +x, -x
• 4° Multiplicación, División: *, /, //, %
• 5° Suma, Resta: +, -
# Precedencia en acción:
resultado = 2 + 3 * 4 # → 2 + 12 = 14 (no 20)
resultado = (2 + 3) * 4 # → 5 * 4 = 20
resultado = 2 ** 3 ** 2 # → 2 ** 9 = 512 (derecha a izquierda)
MAPA MENTAL: Operadores Aritméticos
◆ Básicos
→ + Suma
→ - Resta
→ * Multiplicación
→ / División
◆ Avanzados
→ // División entera
→ % Módulo/Resto
→ ** Potencia
◆ Usos comunes del módulo %
→ Verificar par/impar: n % 2
→ Ciclos modulares
→ Separar dígitos
◆ Precedencia
→ () primero
→ ** segundo
→ *, /, //, % tercero
→ +, - cuarto
💡 Consejo Práctico
El operador % (módulo) es muy útil: si n % 2 == 0, el número es par.
Usa // para división entera sin decimales: 7 // 2 = 3 (no 3.5).
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
Paréntesis siempre ganan: cuando dudes, ¡úsalos!
2.2 Operadores Relacionales
📖 Operadores Relacionales (Comparación)
Comparan dos valores y devuelven siempre un valor booleano: True o False.
Operador Significado Ejemplo Resultado
== Igual a 5 == 5 True
!= Diferente de 5 != 3 True
> Mayor que 7 > 4 True
< Menor que 3 < 1 False
>= Mayor o igual que 5 >= 5 True
<= Menor o igual que 4 <= 3 False
x = 10
y = 20
print(x == y) # False
print(x != y) # True
print(x < y) # True
print(x > y) # False
print(x >= 10) # True
print(y <= 15) # False
# Se pueden encadenar:
edad = 25
print(18 <= edad <= 65) # True → 25 está entre 18 y 65
⚠️ Advertencia
No confundas = (asignación) con == (comparación). edad = 25 asigna; edad == 25 compara.
💡 Consejo Práctico
Python permite encadenar comparaciones: 0 < x < 10 equivale a 0 < x and x < 10.
Para comparar strings, Python compara alfabéticamente: "Ana" < "Carlos" es True.
2.3 Operadores Lógicos
📖 Operadores Lógicos
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
Combinan o invierten expresiones booleanas. Python usa las palabras and, or y not en lugar
de &&, || y ! como otros lenguajes.
Operador Descripción Ejemplo Resultado
and True si AMBOS son True True and False False
or True si AL MENOS UNO es True True or False True
not Invierte el valor booleano not True False
📊 Tablas de Verdad
A B A and B A or B not A
True True True True False
True False False True False
False True False True True
False False False False True
edad = 22
tiene_licencia = True
# and: ambas condiciones deben ser True
puede_conducir = edad >= 18 and tiene_licencia
print(puede_conducir) # True
# or: al menos una condición True
dia = "sábado"
es_fin_semana = dia == "sábado" or dia == "domingo"
print(es_fin_semana) # True
# not: invierte el valor
llueve = False
print(not llueve) # True (no llueve → puede salir)
MAPA MENTAL: Operadores Lógicos
◆ and (Y lógico)
→ Ambos True → True
→ Cualquier False → False
→ Uso: validaciones múltiples
◆ or (O lógico)
→ Cualquier True → True
→ Ambos False → False
→ Uso: condiciones alternativas
◆ not (NO lógico)
→ Invierte True/False
→ not True → False
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
→ Uso: negar condiciones
◆ Cortocircuito
→ and: si primero es False, no evalúa segundo
→ or: si primero es True, no evalúa segundo
💡 Consejo Práctico
Python evalúa "cortocircuito": en and, si la primera condición es False, no evalúa la segunda.
Precedencia lógica: not → and → or. Usa paréntesis para mayor claridad.
Combina operadores: (x > 0 and x < 100) or x == -1
2.4 Operadores de Asignación
📖 Operadores de Asignación
Asignan valores a variables. Los operadores de asignación compuestos combinan una
operación aritmética con la asignación, actualizando la variable en un solo paso.
Operador Equivalente a Ejemplo (x=10) Resultado
= Asignación simple x = 10 x = 10
+= x = x + n x += 5 x = 15
-= x = x - n x -= 3 x = 7
*= x = x * n x *= 2 x = 20
/= x = x / n x /= 4 x = 2.5
//= x = x // n x //= 3 x = 3
%= x = x % n x %= 3 x = 1
**= x = x ** n x **= 2 x = 100
contador = 0
contador += 1 # contador = 1
contador += 1 # contador = 2
contador += 1 # contador = 3
print(contador) # 3
precio = 100
precio *= 1.19 # Agregar IVA del 19%
print(precio) # 119.0
puntos = 50
puntos -= 10 # Restar puntos
print(puntos) # 40
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
💡 Consejo Práctico
x += 1 es la forma idiomática de incrementar en Python (no existe x++ como en C o Java).
Los operadores de asignación compuesta hacen el código más limpio y eficiente.
2.5 Los Parámetros end y sep en print()
📖 Parámetros de print()
La función print() tiene parámetros opcionales que controlan cómo se muestra la salida: sep
define el separador entre argumentos y end define qué se escribe al final (por defecto, un
salto de línea).
📐 Sintaxis
print(valor1, valor2, ..., sep="separador", end="final")
# Valores por defecto:
# sep = " " (espacio)
# end = "\n" (salto de línea)
# sep: separador entre argumentos
print("a", "b", "c") # a b c
print("a", "b", "c", sep="-") # a-b-c
print("a", "b", "c", sep=", ") # a, b, c
print("a", "b", "c", sep="") # abc
# end: qué va al final
print("Hola", end=" ") # Hola (sin salto)
print("Mundo") # Mundo → en la misma línea: Hola
Mundo
# Combinar sep y end:
print(1, 2, 3, sep=" | ", end=" → fin\n")
# 1 | 2 | 3 → fin
💡 Consejo Práctico
Usa end="" para imprimir en la misma línea dentro de un bucle.
print(*lista, sep=", ") imprime todos los elementos de una lista separados por comas.
CAPÍTULO 3: Estructuras Condicionales
Las estructuras condicionales permiten que un programa tome decisiones: ejecutar un
bloque de código solo si se cumple una condición. Python usa la indentación (4 espacios)
para delimitar los bloques de código.
3.1 Sentencia Condicional Simple – if
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
📖 La sentencia if
Ejecuta un bloque de código únicamente si la condición especificada es verdadera (True). Si
la condición es falsa (False), el bloque se omite por completo.
📐 Sintaxis
if condición:
instrucción_1
instrucción_2
# ... (indentación 4 espacios)
# Ejemplo 1: Verificar mayoría de edad
edad = 20
if edad >= 18:
print("Eres mayor de edad")
print("Puedes ingresar")
# Ejemplo 2: Verificar número positivo
numero = 15
if numero > 0:
print(f"{numero} es un número positivo")
MAPA MENTAL: Sentencia if
◆ Estructura
→ if condición:
↳ bloque (indentado 4 espacios)
◆ La condición puede ser
→ Comparación: x > 5
→ Lógica: x > 0 and x < 10
→ Variable booleana: if es_valido:
→ Valor truthy/falsy: if nombre:
◆ Truthy (evalúan como True)
→ Números distintos de 0
→ Strings no vacíos
→ Listas/dicts no vacíos
◆ Falsy (evalúan como False)
→ 0, 0.0
→ "" (string vacío)
→ [], {}, () vacíos
→ None
💡 Consejo Práctico
Python usa indentación (4 espacios o Tab) en lugar de llaves {} para delimitar bloques.
Una condición puede ser cualquier expresión que devuelva True o False.
if nombre: es equivalente a if nombre != "": (strings vacíos son falsy).
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
3.2 Sentencia Condicional Compuesta – if – else
📖 La sentencia if-else
Permite ejecutar un bloque si la condición es True y otro bloque alternativo si es False.
Garantiza que siempre se ejecute uno de los dos bloques.
📐 Sintaxis
if condición:
# bloque si condición es True
instrucciones_verdaderas
else:
# bloque si condición es False
instrucciones_falsas
# Ejemplo 1: Par o impar
numero = 7
if numero % 2 == 0:
print(f"{numero} es par")
else:
print(f"{numero} es impar")
# Ejemplo 2: Aprobado o reprobado
nota = float(input("Ingresa tu nota (0-100): "))
if nota >= 60:
print("¡Aprobado! 🎉")
else:
print("Reprobado. Sigue intentándolo 💪")
💡 Consejo Práctico
El bloque else siempre debe ir al mismo nivel de indentación que el if.
Puedes usar el operador ternario para if-else simples: resultado = "par" if n % 2 == 0 else
"impar"
3.3 Sentencias Condicionales Múltiples – elif
📖 La cláusula elif
elif (else if) permite evaluar múltiples condiciones en secuencia. Python evalúa cada
condición de arriba hacia abajo y ejecuta el primer bloque cuya condición sea True.
📐 Sintaxis
if condición_1:
instrucciones_1
elif condición_2:
instrucciones_2
elif condición_3:
instrucciones_3
else:
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
instrucciones_por_defecto
# Ejemplo: Calificación con letra
nota = int(input("Ingresa tu nota (0-100): "))
if nota >= 90:
print("Excelente → A")
elif nota >= 80:
print("Muy bueno → B")
elif nota >= 70:
print("Bueno → C")
elif nota >= 60:
print("Suficiente → D")
else:
print("Insuficiente → F")
💡 Consejo Práctico
Python evalúa las condiciones en orden; en cuanto encuentra una True, ejecuta ese bloque
y salta el resto.
Puedes tener tantos elif como necesites, pero solo un if y un else por estructura.
El else al final actúa como "en todos los demás casos".
3.4 Sentencias Condicionales Anidadas
📖 Condicionales Anidadas
Un condicional puede contener otros condicionales dentro de sus bloques. Esto permite
tomar decisiones más complejas con múltiples niveles de verificación.
# Ejemplo: Sistema de acceso con múltiples validaciones
usuario = input("Usuario: ")
password = input("Contraseña: ")
if usuario == "admin":
if password == "1234":
print("Acceso concedido ✅")
print("Bienvenido, administrador")
else:
print("Contraseña incorrecta ❌")
else:
print("Usuario no encontrado ❌")
⚠️ Advertencia
Evita más de 3 niveles de anidación. El código se vuelve difícil de leer. Considera usar
funciones o elif para simplificar.
MAPA MENTAL: Condicionales en Python
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
◆ if (simple)
→ Ejecuta si condición es True
→ if condición:
◆ if-else (compuesto)
→ Siempre ejecuta uno de los dos
→ if ... else ...
◆ elif (múltiple)
→ Evalúa múltiples condiciones
→ if ... elif ... elif ... else
◆ Anidado
→ Condicionales dentro de condicionales
→ Máximo 3 niveles recomendado
◆ Operador ternario
→ x = "par" if n%2==0 else "impar"
→ Útil para asignaciones simples
✏️ Ejercicio Práctico #1: Clasificador de Edades
Escribe un programa que pida la edad del usuario y determine en qué etapa de la vida se
encuentra.
📝 Código:
edad = int(input("Ingresa tu edad: "))
if edad < 0:
print("Edad no válida")
elif edad < 13:
print("Eres un niño/a 🧒")
elif edad < 18:
print("Eres un adolescente 🧑")
elif edad < 65:
print("Eres un adulto/a 👨")
else:
print("Eres un adulto mayor 👴")
📤 Salida esperada:
Ingresa tu edad: 15
Eres un adolescente 🧑
✏️ Ejercicio Práctico #2: Número Par o Impar
Programa que determine si un número ingresado por el usuario es par o impar, y además si
es positivo o negativo.
📝 Código:
numero = int(input("Ingresa un número entero: "))
if numero == 0:
print("El número es cero")
else:
if numero % 2 == 0:
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
tipo = "par"
else:
tipo = "impar"
if numero > 0:
signo = "positivo"
else:
signo = "negativo"
print(f"{numero} es un número {tipo} y {signo}")
📤 Salida esperada:
Ingresa un número entero: -8
-8 es un número par y negativo
✏️ Ejercicio Práctico #3: El Número Más Grande
Programa que recibe tres números del usuario y determina cuál es el mayor.
📝 Código:
a = float(input("Ingresa el primer número: "))
b = float(input("Ingresa el segundo número: "))
c = float(input("Ingresa el tercer número: "))
if a >= b and a >= c:
mayor = a
elif b >= a and b >= c:
mayor = b
else:
mayor = c
print(f"El número mayor es: {mayor}")
# Alternativa más elegante con max():
print(f"Verificación con max(): {max(a, b, c)}")
📤 Salida esperada:
Ingresa el primer número: 45
Ingresa el segundo número: 78
Ingresa el tercer número: 33
El número mayor es: 78.0
CAPÍTULO 4: Bucles e Iteración
Los bucles permiten repetir un bloque de código múltiples veces. Python tiene dos
estructuras de bucle: while (mientras una condición sea verdadera) y for (para cada
elemento en una secuencia).
4.1 Bucle while
📖 El bucle while
Repite un bloque de código mientras la condición especificada sea True. Es fundamental
asegurarse de que la condición eventualmente se vuelva False; de lo contrario, el bucle se
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
ejecutará infinitamente.
📐 Sintaxis
while condición:
instrucciones
# IMPORTANTE: modificar la variable de control
# Ejemplo 1: Contar del 1 al 5
contador = 1
while contador <= 5:
print(f"Contador: {contador}")
contador += 1 # ← Variable de control
# Salida:
# Contador: 1
# Contador: 2
# Contador: 3
# Contador: 4
# Contador: 5
# Ejemplo 2: Menú interactivo
opcion = ""
while opcion != "s":
opcion = input("¿Salir? (s/n): ")
if opcion != "s":
print("Continuando...")
print("¡Hasta luego!")
MAPA MENTAL: Bucle while
◆ Componentes
→ Condición de control
→ Bloque de código
→ Modificador de la condición
◆ Tipos de uso
→ Contador: while i <= n
→ Centinela: while opcion != "s"
→ Bandera: while continuar == True
→ Infinito + break: while True:
◆ Sentencias especiales
→ break → salir del bucle
→ continue → saltar iteración
→ else → ejecutar al terminar
◆ Riesgos
→ Bucle infinito (olvidar modificar condición)
→ Off-by-one errors (<= vs <)
⚠️ Advertencia
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
¡Cuidado con los bucles infinitos! Siempre asegúrate de que la condición del while pueda
volverse False. Si tu programa se cuelga, presiona Ctrl+C para interrumpirlo.
4.2 Las sentencias break y continue
📖 break y continue
break termina inmediatamente el bucle actual, sin importar si la condición sigue siendo True.
continue salta el resto del código en la iteración actual y vuelve al inicio del bucle.
# break: salir del bucle
numero = 1
while numero <= 10:
if numero == 6:
print("Encontré el 6, saliendo...")
break # ← sale del while
print(numero)
numero += 1
# Imprime: 1 2 3 4 5 (se detiene antes del 6)
# continue: saltar iteración
numero = 0
while numero < 10:
numero += 1
if numero % 2 == 0:
continue # ← salta los pares
print(numero)
# Imprime: 1 3 5 7 9 (omite los pares)
# while True con break: patrón muy común
while True:
dato = input("Escribe un número positivo: ")
if [Link]() and int(dato) > 0:
break
print("Entrada no válida, intenta de nuevo")
print(f"Ingresaste: {dato}")
💡 Consejo Práctico
El patrón while True: + break es muy común para menús y validación de entrada.
continue es útil para filtrar elementos que no necesitan procesamiento.
Ambas sentencias también funcionan con el bucle for.
4.3 El Ciclo for
📖 El bucle for
Itera sobre los elementos de cualquier secuencia (string, lista, tupla, rango, etc.), ejecutando
el bloque de código una vez por cada elemento. Es la forma más idiomática de iterar en
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
Python.
📐 Sintaxis
for variable in secuencia:
instrucciones
# Ejemplos de secuencias:
# for letra in "Python": ← itera caracteres
# for numero in [1, 2, 3]: ← itera lista
# for i in range(10): ← itera rango
# for clave in diccionario: ← itera claves
# Iterar sobre un string:
for letra in "Python":
print(letra, end=" ")
# P y t h o n
# Iterar sobre una lista:
frutas = ["manzana", "pera", "uva"]
for fruta in frutas:
print(f"Fruta: {fruta}")
# Iterar con índice usando enumerate():
for indice, fruta in enumerate(frutas):
print(f"{indice}: {fruta}")
# 0: manzana
# 1: pera
# 2: uva
MAPA MENTAL: Bucle for
◆ Secuencias iterables
→ Strings: for c in "texto"
→ Listas: for x in lista
→ Tuplas: for x in tupla
→ Rangos: for i in range(n)
→ Diccionarios: for k in dict
◆ Funciones auxiliares
→ range(n) → 0 a n-1
→ range(a, b) → a a b-1
→ range(a, b, paso)
→ enumerate() → (índice, valor)
→ zip() → pares de secuencias
◆ Sentencias especiales
→ break → salir del for
→ continue → saltar iteración
→ else → ejecutar al terminar
◆ Comprensiones de lista
→ [expr for x in seq]
→ [expr for x in seq if cond]
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
4.4 La Clase range()
📖 La función range()
Genera una secuencia inmutable de números enteros. Es la forma más común de controlar
cuántas veces se ejecuta un bucle for.
Forma Descripción Genera
range(n) De 0 a n-1, paso 1 range(5) → 0,1,2,3,4
range(inicio, fin) De inicio a fin-1 range(2,6) → 2,3,4,5
range(inicio, fin, Inicio a fin-1 con range(0,10,2) →
paso) paso 0,2,4,6,8
range(inicio, fin, -1) Cuenta regresiva range(5,0,-1) →
5,4,3,2,1
# range básico:
for i in range(5):
print(i, end=" ") # 0 1 2 3 4
# range con inicio:
for i in range(1, 6):
print(i, end=" ") # 1 2 3 4 5
# range con paso:
for i in range(0, 20, 5):
print(i, end=" ") # 0 5 10 15
# Cuenta regresiva:
for i in range(10, 0, -1):
print(i, end=" ") # 10 9 8 7 6 5 4 3 2 1
# Convertir a lista:
numeros = list(range(1, 11))
print(numeros) # [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
💡 Consejo Práctico
range() NO incluye el valor final: range(1, 10) va de 1 a 9.
Para contar hacia atrás: range(10, 0, -1) → 10, 9, 8, ..., 1.
list(range(n)) convierte el rango en una lista real.
✏️ Ejercicio Práctico #5: Sucesión de Fibonacci
Genera los primeros N números de la sucesión de Fibonacci usando un bucle while.
📝 Código:
n = int(input("¿Cuántos números Fibonacci deseas? "))
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
a, b = 0, 1
contador = 0
print("Sucesión de Fibonacci:")
while contador < n:
print(a, end=" ")
a, b = b, a + b # ← swap inteligente
contador += 1
print() # salto de línea final
📤 Salida esperada:
¿Cuántos números Fibonacci deseas? 8
Sucesión de Fibonacci:
0 1 1 2 3 5 8 13
MAPA MENTAL: Bucle while – Fibonacci
◆ Variables
→ a = 0 (primer número)
→ b = 1 (segundo número)
→ contador = 0 (control del bucle)
◆ Proceso por iteración
→ 1. Imprimir a
→ 2. Calcular siguiente: a, b = b, a+b
→ 3. Incrementar contador
◆ Condición de parada
→ while contador < n
→ Se detiene cuando imprime n números
✏️ Ejercicio Práctico #7: Invertir un String
Usando un bucle for, invierte una cadena de texto ingresada por el usuario.
📝 Código:
texto = input("Ingresa una palabra o frase: ")
invertido = ""
for letra in texto:
invertido = letra + invertido # agrega al inicio
print(f"Original: {texto}")
print(f"Invertido: {invertido}")
# Alternativa elegante con slicing:
print(f"Con slicing: {texto[::-1]}")
📤 Salida esperada:
Ingresa una palabra o frase: Python
Original: Python
Invertido: nohtyP
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
MAPA MENTAL: Bucle for – Invertir String
◆ Estrategia
→ Iterar cada letra
→ Colocar letra al inicio del resultado
→ invertido = letra + invertido
◆ Flujo por iteración
→ P → "P"
→ y → "yP"
→ t → "tyP"
→ h → "htyP"
→ o → "ohtyP"
→ n → "nohtyP"
◆ Alternativa Pythónica
→ texto[::-1]
→ reversed(texto)
→ "".join(reversed(texto))
✏️ Ejercicio Práctico #8: Tabla de Multiplicar
Genera la tabla de multiplicar de un número ingresado por el usuario usando for y range().
📝 Código:
numero = int(input("¿De qué número quieres la tabla? "))
print(f"\n=== TABLA DEL {numero} ===")
for i in range(1, 11):
resultado = numero * i
print(f"{numero} x {i:2d} = {resultado:3d}")
📤 Salida esperada:
¿De qué número quieres la tabla? 7
=== TABLA DEL 7 ===
7 x 1 = 7
7 x 2 = 14
7 x 10 = 70
✏️ Ejercicio Práctico #9: String sin Vocales
Dado un texto, elimina todas las vocales usando un bucle for y la sentencia continue.
📝 Código:
texto = input("Ingresa una frase: ")
vocales = "aeiouAEIOU"
resultado = ""
for letra in texto:
if letra in vocales:
continue # salta las vocales
resultado += letra
print(f"Original: {texto}")
print(f"Sin vocales: {resultado}")
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
📤 Salida esperada:
Ingresa una frase: Hola Mundo
Original: Hola Mundo
Sin vocales: Hl Mnd
✏️ Ejercicio Práctico #4: Calculadora con una Sola Variable
Usando operadores de asignación compuestos, crea una calculadora acumulativa.
📝 Código:
acumulador = float(input("Valor inicial: "))
while True:
print(f"\nAcumulador actual: {acumulador}")
print("Operaciones: 1-Sumar 2-Restar 3-Multiplicar 4-Dividir 5-
Salir")
opcion = input("Elige operación: ")
if opcion == "5":
break
valor = float(input("Ingresa el valor: "))
if opcion == "1":
acumulador += valor
elif opcion == "2":
acumulador -= valor
elif opcion == "3":
acumulador *= valor
elif opcion == "4":
if valor != 0:
acumulador /= valor
else:
print("Error: división por cero")
print(f"Resultado final: {acumulador}")
📤 Salida esperada:
Valor inicial: 100
Acumulador actual: 100.0
Elige operación: 1
Ingresa el valor: 50
Acumulador actual: 150.0
CAPÍTULO 5: Manipulación de Cadenas (Strings)
Las cadenas de caracteres son uno de los tipos de datos más usados en Python. Este
capítulo cubre todos los métodos de los strings, desde la concatenación hasta la búsqueda
de substrings.
5.1 Definición y Creación de Strings
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
📖 Strings en Python
Un string (cadena) es una secuencia inmutable de caracteres Unicode. Se puede crear con
comillas simples, dobles o triples. Los strings son indexados, lo que permite acceder a
caracteres individuales o subcadenas.
# Formas de crear strings:
simple = 'Hola'
doble = "Mundo"
triple = """Texto
multilínea"""
# Indexación (empieza en 0):
texto = "Python"
print(texto[0]) # P ← primer carácter
print(texto[-1]) # n ← último carácter
print(texto[1:4]) # yth ← slicing [inicio:fin]
print(texto[::-1]) # nohtyP ← invertido
Operación Sintaxis Ejemplo Resultado
Longitud len(cadena) len("Python") 6
Acceso cadena[i] "Hola"[0] "H"
Slicing cadena[i:j] "Python"[1:4] "yth"
Concatenar cadena1 + cadena2 "Py"+"thon" "Python"
Repetir cadena * n "ab" * 3 "ababab"
Pertenencia substr in cadena "Py" in "Python" True
5.2 La función len()
📖 len()
Retorna la longitud (número de caracteres) de una cadena, lista, tupla, diccionario o
cualquier objeto iterable.
texto = "¡Hola, Mundo!"
print(len(texto)) # 13
# Uso en bucles:
for i in range(len(texto)):
print(texto[i], end="")
# len() funciona con cualquier secuencia:
lista = [1, 2, 3, 4, 5]
print(len(lista)) # 5
5.3 Concatenación con format() y f-Strings
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
📖 Interpolación de Strings
Python ofrece tres formas de insertar variables dentro de strings: concatenación con +, el
método format() y las f-strings (la más moderna y recomendada).
📐 Método format()
# Sintaxis básica:
nombre = "Carlos"
edad = 30
# Con posición:
print("Hola {}, tienes {} años".format(nombre, edad))
# Hola Carlos, tienes 30 años
# Con índices:
print("{0} y {1}, {0} es primero".format("A", "B"))
# A y B, A es primero
# Con formato numérico:
precio = 1234.567
print("Precio: {:,.2f}".format(precio))
# Precio: 1,234.57
📐 f-Strings (Python 3.6+) – Forma Recomendada
# Sintaxis: f"texto {expresión}"
nombre = "Ana"
edad = 25
salario = 2500000
print(f"Nombre: {nombre}")
print(f"Edad: {edad}")
print(f"Salario: ${salario:,}")
# Expresiones dentro de f-strings:
a = 10
b = 3
print(f"{a} + {b} = {a + b}")
print(f"{a} / {b} = {a / b:.2f}")
# Alineación y formato:
for i in range(1, 4):
print(f"Elemento {i:02d}: {i**2:5d}")
# Elemento 01: 1
# Elemento 02: 4
# Elemento 03: 9
💡 Consejo Práctico
Usa f-strings siempre que puedas: son más legibles y eficientes que format() y la
concatenación con +.
Formato numérico en f-strings: {valor:.2f} (2 decimales), {valor:,} (miles), {valor:05d} (ceros
izquierda).
Puedes poner cualquier expresión Python dentro de {}: {len(texto)}, {precio * 1.19:.2f}.
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
5.4 Métodos de Limpieza: strip(), rstrip() y lstrip()
📖 Métodos strip
Estos métodos eliminan espacios (o caracteres específicos) de los extremos de un string sin
modificar el string original (los strings son inmutables en Python).
Método Acción Ejemplo Resultado
strip() Elimina ambos extremos " Hola ".strip() "Hola"
lstrip() Elimina lado izquierdo " Hola ".lstrip() "Hola "
rstrip() Elimina lado derecho " Hola ".rstrip() " Hola"
strip(chars) Elimina chars "***Hola***".strip("*") "Hola"
específicos
entrada = " Carlos Pérez "
print([Link]()) # "Carlos Pérez"
print([Link]()) # "Carlos Pérez "
print([Link]()) # " Carlos Pérez"
# Eliminar caracteres específicos:
codigo = "###PRODUCTO###"
print([Link]("#")) # "PRODUCTO"
💡 Consejo Práctico
Siempre usa strip() para limpiar la entrada del usuario antes de procesarla: nombre =
input("Nombre: ").strip()
5.5 Métodos de Mayúsculas/Minúsculas
Método Descripción Ejemplo Resultado
upper() Todo a mayúsculas "hola".upper() "HOLA"
lower() Todo a minúsculas "HOLA".lower() "hola"
title() Primera letra de cada "hola mundo".title() "Hola
palabra en mayúscula Mundo"
capitalize() Primera letra del string "hola "Hola
en mayúscula MUNDO".capitalize() mundo"
swapcase() Invierte "HoLa".swapcase() "hOlA"
mayúsculas/minúsculas
isupper() Verifica si todo está en "HOLA".isupper() True
mayúsculas
islower() Verifica si todo está en "hola".islower() True
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
minúsculas
istitle() Verifica si está en "Hola True
formato título Mundo".istitle()
texto = "hola, MUNDO"
print([Link]()) # HOLA, MUNDO
print([Link]()) # hola, mundo
print([Link]()) # Hola, Mundo
print([Link]()) # Hola, mundo
print([Link]()) # HOLA, mundo
# Verificaciones:
print("PYTHON".isupper()) # True
print("python".islower()) # True
print("Python Es".istitle()) # True
💡 Consejo Práctico
Para comparar strings sin importar mayúsculas: if [Link]() == "si":
title() puede fallar con palabras con apóstrofes: "it's fine".title() → "It'S Fine". Usa capitalize()
en ese caso.
5.6 Métodos de Alineación
Método Descripción Ejemplo Resultado
center(n, Centra el texto en n "Hi".center(10, "----Hi----"
char) caracteres "-")
ljust(n, Alinea a la izquierda "Hi".ljust(10, "Hi........"
char) ".")
rjust(n, Alinea a la derecha "Hi".rjust(10, "........Hi"
char) ".")
# Menú formateado con center y ljust:
ancho = 30
print("=" * ancho)
print("MENÚ".center(ancho))
print("=" * ancho)
print("1. Nuevo".ljust(ancho - 5) + "[N]")
print("2. Abrir".ljust(ancho - 5) + "[A]")
print("=" * ancho)
5.7 Métodos de Búsqueda
Método Descripción Retorna
count(sub) Cuenta ocurrencias de sub int
startswith(prefix) Verifica si empieza con prefix bool
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
endswith(suffix) Verifica si termina con suffix bool
find(sub) Busca sub (retorna -1 si no encuentra) int
(índice)
index(sub) Como find pero lanza error si no int
encuentra (índice)
replace(old, new) Reemplaza ocurrencias str nuevo
texto = "Python es increíble. Python es poderoso."
print([Link]("Python")) # 2
print([Link]("Python")) # True
print([Link]("poderoso.")) # True
print([Link]("increíble")) # 10
print([Link]("Python", "Java")) # Java es... Java es...
5.8 Substrings (Slicing)
📖 Slicing de Strings
El slicing permite extraer porciones de un string usando la notación [inicio:fin:paso]. Es una
de las características más poderosas de Python.
texto = "Python"
# 0123456 (índices positivos)
# -654321 (índices negativos)
print(texto[0:3]) # Pyt (del 0 al 2)
print(texto[3:]) # hon (del 3 al final)
print(texto[:3]) # Pyt (del inicio al 2)
print(texto[-3:]) # hon (últimos 3)
print(texto[::2]) # Pto (cada 2 caracteres)
print(texto[::-1]) # nohtyP (invertido)
# Aplicación: verificar palíndromo
palabra = "radar"
if palabra == palabra[::-1]:
print(f"{palabra} es palíndromo")
MAPA MENTAL: Métodos de Strings
◆ Transformación
→ upper(), lower()
→ title(), capitalize()
→ swapcase()
◆ Limpieza
→ strip() → ambos lados
→ lstrip() → izquierda
→ rstrip() → derecha
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
◆ Búsqueda
→ count() → contar
→ find() / index() → posición
→ startswith() / endswith()
◆ Formateo
→ center(), ljust(), rjust()
→ format(), f-strings
→ replace()
◆ Verificación
→ isdigit(), isalpha()
→ isupper(), islower()
→ istitle(), isspace()
◆ Slicing
→ s[i:j] → subcadena
→ s[::-1] → invertir
→ s[::2] → cada 2
✏️ Ejercicio Práctico #6: Eliminar una Palabra de un String
Dado un texto y una palabra, elimina todas las ocurrencias de esa palabra del texto.
📝 Código:
texto = input("Ingresa el texto: ")
palabra = input("Palabra a eliminar: ")
# Método 1: replace()
resultado = [Link](palabra, "")
# Limpiar espacios dobles:
while " " in resultado:
resultado = [Link](" ", " ")
resultado = [Link]()
print(f"Original: {texto}")
print(f"Resultado: {resultado}")
📤 Salida esperada:
Ingresa el texto: El gato y el perro
Palabra a eliminar: el
Original: El gato y el perro
Resultado: El gato y perro
CAPÍTULO 6: Listas en Python
Las listas son una de las estructuras de datos más versátiles y usadas en Python. Permiten
almacenar colecciones ordenadas de elementos de cualquier tipo, y sus elementos pueden
modificarse (son mutables).
6.1 Definición y Creación de Listas
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
📖 Listas
Una lista es una secuencia ordenada y mutable de elementos que pueden ser de cualquier
tipo (incluso mezclados). Se definen con corchetes [] y los elementos se separan con comas.
# Formas de crear listas:
vacia = []
numeros = [1, 2, 3, 4, 5]
nombres = ["Ana", "Carlos", "María"]
mixta = [1, "Hola", 3.14, True, None]
anidada = [[1, 2], [3, 4], [5, 6]]
# Con el constructor list():
desde_str = list("Python") # ['P','y','t','h','o','n']
desde_rango = list(range(1, 6)) # [1, 2, 3, 4, 5]
# Acceso por índice:
frutas = ["manzana", "pera", "uva", "kiwi"]
print(frutas[0]) # manzana (primero)
print(frutas[-1]) # kiwi (último)
print(frutas[1:3]) # ['pera', 'uva'] (slicing)
6.2 Métodos de Listas
➕ Agregar Elementos
Método Descripción Ejemplo
append(x) Agrega x al final [Link](5)
insert(i, x) Inserta x en posición i [Link](0,
"inicio")
extend(iterable) Agrega todos los elementos del [Link]([4, 5,
iterable 6])
colores = ["rojo", "verde"]
[Link]("azul") # ["rojo", "verde", "azul"]
[Link](1, "amarillo") # ["rojo", "amarillo", "verde", "azul"]
[Link](["naranja", "morado"]) # agrega dos al final
print(colores)
➖ Eliminar Elementos
Método/ Descripción Ejemplo
Instrucción
pop() Elimina y retorna el último [Link]()
elemento
pop(i) Elimina y retorna el elemento en [Link](0)
índice i
remove(x) Elimina la primera ocurrencia de [Link]("rojo")
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
x
del lista[i] Elimina el elemento en índice i del lista[0]
del lista Elimina la lista completa del lista
clear() Vacía la lista (mantiene la [Link]()
variable)
numeros = [10, 20, 30, 40, 50]
ultimo = [Link]() # retorna 50, lista=[10,20,30,40]
primero = [Link](0) # retorna 10, lista=[20,30,40]
[Link](30) # lista=[20,40]
del numeros[0] # lista=[40]
[Link]() # lista=[]
print(numeros) # []
🔄 Ordenar y Transformar
Método Descripción Nota
sort() Ordena la lista en su lugar Modifica la
(ascendente) original
sort(reverse=True) Ordena descendente Modifica la
original
reverse() Invierte el orden de la lista Modifica la
original
sorted(lista) Retorna nueva lista ordenada No modifica
original
reversed(lista) Retorna iterador invertido No modifica
original
numeros = [5, 2, 8, 1, 9, 3]
[Link]() # [1, 2, 3, 5, 8, 9]
[Link](reverse=True) # [9, 8, 5, 3, 2, 1]
[Link]() # [1, 2, 3, 5, 8, 9]
# Sin modificar la original:
original = [5, 2, 8]
nueva = sorted(original) # [2, 5, 8]
print(original) # [5, 2, 8] ← sin cambios
🔍 Buscar e Informar
frutas = ["manzana", "pera", "uva", "pera"]
print([Link]("pera")) # 1 (primera ocurrencia)
print([Link]("pera")) # 2 (total de ocurrencias)
print(len(frutas)) # 4
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
# Verificar pertenencia:
print("uva" in frutas) # True
print("kiwi" not in frutas) # True
# Suma de elementos numéricos:
precios = [100, 250, 75, 300]
print(sum(precios)) # 725
print(min(precios)) # 75
print(max(precios)) # 300
MAPA MENTAL: Métodos de Listas
◆ Agregar
→ append(x) → al final
→ insert(i,x) → en posición
→ extend(iter) → varios
◆ Eliminar
→ pop() → último
→ pop(i) → por índice
→ remove(x) → por valor
→ del lista[i]
→ clear() → vaciar
◆ Ordenar
→ sort() → ascendente (in-place)
→ sort(reverse=True) → descend.
→ reverse() → invertir
◆ Buscar/Info
→ index(x) → posición
→ count(x) → ocurrencias
→ len() → longitud
→ in / not in
◆ Estadísticas
→ sum() → suma
→ min() → mínimo
→ max() → máximo
6.3 Listas Anidadas y Matrices
📖 Matrices con Listas Anidadas
Una matriz es una lista de listas. En Python, se implementan como listas anidadas y se
accede a sus elementos con doble indexación: matriz[fila][columna].
# Crear una matriz 3x3:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
# Acceder a elementos:
print(matriz[0][0]) # 1 (fila 0, col 0)
print(matriz[1][2]) # 6 (fila 1, col 2)
print(matriz[2]) # [7, 8, 9] (fila 2)
# Recorrer con for anidado:
for fila in matriz:
for elemento in fila:
print(elemento, end=" ")
print() # salto de línea
# Salida:
# 1 2 3
# 4 5 6
# 7 8 9
# Crear matriz con range():
filas = 3
cols = 3
matriz = [[i * cols + j + 1 for j in range(cols)] for i in range(filas)]
print(matriz) # [[1,2,3],[4,5,6],[7,8,9]]
💡 Consejo Práctico
Para crear una matriz de ceros: [[0] * cols for _ in range(filas)]
NUNCA uses [[0] * cols] * filas — todas las filas apuntarían al mismo objeto.
✏️ Ejercicio Práctico #10: Manejo de Listas
Crea un programa que gestione una lista de compras: permite agregar, eliminar y mostrar
elementos.
📝 Código:
compras = []
while True:
print("\n=== LISTA DE COMPRAS ===")
print("Actual:", compras)
print("1-Agregar 2-Eliminar 3-Ver ordenada 4-Salir")
opcion = input("Opción: ")
if opcion == "1":
item = input("¿Qué agregar? ").strip()
[Link](item)
elif opcion == "2":
item = input("¿Qué eliminar? ")
if item in compras:
[Link](item)
else:
print("No está en la lista")
elif opcion == "3":
print("Ordenada:", sorted(compras))
elif opcion == "4":
break
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
📤 Salida esperada:
✏️ Ejercicio Práctico #11: Eliminar Caracteres Continuos Repetidos
Dada una lista, elimina los elementos duplicados consecutivos.
📝 Código:
lista = [1, 1, 2, 2, 2, 3, 1, 1, 4, 4]
resultado = []
for elemento in lista:
if not resultado or resultado[-1] != elemento:
[Link](elemento)
print(f"Original: {lista}")
print(f"Sin duplicados consecutivos: {resultado}")
📤 Salida esperada:
Original: [1, 1, 2, 2, 2, 3, 1, 1, 4, 4]
Sin duplicados consecutivos: [1, 2, 3, 1, 4]
✏️ Ejercicio Práctico #12: Una Lista en Dos Listas
Dado un número N, divide una lista de números en dos: los menores a N y los mayores o
iguales.
📝 Código:
numeros = [15, 3, 8, 22, 11, 5, 30, 7]
n = int(input("Ingresa el valor de corte N: "))
menores = []
mayores = []
for num in numeros:
if num < n:
[Link](num)
else:
[Link](num)
print(f"Menores a {n}: {menores}")
print(f"Mayores o iguales a {n}: {mayores}")
📤 Salida esperada:
Ingresa el valor de corte N: 10
Menores a 10: [3, 8, 5, 7]
Mayores o iguales a 10: [15, 22, 11, 30]
✏️ Ejercicio Práctico #13: Crear una Matriz desde Teclado
Solicita al usuario el tamaño de la matriz y los valores, luego la muestra formateada.
📝 Código:
filas = int(input("Número de filas: "))
cols = int(input("Número de columnas: "))
matriz = []
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
for i in range(filas):
fila = []
for j in range(cols):
val = int(input(f" Elemento [{i}][{j}]: "))
[Link](val)
[Link](fila)
print("\n=== MATRIZ ===")
for fila in matriz:
print(fila)
📤 Salida esperada:
Número de filas: 2
Número de columnas: 2
Elemento [0][0]: 1
Elemento [0][1]: 2
=== MATRIZ ===
[1, 2]
[3, 4]
✏️ Ejercicio Práctico #14: Suma de Matrices desde Teclado
Lee dos matrices del mismo tamaño y calcula su suma elemento a elemento.
📝 Código:
def leer_matriz(nombre, filas, cols):
print(f"\nIngresa la {nombre}:")
return [[int(input(f" [{i}][{j}]: ")) for j in range(cols)] for i
in range(filas)]
n = int(input("Tamaño de la matriz (NxN): "))
A = leer_matriz("Matriz A", n, n)
B = leer_matriz("Matriz B", n, n)
C = [[A[i][j] + B[i][j] for j in range(n)] for i in range(n)]
print("\n=== SUMA A + B ===")
for fila in C:
print(fila)
📤 Salida esperada:
Tamaño de la matriz (NxN): 2
=== SUMA A + B ===
[6, 8]
[10, 12]
CAPÍTULO 7: Diccionarios en Python
Los diccionarios son estructuras de datos que almacenan pares clave-valor. Son
extremadamente eficientes para búsquedas y son fundamentales en la programación
Python moderna.
7.1 Definición y Creación de Diccionarios
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
📖 Diccionarios
Un diccionario es una colección no ordenada (en Python 3.7+ sí mantienen orden de
inserción), mutable y sin elementos duplicados en las claves. Se definen con llaves {} y los
elementos son pares clave: valor.
# Crear un diccionario:
persona = {
"nombre": "Carlos",
"edad": 30,
"ciudad": "Medellín",
"activo": True
}
# Diccionario vacío:
vacio = {}
vacio2 = dict()
# Acceder a valores:
print(persona["nombre"]) # Carlos
print([Link]("edad")) # 30
print([Link]("email", "No definido")) # No definido
7.2 Métodos de Diccionarios
Método Descripción Retorna
keys() Retorna todas las claves dict_keys
values() Retorna todos los valores dict_values
items() Retorna pares (clave, valor) dict_items
get(k, def) Obtiene valor de k (o def si no valor o None
existe)
update(dict2) Actualiza con elementos de dict2 None
pop(k) Elimina y retorna valor de k valor
popitem() Elimina y retorna último par (clave,
valor)
setdefault(k, v) Si k no existe, lo crea con v valor
copy() Crea una copia superficial dict
clear() Vacía el diccionario None
fromkeys(keys, Crea dict con claves dadas y valor v dict
v)
estudiante = {"nombre": "Ana", "edad": 20, "nota": 85}
# keys(), values(), items():
print(list([Link]())) # ["nombre", "edad", "nota"]
print(list([Link]())) # ["Ana", 20, 85]
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
print(list([Link]())) # [("nombre","Ana"), ...]
# Modificar y agregar:
estudiante["email"] = "ana@[Link]" # agregar
estudiante["nota"] = 90 # modificar
# update():
extra = {"ciudad": "Bogotá", "edad": 21}
[Link](extra)
# setdefault():
[Link]("telefono", "No registrado")
# fromkeys():
materias = [Link](["Mate", "Física", "Química"], 0)
print(materias) # {"Mate": 0, "Física": 0, "Química": 0}
7.3 Recorrer Diccionarios con for
productos = {"manzana": 1500, "pera": 2000, "uva": 3500}
# Recorrer claves (por defecto):
for clave in productos:
print(clave)
# Recorrer valores:
for valor in [Link]():
print(valor)
# Recorrer pares clave-valor (más común):
for producto, precio in [Link]():
print(f"{producto}: ${precio:,}")
# Salida:
# manzana: $1,500
# pera: $2,000
# uva: $3,500
MAPA MENTAL: Diccionarios en Python
◆ Estructura
→ Clave: valor
→ Claves únicas e inmutables
→ Valores de cualquier tipo
◆ Acceso
→ dict["clave"] → directo
→ [Link]("clave") → seguro
→ [Link]("k", default)
◆ Modificación
→ dict["k"] = v → agregar/modificar
→ update() → varios a la vez
→ setdefault() → solo si no existe
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
◆ Eliminación
→ pop(k) → elimina y retorna
→ popitem() → último par
→ del dict[k]
→ clear() → vaciar
◆ Iteración
→ for k in dict → claves
→ for v in [Link]()
→ for k,v in [Link]()
✏️ Ejercicio Práctico #15: Frecuencia de Letras en un Texto
Dado un texto, cuenta cuántas veces aparece cada letra usando un diccionario.
📝 Código:
texto = input("Ingresa un texto: ").lower()
frecuencia = {}
for caracter in texto:
if [Link](): # solo letras
frecuencia[caracter] = [Link](caracter, 0) + 1
# Ordenar por frecuencia (mayor a menor):
ordenado = sorted([Link](), key=lambda x: x[1], reverse=True)
print("\n=== FRECUENCIA DE LETRAS ===")
for letra, cantidad in ordenado:
barra = "█" * cantidad
print(f"{letra}: {barra} ({cantidad})")
📤 Salida esperada:
Ingresa un texto: hola mundo
=== FRECUENCIA DE LETRAS ===
o: ██ (2)
h: █ (1)
l: █ (1)
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
CAPÍTULO 8: Tuplas en Python
Las tuplas son secuencias ordenadas e inmutables. A diferencia de las listas, una vez
creadas no pueden modificarse, lo que las hace ideales para datos constantes.
8.1 Definición y Creación de Tuplas
📖 Tuplas
Una tupla es una secuencia ordenada e inmutable de elementos. Se definen con paréntesis
() y los elementos separados por comas. La inmutabilidad hace que sean más rápidas y
seguras que las listas.
# Crear tuplas:
vacia = () # Tupla vacía
unitaria = (42,) # ← La coma es esencial
colores = ("rojo", "verde", "azul")
mixta = (1, "Hola", 3.14, True)
# Sin paréntesis (empaquetado):
coordenadas = 10, 20 # equivale a (10, 20)
# Acceso por índice (igual que listas):
print(colores[0]) # rojo
print(colores[-1]) # azul
print(colores[0:2]) # ("rojo", "verde")
8.2 Operaciones con Tuplas
Operación Descripción Ejemplo Resultado
len(t) Longitud len((1,2,3)) 3
t[i] Acceso por índice colores[1] "verde"
t[i:j] Slicing colores[0:2] ("rojo","verde")
t1 + t2 Concatenación (1,2)+(3,4) (1,2,3,4)
t * n Repetición (0,)*3 (0,0,0)
x in t Pertenencia "rojo" in colores True
[Link](x) Contar ocurrencias (1,2,1).count(1) 2
[Link](x) Posición de x (1,2,3).index(2) 1
8.3 Desempaquetado de Tuplas
📖 Desempaquetado (Unpacking)
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
Permite asignar los valores de una tupla a múltiples variables en una sola línea. Es una
característica muy poderosa y elegante de Python.
# Desempaquetado básico:
punto = (10, 20, 30)
x, y, z = punto
print(f"x={x}, y={y}, z={z}") # x=10, y=20, z=30
# Con asterisco (*) para capturar múltiples:
primero, *resto = (1, 2, 3, 4, 5)
print(primero) # 1
print(resto) # [2, 3, 4, 5]
*inicio, ultimo = (1, 2, 3, 4, 5)
print(inicio) # [1, 2, 3, 4]
print(ultimo) # 5
# Swap con desempaquetado:
a, b = 5, 10
a, b = b, a # swap elegante
print(a, b) # 10 5
# Desempaquetado en for:
empleados = [("Ana", 30, 5000000), ("Carlos", 25, 3500000)]
for nombre, edad, salario in empleados:
print(f"{nombre} ({edad} años): ${salario:,}")
8.4 La función tuple() y zip()
# tuple() - convierte a tupla:
lista = [1, 2, 3]
tupla = tuple(lista) # (1, 2, 3)
chars = tuple("Python") # ("P","y","t","h","o","n")
# zip() - combina múltiples secuencias:
nombres = ["Ana", "Carlos", "María"]
edades = [25, 30, 22]
ciudades = ["Bogotá", "Medellín", "Cali"]
for nombre, edad, ciudad in zip(nombres, edades, ciudades):
print(f"{nombre}, {edad} años, {ciudad}")
# Ana, 25 años, Bogotá
# Carlos, 30 años, Medellín
# María, 22 años, Cali
MAPA MENTAL: Tuplas en Python
◆ Características
→ Ordenadas (mantienen orden)
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
→ Inmutables (no se modifican)
→ Más rápidas que las listas
→ Usadas como claves de dict
◆ Creación
→ tupla = (1, 2, 3)
→ unitaria = (42,) ← coma
→ tuple([1,2,3]) ← desde lista
→ a, b = 1, 2 ← empaquetado
◆ Desempaquetado
→ a, b, c = tupla
→ *inicio, fin = tupla
→ a, *medio, z = tupla
◆ Funciones útiles
→ tuple() → convertir
→ zip() → combinar
→ enumerate() → con índice
✏️ Ejercicio Práctico #16: Modificación de una Tupla
Como las tuplas son inmutables, para "modificarlas" debemos convertirlas, modificar y
reconvertir.
📝 Código:
tupla = (10, 20, 30, 40, 50)
print(f"Original: {tupla}")
# Convertir a lista, modificar, reconvertir:
lista_temp = list(tupla)
lista_temp[2] = 999 # Modificar elemento
lista_temp.append(60) # Agregar elemento
tupla_modificada = tuple(lista_temp)
print(f"Modificada: {tupla_modificada}")
📤 Salida esperada:
Original: (10, 20, 30, 40, 50)
Modificada: (10, 20, 999, 40, 50, 60)
✏️ Ejercicio Práctico #17: Seleccionador de Nombres
Selecciona aleatoriamente un nombre de una tupla de participantes.
📝 Código:
import random
participantes = ("Ana", "Carlos", "María", "Juan", "Laura", "Pedro")
print("=== SELECCIONADOR ALEATORIO ===")
print(f"Participantes: {participantes}")
ganador = [Link](participantes)
print(f"\n🎉 ¡El ganador es: {ganador}!")
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
# Seleccionar varios sin repetición:
muestra = [Link](participantes, 3)
print(f"Top 3: {muestra}")
📤 Salida esperada:
=== SELECCIONADOR ALEATORIO ===
🎉 ¡El ganador es: María!
Top 3: ['Laura', 'Ana', 'Pedro']
✏️ Ejercicio Práctico #18: Suma de Tuplas
Dadas dos tuplas del mismo tamaño, crea una tercera con la suma elemento a elemento.
📝 Código:
t1 = (1, 5, 3, 8, 2)
t2 = (4, 2, 7, 1, 9)
# Usando zip():
suma = tuple(a + b for a, b in zip(t1, t2))
print(f"Tupla 1: {t1}")
print(f"Tupla 2: {t2}")
print(f"Suma: {suma}")
📤 Salida esperada:
Tupla 1: (1, 5, 3, 8, 2)
Tupla 2: (4, 2, 7, 1, 9)
Suma: (5, 7, 10, 9, 11)
✏️ Ejercicio Práctico #19: Ordenamiento de una Tupla
Ordena una tupla sin modificar la original (ya que son inmutables).
📝 Código:
numeros = (5, 2, 8, 1, 9, 3, 7, 4, 6)
# sorted() retorna una lista, tuple() la convierte:
ascendente = tuple(sorted(numeros))
descendente = tuple(sorted(numeros, reverse=True))
print(f"Original: {numeros}")
print(f"Ascendente: {ascendente}")
print(f"Descendente: {descendente}")
📤 Salida esperada:
Original: (5, 2, 8, 1, 9, 3, 7, 4, 6)
Ascendente: (1, 2, 3, 4, 5, 6, 7, 8, 9)
Descendente: (9, 8, 7, 6, 5, 4, 3, 2, 1)
CAPÍTULO 9: Conjuntos (Sets)
Los conjuntos son colecciones no ordenadas de elementos únicos. Se usan principalmente
para eliminar duplicados y para operaciones matemáticas de conjuntos (unión, intersección,
diferencia).
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
9.1 Creación y Características de Conjuntos
📖 Conjuntos (set)
Un conjunto es una colección no ordenada, mutable y sin elementos duplicados. Los
elementos deben ser inmutables (números, strings, tuplas). Se crean con llaves {} o la
función set().
# Crear conjuntos:
vacio = set() # ← {} crea dict vacío, no set
numeros = {1, 2, 3, 4, 5}
letras = {"a", "b", "c"}
# Eliminar duplicados automáticamente:
con_dup = {1, 2, 2, 3, 3, 3, 4}
print(con_dup) # {1, 2, 3, 4} ← sin duplicados
# Desde lista:
lista = [1, 2, 2, 3, 3, 4]
sin_dup = set(lista) # {1, 2, 3, 4}
# Los sets NO son ordenados:
print({3, 1, 2}) # puede imprimir en cualquier orden
9.2 Operaciones de Conjuntos
Operación Método Operador Descripción
Unión [Link](b) a | b Todos los elementos
de a y b
Intersección [Link](b) a & b Elementos comunes
Diferencia [Link](b) a - b En a pero no en b
Dif. Simétrica a.symmetric_difference(b) a ^ b En uno pero no en
ambos
Es subconjunto [Link](b) a <= b Todos de a están en
b
Es [Link](b) a >= b Todos de b están en
superconjunto a
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
print(A | B) # {1,2,3,4,5,6,7,8} unión
print(A & B) # {4,5} intersección
print(A - B) # {1,2,3} diferencia A-B
print(A ^ B) # {1,2,3,6,7,8} dif. simétrica
# Sub/superconjuntos:
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
C = {1, 2, 3}
print([Link](A)) # True (C ⊆ A)
print([Link](C)) # True (A ⊇ C)
9.3 Métodos de Modificación
frutas = {"manzana", "pera"}
# Agregar un elemento:
[Link]("uva") # {"manzana", "pera", "uva"}
# Agregar varios elementos:
[Link](["kiwi", "mango"])
# Eliminar (lanza error si no existe):
[Link]("pera")
# Eliminar (NO lanza error si no existe):
[Link]("banana") # Sin error aunque no exista
# Eliminar y retornar un elemento aleatorio:
elemento = [Link]()
print(f"Eliminado: {elemento}")
MAPA MENTAL: Conjuntos (Sets)
◆ Características
→ No ordenados
→ Sin duplicados
→ Mutables
→ Elementos deben ser inmutables
◆ Operaciones matemáticas
→ | union()
→ & intersection()
→ - difference()
→ ^ symmetric_difference()
◆ Relaciones
→ issubset() / <=
→ issuperset() / >=
→ isdisjoint()
◆ Modificación
→ add(x)
→ update(iter)
→ remove(x) → error si no
→ discard(x) → seguro
◆ Uso principal
→ Eliminar duplicados: set(lista)
→ Verificar pertenencia: x in set
→ Operaciones de conjuntos
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
💡 Consejo Práctico
Para eliminar duplicados de una lista: sin_dup = list(set(lista))
Los sets son extremadamente rápidos para verificar pertenencia (x in set) comparado con
listas.
frozenset() crea un set inmutable que puede usarse como clave de diccionario.
CAPÍTULO 10: Temas Avanzados de Python
Este capítulo cubre características avanzadas de Python: comprensiones de listas, la
función enumerate(), la instrucción import, números aleatorios y el manejo de excepciones.
10.1 Expresiones de Comprensión
📖 List Comprehensions
Las comprensiones de listas son una forma concisa y elegante de crear listas basadas en
secuencias existentes. Son más rápidas que los bucles for tradicionales y son muy
idiomáticas en Python.
📐 Sintaxis
# Forma básica:
nueva_lista = [expresión for variable in iterable]
# Con condición (filtro):
nueva_lista = [expresión for variable in iterable if condición]
# Anidada:
matriz = [expresión for fila in mat for col in fila]
# Equivalencia: for tradicional vs comprensión
# Forma tradicional:
cuadrados = []
for n in range(1, 11):
[Link](n ** 2)
# Forma con comprensión (más elegante):
cuadrados = [n ** 2 for n in range(1, 11)]
print(cuadrados) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# Con filtro (solo pares):
pares = [n for n in range(1, 21) if n % 2 == 0]
print(pares) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
# Transformar strings:
nombres = ["ana", "carlos", "maría"]
mayus = [[Link]() for n in nombres]
print(mayus) # ["Ana", "Carlos", "María"]
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
# Dict comprehension:
cuadrados_dict = {n: n**2 for n in range(1, 6)}
# {1:1, 2:4, 3:9, 4:16, 5:25}
# Set comprehension:
pares_set = {n for n in range(20) if n % 2 == 0}
MAPA MENTAL: Comprensiones en Python
◆ List comprehension
→ [expr for x in iter]
→ [expr for x in iter if cond]
→ Más rápida que append en loop
◆ Dict comprehension
→ {k: v for k, v in items}
→ {k: v for ... if ...}
◆ Set comprehension
→ {expr for x in iter}
→ Elimina duplicados automáticamente
◆ Casos de uso
→ Transformar listas
→ Filtrar elementos
→ Crear matrices
→ Invertir diccionarios
💡 Consejo Práctico
Si la comprensión tiene más de una condición o es compleja, usa un bucle for normal para
mayor legibilidad.
Las comprensiones también funcionan para diccionarios {k: v for ...} y conjuntos {expr for ...}.
10.2 La función enumerate()
📖 enumerate()
Añade un contador automático a cualquier iterable, retornando pares (índice, elemento).
Evita el patrón manual de i = 0; i += 1.
frutas = ["manzana", "pera", "uva", "kiwi"]
# Sin enumerate (forma antigua):
for i in range(len(frutas)):
print(f"{i}: {frutas[i]}")
# Con enumerate (forma elegante):
for i, fruta in enumerate(frutas):
print(f"{i}: {fruta}")
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
# Empezar en 1 en lugar de 0:
for i, fruta in enumerate(frutas, start=1):
print(f"{i}. {fruta}")
# 1. manzana
# 2. pera
# 3. uva
# 4. kiwi
10.3 La instrucción import
📖 Módulos en Python
Un módulo es un archivo Python con funciones, clases y variables reutilizables. Python
incluye una librería estándar enorme. Se importa con import.
# Formas de importar:
import math # módulo completo
from math import sqrt, pi # funciones específicas
from math import * # todo (no recomendado)
import numpy as np # con alias
# Usando math:
import math
print([Link]) # 3.141592653589793
print([Link](16)) # 4.0
print([Link](3.7)) # 3
print([Link](3.2)) # 4
print([Link](5)) # 120
# Módulos de la librería estándar más útiles:
# math → funciones matemáticas
# random → números aleatorios
# datetime → fechas y horas
# os → sistema operativo
# sys → sistema Python
# json → manejo de JSON
# re → expresiones regulares
# collections → estructuras de datos avanzadas
10.4 El módulo random – Números Aleatorios
Función Descripción Ejemplo
random() Float entre 0.0 y 1.0 [Link]()
randint(a, b) Entero entre a y b [Link](1, 10)
(inclusive)
randrange(a, Entero entre a y b [Link](0, 100,
b) (exclusive) 5)
choice(seq) Elemento aleatorio de [Link](lista)
secuencia
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
choices(seq, k elementos con reemplazo [Link](lista, k=3)
k)
sample(seq, k) k elementos sin reemplazo [Link](lista, k=3)
shuffle(lista) Mezcla lista en su lugar [Link](lista)
uniform(a, b) Float entre a y b [Link](1.0, 10.0)
import random
# Dado de 6 caras:
dado = [Link](1, 6)
print(f"Tiraste el dado: {dado}")
# Selección aleatoria:
opciones = ["Piedra", "Papel", "Tijeras"]
computadora = [Link](opciones)
print(f"La computadora eligió: {computadora}")
# Mezclar una lista:
cartas = list(range(1, 14))
[Link](cartas)
print(f"Baraja mezclada: {cartas[:5]}...")
# Semilla para reproducibilidad:
[Link](42) # siempre genera la misma secuencia
print([Link](1, 100)) # siempre el mismo número
10.5 Manejo de Excepciones – try / except
📖 Excepciones
Una excepción es un error que ocurre durante la ejecución de un programa. Python permite
capturar y manejar estos errores con la estructura try-except, evitando que el programa se
detenga abruptamente.
📐 Sintaxis Completa
try:
# código que puede generar error
except TipoDeError:
# código si ocurre ese error
except (Tipo1, Tipo2):
# maneja múltiples tipos
except Exception as e:
# captura cualquier error, e tiene el mensaje
else:
# se ejecuta si NO hubo error
finally:
# se ejecuta SIEMPRE (con o sin error)
# Ejemplo 1: Manejo de entrada numérica
while True:
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
try:
edad = int(input("Ingresa tu edad: "))
if edad < 0:
raise ValueError("La edad no puede ser negativa")
break
except ValueError as e:
print(f"Error: {e}. Intenta de nuevo.")
# Ejemplo 2: Manejo completo con finally
try:
numero = int(input("Número: "))
resultado = 100 / numero
except ValueError:
print("Error: debes ingresar un número")
except ZeroDivisionError:
print("Error: no se puede dividir entre cero")
else:
print(f"Resultado: {resultado}")
finally:
print("Operación terminada") # siempre se ejecuta
Excepción Cuando ocurre
ValueError Valor incorrecto para el tipo (int("abc"))
TypeError Tipo de dato incorrecto ("a" + 1)
ZeroDivisionError División entre cero (10/0)
IndexError Índice fuera de rango (lista[100])
KeyError Clave no existe en diccionario
FileNotFoundError Archivo no encontrado
NameError Variable no definida
AttributeError Atributo/método no existe
MAPA MENTAL: Manejo de Excepciones
◆ Estructura
→ try: → código riesgoso
→ except: → manejo de error
→ else: → si no hubo error
→ finally: → siempre
◆ Excepciones comunes
→ ValueError
→ TypeError
→ ZeroDivisionError
→ IndexError
→ KeyError
◆ Buenas prácticas
→ Capturar excepciones específicas
→ No capturar Exception genérico siempre
→ Usar finally para limpiar recursos
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
→ raise para relanzar o crear errores
💡 Consejo Práctico
Captura siempre las excepciones más específicas primero.
Nunca uses except: (sin tipo) o except Exception: para silenciar todos los errores.
El bloque finally es ideal para cerrar archivos o conexiones de bases de datos.
APÉNDICE A: Glosario
Definiciones de los términos fundamentales de Python usados a lo largo de esta guía.
Término Definición
Algoritmo Conjunto de pasos ordenados para resolver un
problema.
Argumento Valor que se pasa a una función al llamarla.
Booleano (bool) Tipo de dato que solo puede ser True o False.
Bucle / Loop Estructura que repite un bloque de código.
Clase (class) Plantilla para crear objetos (programación
orientada a objetos).
Comentario Texto en el código ignorado por el intérprete. Se
usa # o """ """.
Comprensión de lista Forma concisa de crear listas: [expr for x in
iter].
Condicional Estructura que ejecuta código según una condición
(if/elif/else).
Constante Variable cuyo valor no cambia. Convención:
NOMBRE_EN_MAYUSCULA.
Diccionario (dict) Colección de pares clave:valor, mutable y sin
claves duplicadas.
Desempaquetado Asignar elementos de una secuencia a múltiples
variables.
Excepción Error que ocurre durante la ejecución del
programa.
f-String String con interpolación de expresiones Python:
f"Hola {nombre}".
Función Bloque de código reutilizable definido con def.
Índice Número entero que indica la posición de un
elemento en una secuencia.
Inmutable Objeto que no puede modificarse después de creado
(str, tuple, int).
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
Intérprete Programa que ejecuta código Python línea a línea.
Iteración Una repetición del cuerpo de un bucle.
Iterable Objeto que puede recorrerse (lista, tupla, string,
dict, range...).
Keyword (Palabra Palabra con significado especial en Python (if,
reservada) for, def...).
Lista (list) Colección ordenada y mutable de elementos entre
corchetes [].
Mapa mental Diagrama visual que organiza información de forma
jerárquica.
Método Función asociada a un objeto/clase:
[Link]()
Módulo Archivo Python con definiciones reutilizables
(import modulo).
Mutable Objeto que puede modificarse (list, dict, set).
None Valor especial que representa la ausencia de
valor.
Operador Símbolo que realiza una operación: +, -, *, /, %,
**, //, ==, etc.
Parámetro Variable que recibe el valor de un argumento en
una función.
Slicing Extracción de una subsecuencia:
lista[inicio:fin:paso].
String (str) Cadena de caracteres entre comillas: "Hola" o
'Mundo'.
Tupla (tuple) Colección ordenada e inmutable de elementos entre
paréntesis ().
Conjunto (set) Colección no ordenada de elementos únicos entre
llaves {}.
Variable Nombre asociado a un espacio en memoria que
almacena un valor.
Módulo random Módulo para generar números y selecciones
aleatorias.
try/except Estructura para capturar y manejar errores en
tiempo de ejecución.
Indentación Espacio al inicio de una línea que define bloques
en Python (4 espacios).
Tipado dinámico El tipo de una variable se determina en tiempo de
ejecución.
Bytecode Código intermedio (.pyc) generado por el
intérprete Python.
PVM Python Virtual Machine, ejecuta el bytecode de
Python.
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
PyPI Python Package Index, repositorio de paquetes de
terceros.
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
APÉNDICE B: Referencia Completa – Palabras
Reservadas, Métodos y Funciones
Referencia rápida de todas las palabras reservadas, métodos y funciones más importantes
de Python con sus definiciones y aplicabilidades.
B.1 Palabras Reservadas de Python 3 (35 keywords)
Palabra Uso Ejemplo
False Valor booleano falso x = False
True Valor booleano verdadero x = True
None Ausencia de valor / nulo x = None
and Operador lógico AND if a and b:
or Operador lógico OR if a or b:
not Operador lógico NOT if not x:
if Inicio de condicional if x > 0:
elif Alternativa de condicional elif x == 0:
else Bloque alternativo else:
for Bucle para secuencias for i in range(10):
while Bucle mientras condición while x > 0:
break Romper bucle break
continue Saltar iteración continue
pass Sin operación (marcador) pass
def Definir función def mi_funcion():
return Retornar valor de función return x + y
class Definir clase class MiClase:
import Importar módulo import math
from Importar desde módulo from math import pi
as Alias en import o with import numpy as np
try Inicio de manejo de errores try:
except Capturar excepción except ValueError:
finally Bloque siempre ejecutado finally:
raise Lanzar excepción raise ValueError("msg")
with Gestor de contexto with open("[Link]") as f:
lambda Función anónima f = lambda x: x**2
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
in Pertenencia / iteración if x in lista:
is Identidad de objeto if x is None:
del Eliminar variable/elemento del lista[0]
global Declarar variable global global contador
nonlocal Variable de scope externo nonlocal x
yield Valor de generador yield resultado
assert Verificar condición assert x > 0
async Función asíncrona async def f():
await Esperar corrutina await tarea()
B.2 Funciones Built-in (Incorporadas) de Python
Función Descripción Ejemplo
print() Muestra valores en consola print("Hola")
input() Lee entrada del teclado (retorna x = input("Nombre: ")
str)
type() Retorna el tipo de un objeto type(42) → int
len() Longitud de una secuencia len([1,2,3]) → 3
int() Convierte a entero int("42") → 42
float() Convierte a decimal float("3.14") → 3.14
str() Convierte a string str(42) → "42"
bool() Convierte a booleano bool(0) → False
list() Convierte a lista list("abc") →
["a","b","c"]
tuple() Convierte a tupla tuple([1,2]) → (1,2)
set() Convierte a conjunto set([1,1,2]) → {1,2}
dict() Crea diccionario dict(a=1, b=2)
range() Genera secuencia de enteros range(1, 10)
enumerate() Añade índice a iterable enumerate(lista)
zip() Combina iterables en pares zip(a, b)
sorted() Nueva lista ordenada sorted([3,1,2]) →
[1,2,3]
reversed() Iterador invertido reversed([1,2,3])
sum() Suma elementos sum([1,2,3]) → 6
min() Elemento mínimo min([3,1,2]) → 1
max() Elemento máximo max([3,1,2]) → 3
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
abs() Valor absoluto abs(-5) → 5
round() Redondear round(3.567, 2) → 3.57
pow() Potencia pow(2, 8) → 256
map() Aplica función a iterable map(str, [1,2,3])
filter() Filtra por condición filter(lambda x: x>0, l)
any() True si algún elemento es True any([0, 1, 0])
all() True si todos son True all([1, 2, 3])
isinstance() Verifica tipo de objeto isinstance(x, int)
id() Identidad del objeto id(x)
hash() Valor hash del objeto hash("hola")
open() Abre un archivo open("[Link]", "r")
chr() Carácter Unicode chr(65) → "A"
ord() Código Unicode ord("A") → 65
bin() Representación binaria bin(10) → "0b1010"
hex() Representación hexadecimal hex(255) → "0xff"
oct() Representación octal oct(8) → "0o10"
dir() Lista atributos del objeto dir(lista)
help() Muestra documentación help([Link])
B.3 Métodos de String (str)
Método Descripción Ejemplo Resultado
upper() Convierte a "hola".upper() "HOLA"
mayúsculas
lower() Convierte a "HOLA".lower() "hola"
minúsculas
title() Primera letra "hola mundo".title() "Hola Mundo"
de c/palabra
en may.
capitalize() Primera letra "hola".capitalize() "Hola"
en mayúscula
swapcase() Intercambia "HoLa".swapcase() "hOlA"
may./min.
strip() Elimina " hi ".strip() "hi"
espacios/char
s extremos
lstrip() Elimina " hi".lstrip() "hi"
espacios
izquierda
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
rstrip() Elimina "hi ".rstrip() "hi"
espacios
derecha
split(sep) Divide por "a,b,c".split(",") ["a","b","c"
separador → ]
lista
join(iter) Une iterable ",".join(["a","b"]) "a,b"
con separador
replace(old,new Reemplaza "hello".replace("l","r") "herro"
) subcadena
find(sub) Posición de "hello".find("ll") 2
sub (-1 si
no)
index(sub) Como find, "hello".index("e") 1
error si no
count(sub) Cuenta "banana".count("a") 3
ocurrencias
startswith(s) Verifica "Python".startswith("Py" True
inicio )
endswith(s) Verifica "Python".endswith("on") True
final
isdigit() Todos son "123".isdigit() True
dígitos
isalpha() Todos son "abc".isalpha() True
letras
isalnum() Letras o "abc123".isalnum() True
números
isspace() Solo espacios " ".isspace() True
isupper() Todas en "HI".isupper() True
mayúscula
islower() Todas en "hi".islower() True
minúscula
istitle() Formato "Hi All".istitle() True
título
center(n,c) Centra en n "Hi".center(8,"-") "---Hi---"
caracteres
ljust(n,c) Alinea "Hi".ljust(8,".") "Hi......"
izquierda
rjust(n,c) Alinea "Hi".rjust(8,".") "......Hi"
derecha
format() Formatea "{} = {}".format("x",5) "x = 5"
string
encode() Codifica a "hi".encode("utf-8") b'hi'
bytes
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
zfill(n) Rellena con "42".zfill(5) "00042"
ceros izq.
B.4 Métodos de Lista (list)
Método Descripción Retorna
append(x) Agrega x al final None
insert(i, x) Inserta x en posición i None
extend(iter) Agrega todos los elementos de iter None
remove(x) Elimina primera ocurrencia de x None
pop() Elimina y retorna el último elemento elemento
pop(i) Elimina y retorna elemento en índice i elemento
clear() Vacía la lista None
sort() Ordena en su lugar (ascendente) None
sort(reverse=True) Ordena descendente en su lugar None
reverse() Invierte el orden en su lugar None
index(x) Índice de primera ocurrencia de x int
count(x) Número de ocurrencias de x int
copy() Copia superficial list
B.5 Métodos de Diccionario (dict)
Método Descripción Retorna
keys() Retorna todas las claves dict_keys
values() Retorna todos los valores dict_values
items() Retorna pares (clave, valor) dict_items
get(k) Valor de k o None valor/None
get(k, default) Valor de k o default valor/default
update(d2) Actualiza con elementos de d2 None
pop(k) Elimina y retorna valor de k valor
popitem() Elimina y retorna último par (k, v)
setdefault(k, v) Si k no existe, k=v valor
copy() Copia superficial dict
clear() Vacía el diccionario None
fromkeys(keys, v) Crea dict con claves y valor v dict
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
B.6 Métodos de Conjunto (set)
Método Descripción Operador
add(x) Agrega x al conjunto —
update(iter) Agrega todos los de iter —
remove(x) Elimina x (error si no existe) —
discard(x) Elimina x (sin error si no existe) —
pop() Elimina y retorna elemento arbitrario —
clear() Vacía el conjunto —
union(s2) Unión de conjuntos A | B
intersection(s2) Intersección (elementos comunes) A & B
difference(s2) Diferencia (en A pero no en B) A - B
symmetric_difference(s2) En uno pero no en ambos A ^ B
issubset(s2) Verifica si A ⊆ B A <= B
issuperset(s2) Verifica si A ⊇ B A >= B
isdisjoint(s2) Verifica si no hay elementos comunes —
copy() Copia superficial —
B.7 Módulo math – Funciones Matemáticas
Función/Constante Descripción Ejemplo
[Link] Constante π = [Link]
3.14159...
math.e Constante e = math.e
2.71828...
[Link](x) Raíz cuadrada [Link](9) → 3.0
[Link](x) Redondear hacia abajo [Link](3.9) → 3
[Link](x) Redondear hacia arriba [Link](3.1) → 4
[Link](x) Factorial de x [Link](5) → 120
[Link](x, y) x elevado a y [Link](2, 8) → 256.0
[Link](x) Logaritmo natural [Link](math.e) → 1.0
math.log10(x) Logaritmo base 10 math.log10(100) → 2.0
[Link](x) Seno (x en radianes) [Link]([Link]/2) → 1.0
[Link](x) Coseno (x en radianes) [Link](0) → 1.0
[Link](x) Tangente (x en [Link](0) → 0.0
radianes)
[Link](x) Grados → radianes [Link](180) → π
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
[Link](x) Radianes → grados [Link]([Link]) →
180.0
[Link](a, b) Máximo común divisor [Link](12, 8) → 4
[Link](x) Verifica si es NaN [Link](float("nan"))
[Link] Infinito positivo [Link] > 9999 → True
B.8 Módulo random – Números Aleatorios
Función Descripción Ejemplo
[Link]() Float [0.0, 1.0) [Link]() → 0.374...
[Link](a, b) Entero [a, b] [Link](1, 6)
[Link](a, b, Entero [a, b) con [Link](0, 10, 2)
step) paso
[Link](a, b) Float [a, b] [Link](1.0, 10.0)
[Link](seq) Elemento aleatorio [Link](["a","b","c"])
[Link](seq, k) k elementos con [Link](seq, k=3)
reemplazo
[Link](seq, k) k elementos sin [Link](seq, k=3)
reemplazo
[Link](lista) Mezcla in-place [Link](carta)
[Link](n) Semilla para [Link](42)
reproducibilidad
B.9 Excepciones Comunes de Python
Excepción Descripción Cuándo ocurre
Exception Clase base de todas las Base genérica
excepciones
ValueError Valor incorrecto para el int("abc")
tipo
TypeError Tipo de dato incorrecto "a" + 1
ZeroDivisionError División entre cero 10 / 0
IndexError Índice fuera de rango lista[100]
KeyError Clave no existe en dict dict["no_existe"]
AttributeError Atributo no existe "x".push()
NameError Variable no definida print(x) # x sin
definir
ImportError Módulo no encontrado import
modulo_inexistente
Python 3 — Guía Completa de Aprendizaje
Guía Completa de Python 3
FileNotFoundError Archivo no encontrado open("no_existe.txt")
PermissionError Sin permisos de acceso open("/root/file")
OverflowError Número demasiado grande [Link](10000)
RecursionError Demasiadas llamadas función recursiva sin
recursivas base
StopIteration Iterador agotado next() en iterador vacío
RuntimeError Error genérico de Variados contextos
ejecución
SyntaxError Error de sintaxis en el if x # sin dos puntos
código
IndentationError Error de indentación Mezcla de tabs y
espacios
MemoryError Sin memoria disponible lista enorme
AssertionError Falla un assert assert False
NotImplementedError Método no implementado Métodos abstractos
Python 3 — Guía Completa de Aprendizaje