Módulo III: Fundamentos de
Programación en Python
Introducción al Lenguaje Python
Python es un lenguaje de programación de alto nivel que ha transformado el
mundo del desarrollo de software gracias a su simplicidad, legibilidad y
versatilidad. Fue creado por Guido van Rossum y lanzado oficialmente en 1991
como un lenguaje interpretado y multiparadigma, lo que significa que permite a los
desarrolladores trabajar bajo diferentes estilos (procedural, orientado a objetos,
funcional), de acuerdo con la naturaleza del problema a resolver.
La filosofía de diseño de Python promueve la claridad del código y la legibilidad,
haciendo que su sintaxis sea cercana al lenguaje humano. Esto ha convertido a
Python en uno de los lenguajes más populares del mundo. De hecho, según el
índice TIOBE y otras métricas internacionales como el ranking de Stack Overflow
o GitHub, Python se encuentra constantemente en el top 3 de los lenguajes
más usados globalmente, y es el lenguaje más enseñado en universidades y
bootcamps de tecnología.
Una de sus principales virtudes es su curva de aprendizaje suave: incluso
estudiantes sin experiencia previa pueden desarrollar scripts útiles en sus
primeras horas de estudio. Esto se debe en gran parte a su sintaxis clara y su
amplio ecosistema de librerías que permiten realizar tareas complejas con pocas
líneas de código.
Python es utilizado en una amplia variedad de aplicaciones, entre ellas:
● Desarrollo web (con frameworks como Django o Flask),
● Automatización de tareas repetitivas (scripting),
● Ciencia de datos y análisis estadístico (pandas, NumPy, matplotlib),
● Inteligencia artificial y aprendizaje automático (TensorFlow, PyTorch,
scikit-learn),
● Ciberseguridad y hacking ético,
● Programación de videojuegos,
1
● Internet de las cosas (IoT), robótica y automatización industrial.
¿Por qué aprender Python en 2025?
El mercado laboral actual, impulsado por la transformación digital y el uso de la
inteligencia artificial, valora fuertemente a quienes dominan Python. Este lenguaje
es una herramienta transversal: permite automatizar hojas de cálculo, construir
modelos predictivos, desarrollar APIs, extraer datos de páginas web, controlar
hardware o programar asistentes virtuales.
En el contexto educativo de Infinity Training Institute, aprender Python no se limita
a la teoría. Se busca fomentar el aprendizaje práctico, aplicando conceptos a
proyectos reales desde el inicio. Por ejemplo, en este módulo aprenderás a
escribir tus primeros programas, a entender cómo se toman decisiones dentro del
código, y cómo repetir tareas con eficiencia. Todo esto, además, se
complementará con el apoyo de herramientas de inteligencia artificial como
ChatGPT y GitHub Copilot, que te ayudarán a generar código, depurarlo y
entenderlo mejor.
Además, Python ha sido fundamental en el auge del movimiento de código abierto.
Millones de desarrolladores contribuyen constantemente a su evolución,
generando librerías, recursos, comunidades y foros que enriquecen el ecosistema
y facilitan el aprendizaje colaborativo.
En resumen, aprender Python hoy no solo es adquirir una habilidad técnica; es
acceder a un nuevo lenguaje para construir ideas, resolver problemas del mundo
real y estar preparado para los desafíos del futuro digital.
Primer contacto con Python y su entorno
¿Cómo empezar a programar en Python?
Uno de los grandes beneficios de Python es que se puede empezar a usar sin
necesidad de instalar software complejo. Hoy en día, existen múltiples alternativas
para ejecutar código Python, desde entornos en la nube como Google Colab,
hasta editores de texto como VS Code o Jupyter Notebooks. Sin embargo, para
comenzar, te recomendamos instalar Python desde su página oficial:
https://www.python.org.
Una vez instalado, puedes utilizar el IDLE (Python Shell) que viene incluido, o
bien instalar un entorno de desarrollo más avanzado como Visual Studio Code. En
2
este curso utilizaremos ambos enfoques: primero el más básico para entender la
lógica, y luego el profesional para comenzar a construir proyectos reales.
Ejemplo Práctico: Tu primer programa en Python
A continuación, escribirás tu primera línea de código. Es una tradición entre los
programadores crear un programa que muestre en pantalla el clásico mensaje
"Hola Mundo":
print("Hola Mundo")
Este pequeño script hace que la computadora imprima ese texto en la consola.
Aunque parece sencillo, este comando muestra ya el uso de una función (print)
y una cadena de texto ("Hola Mundo"), dos conceptos fundamentales en
cualquier lenguaje.
Explicación:
● print es una función incorporada de Python que sirve para mostrar
mensajes en pantalla.
● "Hola Mundo" es un string o cadena de caracteres entre comillas dobles.
● Cada línea en Python termina simplemente con un salto de línea, no se
necesita punto y coma al final (aunque se permite).
Primeros pasos recomendados:
● Practica escribir pequeñas instrucciones para entender cómo responde
el programa.
● Usa la consola de Python para probar líneas una a una y ver resultados
inmediatos.
● Guarda tus scripts en archivos .py para poder ejecutarlos luego desde tu
editor.
3
Ejemplo:
# Guardado en archivo: saludo.py
nombre = input("¿Cómo te llamas? ")
print("Hola, " + nombre + "! Bienvenido a Python.")
Este script introduce un nuevo concepto: la función input() que sirve para recibir
datos del usuario. De esta forma, puedes empezar a construir programas
interactivos.
Uso de IA desde el inicio
Herramientas como ChatGPT o Copilot pueden ayudarte incluso en tus primeros
pasos. Por ejemplo, puedes escribirle:
"Escribe un código en Python que pida la edad al usuario y diga si es
mayor de edad."
La IA no solo te dará la solución, sino que puede explicarte por qué funciona,
ayudarte a mejorarla o a agregar más condiciones.
edad = int(input("¿Cuál es tu edad? "))
if edad >= 18:
print("Eres mayor de edad.")
else:
print("Eres menor de edad.")
Python es más que un lenguaje de programación: es una puerta de entrada al
mundo de la automatización, la ciencia de datos, la inteligencia artificial y la
innovación digital. En este módulo comenzarás con las bases, pero en poco
tiempo estarás desarrollando programas útiles, interactivos y eficientes, apoyado
por tecnologías de inteligencia artificial que potenciarán tu aprendizaje.
4
Variables, Tipos de Datos y Convenciones
¿Qué es una variable y por qué es tan importante?
En programación, una variable es un espacio reservado en la memoria que
almacena un valor que puede cambiar durante la ejecución de un programa. Son
el recurso principal para trabajar con datos, ya que nos permiten guardar,
recuperar y modificar información a lo largo de nuestro código. En Python,
definir una variable es tan sencillo como asignarle un valor utilizando el símbolo =.
Ejemplo:
nombre = "Laura"
edad = 25
Aquí, nombre y edad son variables. A nombre se le asigna el valor de texto
"Laura", mientras que edad guarda el valor numérico 25. Esta asignación ocurre
de forma directa, sin necesidad de declarar el tipo de variable como ocurre en
otros lenguajes como C o Java. Esta es una de las razones por las que Python se
considera un lenguaje de tipado dinámico.
Tipos de datos en Python
Los tipos de datos definen qué tipo de información puede almacenar una
variable. Python tiene varios tipos de datos incorporados que son fundamentales
para todo programador principiante:
Tipo de Descripción Ejemplo
dato
int Números enteros 5, -12, 0
float Números con decimales 3.14, -0.5
str Cadenas de texto "Hola",
'Python'
5
bool Valores booleanos (True o True, False
False)
list Lista de elementos ordenados [1, 2, 3]
dict Diccionario con pares {"nombre":
clave-valor "Ana"}
Inferencia de tipos y el tipado dinámico
A diferencia de otros lenguajes, en Python no es necesario especificar el tipo de
dato cuando se crea una variable. El intérprete deduce el tipo automáticamente a
partir del valor asignado:
x = 10 # int
y = 3.14 # float
z = "Hola" # str
# Error:
# print("Edad: " + 25)
Sin embargo, es importante conocer los tipos porque muchas operaciones
dependen de ellos. Por ejemplo, no se puede sumar directamente un número y
una cadena sin antes convertir uno de los dos:
# Corrección:
print("Edad: " + str(25))
6
Conversión de tipos (Casting)
Python permite transformar el tipo de una variable de manera explícita usando
funciones integradas:
int("5") # convierte de str a int → 5
float("3.14") # convierte de str a float → 3.14
str(25) # convierte de int a str → "25"
Estas transformaciones son útiles para leer datos del usuario (que llegan como
str) y luego hacer operaciones numéricas.
Nombres de variables: buenas prácticas
Para que el código sea legible y mantenible, se deben seguir ciertas
convenciones al nombrar variables:
1. Nombres descriptivos: usar palabras que indiquen claramente el
propósito de la variable:
edad_usuario = 30
2. Snake_case: en Python se recomienda usar minúsculas con guiones bajos:
nombre_completo = "Luis García"
3. Evitar palabras reservadas: como if, class, def, etc.
4. No comenzar con números ni usar caracteres especiales (excepto _).
Ejemplo práctico 1: Cálculo del IMC
nombre = input("¿Cómo te llamas? ")
peso = float(input("Ingresa tu peso en kg: "))
altura = float(input("Ingresa tu altura en metros: "))
imc = peso / (altura ** 2)
7
print(nombre + ", tu IMC es: " + str(round(imc, 2)))
Este ejercicio permite al estudiante practicar con input, float, operaciones
matemáticas, asignación de variables, concatenación, y conversión
de tipos.
Cómo apoya la IA en esta etapa
Herramientas como Copilot o ChatGPT pueden sugerir nombres de variables más
adecuados, ayudarte a corregir errores de tipo o mejorar la legibilidad del código.
Puedes consultar a la IA si no sabes cómo convertir una cadena a número o cómo
formatear un decimal.
Prompt de ejemplo:
"Corrige este código Python que calcula el área de un círculo, pero me
da error cuando uso un número con coma como entrada."
Esto enseña que las IA son excelentes mentores instantáneos, pero debes
comprender el código para usar su ayuda correctamente.
Operaciones básicas con variables en Python
Uno de los aspectos fundamentales en cualquier lenguaje de programación es la
capacidad de manipular datos mediante operaciones matemáticas, lógicas o
relacionales. En Python, estas operaciones se realizan con una sintaxis clara y
directa, lo cual facilita su aprendizaje y aplicación en múltiples contextos.
Operadores aritméticos
Python ofrece un conjunto de operadores aritméticos que permiten realizar
cálculos numéricos con facilidad. Estos operadores funcionan con variables de tipo
int y float.
8
Operador Descripción Ejemplo Resultado
+ Suma 5 + 3 8
- Resta 10 - 2 8
* Multiplicación 4 * 3 12
/ División 8 / 2 4.0
(decimal)
// División entera 7 // 2 3
% Módulo 7 % 2 1
(residuo)
** Potenciación 2 ** 3 8
Ejemplo práctico:
a = 10
b=3
print("Suma:", a + b)
print("Residuo:", a % b)
9
print("Potencia:", a ** b)
Este tipo de ejercicios fortalece la comprensión operativa de Python y da paso a
construir cálculos más complejos como estadísticas, simulaciones y algoritmos.
Operadores relacionales
También conocidos como operadores de comparación, permiten evaluar
condiciones y retornan un valor booleano (True o False):
Operado Significado Ejempl Resultad
r o o
== Igual a 5 == 5 True
!= Diferente de 5 != 3 True
> Mayor que 7 > 4 True
< Menor que 2 < 1 False
>= Mayor o igual 5 >= 5 True
que
<= Menor o igual 3 <= 2 False
que
Estas comparaciones son la base para construir estructuras de decisión
(condicionales) que se verán en el siguiente módulo.
10
Operadores lógicos
Los operadores lógicos permiten combinar múltiples condiciones y tomar
decisiones más complejas:
Operado Significad Ejemplo Resultad
r o o
and Y lógico True and False
False
or O lógico False or True
True
not Negación not True False
Ejemplo combinado:
edad = 20
es_estudiante = True
if edad > 18 and es_estudiante:
print("Puede acceder al descuento")
Este fragmento muestra cómo aplicar múltiples operadores para crear condiciones
más ricas y realistas
Buenas prácticas en el uso de operaciones
1. Evitar ambigüedad: siempre usar paréntesis cuando haya varias
operaciones, para clarificar el orden.
11
2. Controlar la división entre cero: verificar antes de realizar divisiones.
3. Ser explícito en los nombres de variables: usar nombres como
cantidad_total o precio_unitario ayuda a entender las
operaciones.
Aplicación en un caso real: conversión de divisas
Problema: un usuario desea saber cuántos dólares obtendrá al cambiar 1,000,000
COP, sabiendo que 1 USD = 4000 COP.
Código en Python:
cop = 1000000
tasa_cambio = 4000
usd = cop / tasa_cambio
print("Equivalente en USD:", usd)
Este tipo de ejemplo refuerza no solo los operadores, sino también la lógica
aplicada al mundo real.
Rol de la Inteligencia Artificial
Herramientas como ChatGPT pueden ayudarte a:
● Detectar errores en operaciones mal construidas.
● Explicar por qué una expresión devuelve cierto resultado.
● Sugerir mejoras para hacer operaciones más eficientes o legibles.
Prompt sugerido para IA:
“¿Qué pasa si divido un número entero por una cadena en Python y
cómo lo soluciono?”
12
Este tipo de diálogo con la IA entrena al estudiante para detectar errores y adoptar
una mentalidad de mejora continua.
Estructuras de datos simples
En el desarrollo de software, una de las tareas más comunes es almacenar,
organizar y acceder a conjuntos de datos. Python, al ser un lenguaje de alto nivel,
ofrece estructuras de datos integradas que permiten al programador trabajar
eficientemente con información. En esta sección nos enfocaremos en tres
estructuras fundamentales: listas, tuplas y diccionarios. Cada una tiene
propiedades únicas que las hacen adecuadas para distintas tareas de
programación.
1. Listas: Colecciones ordenadas y mutables
Una lista en Python es una colección ordenada de elementos que puede
cambiarse después de su creación (es decir, es mutable). Las listas son muy
versátiles y permiten almacenar elementos de cualquier tipo de dato: números,
cadenas, booleanos, e incluso otras listas.
Sintaxis:
nombres = ["Juan", "Ana", "Carlos"]
numeros = [10, 20, 30]
Acceso a elementos:
print(nombres[0]) # "Juan"
13
Operaciones comunes:
● append(): añade un elemento al final.
● insert(): inserta un elemento en una posición específica.
● remove(): elimina un elemento.
● pop(): elimina el último elemento.
● len(): obtiene el número de elementos.
Ejemplo práctico:
compras = []
compras.append("Pan")
compras.append("Leche")
print(compras)
Este tipo de estructuras es ideal cuando se necesita una lista cambiante, como
registros temporales, listas de tareas, etc.
2. Tuplas: Colecciones ordenadas e inmutables
Las tuplas son similares a las listas, pero con la diferencia de que no pueden
modificarse una vez creadas. Esto las hace útiles cuando se necesita proteger la
integridad de los datos.
Sintaxis:
coordenadas = (10.5, 20.3)
14
Acceso a elementos:
print(coordenadas[1]) # 20.3
Las tuplas son más eficientes en términos de procesamiento y uso de memoria.
Por ello, se suelen usar para datos fijos como fechas, posiciones, claves de
configuración, entre otros.
Ejemplo práctico:
dias_semana = ("Lunes", "Martes", "Miércoles", "Jueves", "Viernes")
3. Diccionarios: Colecciones desordenadas de pares clave-valor
El diccionario (dict) es una estructura muy poderosa de Python que almacena
datos mediante pares de clave y valor. Es una forma eficiente de representar
relaciones, configuraciones o cualquier estructura similar a un objeto JSON.
Sintaxis:
estudiante = {
"nombre": "Luis",
"edad": 20,
"cursos": ["Python", "SQL"]
Acceso y manipulación:
print(estudiante["nombre"]) # "Luis"
estudiante["edad"] = 21
Operaciones comunes:
● keys(): devuelve las claves.
● values(): devuelve los valores.
● items(): devuelve pares clave-valor.
● get(): acceso seguro a un valor.
15
Ejemplo práctico:
inventario = {
"manzanas": 50,
"bananos": 30
}
inventario["manzanas"] -= 5
Comparación entre estructuras
Estructura Orde Mutab Permite Acceso por Acceso por
nada le duplicados índice clave
Lista Sí Sí Sí Sí No
Tupla Sí No Sí Sí No
Diccionario No Sí No (en claves) No Sí
Aplicaciones con IA
Estas estructuras de datos son la base para manipular respuestas de APIs de IA.
Por ejemplo, si se usa una herramienta como OpenAI, las respuestas del modelo
llegan en formato JSON (que en Python se representa como un diccionario).
Ejemplo aplicado con IA:
respuesta = {
"mensaje": "Tu código está correcto",
"sugerencias": ["Optimiza la función", "Agrega comentarios"]
}
16
for sugerencia in respuesta["sugerencias"]:
print("-", sugerencia)
Este ejemplo muestra cómo se pueden procesar sugerencias de IA utilizando
listas y diccionarios, fomentando una mentalidad práctica y adaptativa en el
estudiante.
Estructuras de Control – Condicionales
En el desarrollo de software, la toma de decisiones es una de las capacidades
más importantes que debe poseer un programa. Las estructuras de control
condicional permiten que un programa elija diferentes caminos en función del
cumplimiento de ciertas condiciones. Python ofrece una sintaxis clara y sencilla
para implementar estas decisiones a través de las sentencias if, elif y else.
1. Sentencia if: evaluación de condiciones
La instrucción if permite ejecutar un bloque de código solo si se cumple una
condición booleana (es decir, que resulte True).
Sintaxis:
if condicion:
# Bloque de código si se cumple la condición
Ejemplo:
edad = 20
if edad >= 18:
print("Eres mayor de edad.")
En este ejemplo, si el valor de edad es mayor o igual a 18, se ejecutará la
instrucción print().
17
2. Sentencia else: alternativa ante una condición falsa
El bloque else permite definir una acción alternativa cuando la condición del if
no se cumple.
Ejemplo:
if edad >= 18:
print("Eres mayor de edad.")
else:
print("Eres menor de edad.")
Este patrón de decisión binaria es común en validaciones, permisos de acceso, y
navegación en menús interactivos.
3. Sentencia elif: evaluación de múltiples condiciones
Cuando hay más de una posibilidad a considerar, se utiliza elif (abreviatura de
“else if”). Permite evaluar múltiples condiciones de forma secuencial.
Ejemplo práctico:
nota = 85
if nota >= 90:
print("Sobresaliente")
elif nota >= 75:
print("Aprobado")
else:
print("Reprobado")
Este tipo de estructura es esencial en sistemas de calificación, enrutamiento de
opciones en aplicaciones, o respuestas adaptativas en sistemas con IA.
18
4. Anidamiento de condiciones
Python permite anidar bloques condicionales, es decir, incluir estructuras if
dentro de otras. Esto es útil cuando se requiere mayor control y evaluación de
decisiones jerárquicas.
Ejemplo:
usuario = "admin"
autenticado = True
if autenticado:
if usuario == "admin":
print("Acceso total al sistema.")
else:
print("Acceso limitado.")
else:
print("Acceso denegado.")
Este tipo de estructuras es común en la lógica de seguridad y en los flujos de
navegación de interfaces.
5. Buenas prácticas
● Indentación clara: Python exige bloques indentados. Usualmente, se
recomienda usar 4 espacios por nivel.
● Evitar condiciones innecesarias: Utiliza expresiones booleanas claras.
● Comparaciones explícitas: No abuses de comparaciones implícitas, como
if variable: si necesitas ser preciso.
19
6. Casos prácticos aplicados a IA
Supongamos que un modelo de IA devuelve un análisis de sentimientos de un
comentario y queremos actuar en función del resultado:
Ejemplo con if y elif:
sentimiento = "positivo"
if sentimiento == "positivo":
print("Gracias por tu opinión favorable.")
elif sentimiento == "neutral":
print("Agradecemos tu comentario.")
else:
print("Lamentamos que no estés satisfecho.")
Aquí, se demuestra cómo integrar la lógica condicional con los resultados
provenientes de IA para generar respuestas automatizadas.
7. Ejercicio práctico propuesto
Escenario: Crear un programa que reciba el puntaje de un examen (entre 0 y 100)
y devuelva la siguiente calificación:
● 90-100: Excelente
● 75-89: Bueno
● 50-74: Aprobado
● 0-49: Reprobado
Reto adicional: Si el puntaje es superior a 100 o negativo, debe mostrar un
mensaje de error.
20
nota = int(input("Ingrese su nota: "))
if nota > 100 or nota < 0:
print("Nota inválida.")
elif nota >= 90:
print("Excelente")
elif nota >= 75:
print("Bueno")
elif nota >= 50:
print("Aprobado")
else:
print("Reprobado")
Este tipo de ejercicios fortalece la comprensión de estructuras condicionales y la
validación de datos, aspectos fundamentales en cualquier desarrollo profesional.
1. El bucle for: iteraciones definidas
El ciclo for en Python es una estructura que recorre los elementos de una
secuencia (listas, cadenas, tuplas, diccionarios, etc.). Es ideal cuando se conoce
de antemano cuántas veces se debe ejecutar un bloque de código.
Sintaxis general:
python
CopiarEditar
for variable in secuencia:
# Bloque de código a ejecutar
21
Ejemplo 1 – Recorrer una lista:
python
CopiarEditar
colores = ['rojo', 'verde', 'azul']
for color in colores:
print(f"El color es {color}")
Ejemplo 2 – Usar range() para repetir acciones:
python
CopiarEditar
for i in range(5):
print(f"Iteración número {i}")
Este tipo de bucle se usa ampliamente para procesar datos, automatizar tareas en
lotes, generar archivos y controlar flujos de trabajo en aplicaciones.
2. El bucle while: iteraciones controladas por condición
A diferencia del for, el bucle while ejecuta su bloque de código mientras se
cumpla una condición booleana. Es útil cuando no se conoce previamente
cuántas veces debe ejecutarse el ciclo.
Sintaxis:
while condicion:
# Bloque de código
Ejemplo práctico:
python
CopiarEditar
contador = 0
while contador < 3:
print("Hola, mundo")
22
contador += 1
Este tipo de bucle es muy común en menús interactivos, juegos, algoritmos de
búsqueda o aplicaciones que dependen de eventos.
3. Control de bucles: break, continue y else
Python ofrece herramientas para modificar el comportamiento natural de los ciclos:
● break: Finaliza el bucle inmediatamente.
● continue: Salta a la siguiente iteración sin ejecutar el resto del bloque.
● else: Ejecuta una vez al finalizar el bucle sin interrupciones.
Ejemplo con break:
for numero in range(10):
if numero == 5:
break
print(numero)
Ejemplo con continue:
for numero in range(5):
if numero == 2:
continue
print(numero)
Ejemplo con else:
for n in range(3):
print(f"Intento {n}")
else:
print("Finalizaron los intentos.")
23
4. Casos prácticos en programación real
Automatización de tareas:
# Enviar 10 correos electrónicos simulados
for i in range(10):
print(f"Enviando correo {i+1}")
Validación con entrada de usuario:
intento = 0
clave = "python123"
entrada = ""
while entrada != clave and intento < 3:
entrada = input("Introduce la contraseña: ")
intento += 1
if entrada == clave:
print("Acceso concedido.")
else:
print("Acceso denegado.")
Este ejemplo demuestra una lógica de autenticación simple donde el bucle while
controla los intentos permitidos.
5. Aplicación en contextos con IA
En desarrollos que integran inteligencia artificial, los bucles son esenciales para
recorrer resultados, procesar lotes de datos o evaluar modelos.
Ejemplo aplicado con IA:
24
predicciones = ['positivo', 'negativo', 'neutral', 'positivo']
for resultado in predicciones:
if resultado == 'positivo':
print("Enviar mensaje de agradecimiento.")
elif resultado == 'negativo':
print("Escalar a soporte técnico.")
else:
print("Registrar como opinión neutral.")
Este ejemplo simula cómo un bot puede procesar resultados de una API de
análisis de sentimientos para actuar de forma autónoma.
Estructuras de Control – Iteraciones con while
(Avanzado)
El bucle while en Python puede usarse en situaciones complejas donde se
requiere esperar un evento externo, verificar múltiples condiciones o mantener una
interacción constante con el usuario o con sistemas automatizados. Su flexibilidad
lo convierte en una herramienta clave para el desarrollo de algoritmos, interfaces
interactivas y procesos autónomos.
1. Validación de múltiples condiciones
El while es útil para validar múltiples condiciones al mismo tiempo. Por ejemplo,
podríamos necesitar que se cumplan dos requisitos antes de salir del bucle:
saldo = 500
retiro = 0
while retiro <= 0 or retiro > saldo:
25
retiro = int(input("Ingrese el monto a retirar: "))
print(f"Retiro exitoso de ${retiro}")
Este ejemplo simula un proceso bancario simple donde el usuario debe ingresar
un monto válido antes de continuar.
2. Automatización de decisiones con sensores o datos
En proyectos de automatización o inteligencia artificial, muchas veces se usa
while para mantener procesos activos hasta que se reciba una señal o resultado
esperado:
import random
modelo_entrenado = False
intentos = 0
while not modelo_entrenado:
intentos += 1
precision = random.random()
print(f"Intento {intentos}: Precisión del modelo = {precision:.2f}")
if precision > 0.9:
modelo_entrenado = True
print("Modelo entrenado correctamente.")
Este ejemplo simula el entrenamiento de un modelo que continúa iterando hasta
alcanzar una precisión aceptable. En la práctica, estas condiciones pueden
depender de cálculos complejos o entradas de APIs de IA.
26
3. Bucle infinito controlado
El uso de while True se conoce como un bucle infinito y es común en
programas que deben mantenerse activos, como servidores, bots o asistentes
virtuales. La lógica interna del bucle debe controlar cuándo se sale.
Ejemplo – Chatbot básico:
while True:
mensaje = input("Tú: ")
if mensaje.lower() == "salir":
print("Bot: ¡Hasta luego!")
break
else:
print("Bot: Lo siento, aún estoy aprendiendo.")
Este enfoque es útil en asistentes virtuales controlados por IA como ChatGPT,
donde la conversación se mantiene hasta recibir una instrucción de corte.
4. Espera de eventos o respuestas externas
Un uso avanzado del bucle while consiste en mantener un proceso “en espera”
hasta que ocurra un evento externo, como la recepción de una respuesta desde
un API, sensor o archivo.
Ejemplo – Esperar respuesta de usuario simulado:
respuesta = None
espera = 0
while respuesta != "sí" and espera < 3:
respuesta = input("¿Aceptas los términos? (sí/no): ")
espera += 1
if respuesta == "sí":
27
print("Gracias por aceptar.")
else:
print("Proceso cancelado.")
Este tipo de lógica se adapta bien a interfaces conversacionales o flujos de
onboarding en plataformas digitales.
5. Integración con IA: detección de anomalías
Se pueden integrar bucles while con resultados de sistemas de inteligencia
artificial para tomar decisiones en tiempo real. Por ejemplo, monitorear
constantemente datos de sensores y reaccionar ante anomalías.
Ejemplo – Simulación con IA:
import random
def detectar_anomalia():
return random.choice([False, False, False, True])
while True:
if detectar_anomalia():
print(" ⚠️ Alerta: se detectó una anomalía en el sistema.")
break
else:
print(" ✔️ Sistema estable.")
Este fragmento representa cómo un sistema automático podría usar IA para
monitorear condiciones críticas, muy útil en entornos industriales, de salud o
financieros.
28
El uso del bucle while va más allá de la simple repetición. Permite diseñar
sistemas dinámicos y adaptativos que reaccionan a las condiciones del entorno,
entradas del usuario o resultados de inteligencia artificial. La comprensión
profunda de esta estructura es clave para el desarrollo de soluciones
automatizadas, asistentes virtuales, procesos de entrenamiento de modelos y
programas interactivos avanzados.
Estructuras Condicionales Anidadas y Flujos de Control
Complejos
Una de las habilidades fundamentales para dominar la lógica de programación es
la capacidad de estructurar condiciones que dependan unas de otras. Las
estructuras condicionales anidadas permiten al programador diseñar rutas de
decisión más sofisticadas, útiles en aplicaciones que involucran múltiples criterios
de validación o decisiones jerárquicas.
1. ¿Qué es una estructura condicional anidada?
Se trata de una condición if, elif o else que contiene dentro de su bloque otra
instrucción condicional. Esta anidación puede continuar a diferentes niveles de
profundidad, dependiendo de la complejidad del problema.
Ejemplo básico:
edad = int(input("Ingrese su edad: "))
nacionalidad = input("¿Es colombiano? (sí/no): ").lower()
if edad >= 18:
if nacionalidad == "sí":
print("Puede votar en Colombia.")
else:
print("Debe consultar la normativa migratoria.")
else:
print("No puede votar por ser menor de edad.")
29
En este ejemplo, se deben cumplir dos condiciones para acceder a una acción: ser
mayor de edad y tener la nacionalidad requerida.
2. Anidación múltiple y validaciones jerárquicas
A medida que un sistema se vuelve más complejo, los criterios de decisión
aumentan. Imagina un sistema de recomendaciones de un curso online:
nivel = input("¿Cuál es tu nivel? (básico/intermedio/avanzado): ")
tiene_certificado = input("¿Tienes certificación previa? (sí/no): ")
if nivel == "básico":
print("Te recomendamos iniciar con Fundamentos de Programación.")
elif nivel == "intermedio":
if tiene_certificado == "sí":
print("Puedes acceder directamente a cursos avanzados.")
else:
print("Completa primero el módulo de fundamentos.")
else:
print("Estás listo para proyectos con IA y algoritmos avanzados.")
Estas estructuras se utilizan frecuentemente para construir motores de
recomendación o flujos de onboarding personalizados.
3. Diseño de flujos de decisión complejos
Un enfoque profesional para diseñar flujos condicionales complejos es utilizar
diagrama de flujo o diagramas de decisión. Esto permite organizar la lógica
antes de escribir el código. Python ofrece también estructuras como match-case
(a partir de la versión 3.10) para evitar múltiples if-elif.
30
Ejemplo con múltiples criterios:
curso = input("Curso completado (Python/SQL/IA): ").lower()
nota = float(input("Nota final obtenida: "))
if curso == "python":
if nota >= 85:
print("¡Aprobaste con excelente desempeño!")
elif nota >= 60:
print("Aprobaste, pero se recomienda reforzar temas.")
else:
print("Requiere repetir el curso.")
elif curso == "sql":
# lógica similar adaptada a SQL
pass
Este tipo de estructura es útil para sistemas educativos, encuestas adaptativas y
pruebas automatizadas.
4. Buenas prácticas
● Evita la sobreanidación: demasiados niveles dificultan la legibilidad.
Considera dividir en funciones.
● Utiliza operadores lógicos: and, or y not pueden reducir la necesidad de
anidaciones.
● Documenta la lógica: en especial si las condiciones impactan
directamente en la experiencia del usuario o resultados de negocio.
31
5. Aplicación con IA: flujos inteligentes de decisiones
Hoy en día, es posible construir flujos de decisión que integren modelos de IA. Por
ejemplo, al evaluar si una persona debe acceder a un curso, se puede usar un
modelo de aprendizaje automático para predecir si está preparada, y luego usar
if para definir la acción:
recomendacion_ia = "avanzado" # resultado de modelo predictivo
if recomendacion_ia == "básico":
print("Empieza por lo fundamental.")
elif recomendacion_ia == "intermedio":
print("Puedes ingresar al curso con reforzamiento.")
else:
print("Recomendamos un desafío avanzado.")
Esto muestra cómo integrar decisiones basadas en predicciones dentro de la
lógica tradicional de programación.
Las estructuras condicionales anidadas y los flujos de decisión complejos forman
la base de muchos algoritmos reales. Desde sistemas de recomendación hasta
validaciones críticas en plataformas de educación, banca o salud, dominar este
tipo de estructuras permite desarrollar programas robustos y personalizados. El
pensamiento lógico y el diseño claro son tan importantes como el código en sí. Al
combinar estos conocimientos con herramientas de IA, se logra una toma de
decisiones automatizada, efectiva y adaptativa.
Introducción al uso de la Inteligencia Artificial en
programación con Python
El auge de la Inteligencia Artificial (IA) ha transformado profundamente la forma en
que se desarrolla software en la actualidad. Gracias a modelos avanzados de
lenguaje como ChatGPT, Copilot y herramientas de IA generativa, los
programadores cuentan ahora con asistentes inteligentes que les permiten escribir
código más rápido, entender errores, generar documentación e incluso validar
estructuras lógicas. Esta revolución tecnológica no reemplaza al desarrollador,
32
sino que amplifica sus capacidades y permite centrarse más en la resolución de
problemas que en la mecánica de la sintaxis.
1. ¿Qué es la IA generativa aplicada a la programación?
La inteligencia artificial generativa es una rama de la IA que permite a los sistemas
crear contenido original a partir de datos o instrucciones. En el contexto de la
programación, esto se traduce en la generación de código fuente, fragmentos de
lógica, estructuras de datos, funciones completas e incluso recomendaciones de
refactorización. Herramientas como GitHub Copilot, impulsado por el modelo
Codex de OpenAI, y ChatGPT, con su capacidad de entender lenguaje natural,
permiten que los estudiantes y profesionales escriban una descripción de lo que
desean y obtengan sugerencias de código funcional en Python.
Ejemplo práctico:
Prompt en ChatGPT:
"Escribe una función en Python que reciba una lista de números y devuelva solo
los pares."
Respuesta del modelo:
def filtrar_pares(lista):
return [n for n in lista if n % 2 == 0]
¿Por qué usar IA desde las etapas iniciales de aprendizaje?
Incluir herramientas de IA en la enseñanza de fundamentos de programación
aporta grandes beneficios:
● Reducción de la frustración inicial: los errores comunes pueden ser
detectados y corregidos con ayuda de la IA.
● Aprendizaje personalizado: permite al estudiante consultar ejemplos
específicos según su ritmo.
● Retroalimentación inmediata: el estudiante puede entender por qué un
código no funciona y cómo mejorarlo.
● Estímulo creativo: al generar soluciones variadas, la IA muestra al
estudiante que hay múltiples caminos para resolver un mismo problema.
33
Sin embargo, es fundamental destacar que la IA no sustituye el proceso de
razonamiento. Es una herramienta poderosa, pero debe utilizarse con juicio
crítico y responsabilidad académica.
Herramientas principales de IA para desarrollo con Python
Herramienta Características clave
ChatGPT Generación de código, explicaciones, depuración,
sugerencias.
GitHub Copilot Autocompletado inteligente en IDEs como VS Code.
Kite Motor de autocompletado basado en IA para múltiples
lenguajes.
Amazon Similar a Copilot, enfocado en productividad
CodeWhisperer empresarial.
Estas herramientas pueden integrarse fácilmente al entorno de desarrollo. Por
ejemplo, Copilot puede instalarse como extensión en Visual Studio Code y
empezar a sugerir código tan pronto como se comience a escribir una función.
Ética y uso responsable de la IA en la programación
Aunque las ventajas son numerosas, es importante establecer límites éticos. La IA
debe utilizarse como medio de aprendizaje, no como sustituto del esfuerzo
cognitivo. Copiar y pegar soluciones sin entenderlas va en contra del propósito del
curso. Por eso, en este módulo se promueve:
● El uso guiado de la IA para comprender, no solo para resolver.
● La comparación de múltiples respuestas generadas.
● El análisis de los errores sugeridos por los modelos.
● La reformulación de prompts como forma de depurar la lógica.
34
Generación de Código a partir de Lenguaje Natural con IA
La capacidad de la inteligencia artificial para transformar instrucciones en lenguaje
natural en código ejecutable marca un punto de inflexión en la forma en que las
personas aprenden y aplican la programación. A través de modelos como
ChatGPT, Codex o Copilot, ahora es posible describir lo que se desea construir
con palabras sencillas y obtener de forma inmediata un fragmento de código
funcional en Python. Esta práctica no solo democratiza el acceso al desarrollo de
software, sino que también fortalece la comprensión conceptual al hacer explícita
la relación entre idea y sintaxis.
¿Cómo funciona esta generación de código?
Los modelos de IA entrenados en grandes corpus de código y texto (como el de
GitHub) han aprendido patrones que les permiten predecir qué líneas de código
siguen a una descripción específica. Cuando el usuario escribe un prompt o
instrucción como “crea una función que ordene una lista de números”, el modelo
interpreta esa solicitud, reconoce su intención y responde con un bloque de código
que cumple esa función.
Ejemplo:
Prompt: “Escribe una función en Python que reciba una lista de nombres y
devuelva los que tengan más de 5 letras.”
Respuesta IA:
def filtrar_nombres_largos(lista):
return [nombre for nombre in lista if len(nombre) > 5]
Este tipo de interacción promueve una forma más natural y eficiente de
construir soluciones, especialmente en etapas iniciales del aprendizaje
donde aún se están dominando las estructuras del lenguaje.
Beneficios para el aprendizaje de programación
El uso de lenguaje natural como puerta de entrada al código tiene numerosas
ventajas para estudiantes:
35
● Reduce la barrera técnica inicial, permitiendo que personas sin
conocimientos avanzados participen en la lógica de desarrollo.
● Fomenta la experimentación, ya que los resultados son inmediatos y
modificables.
● Permite construir soluciones iterativas, ajustando progresivamente el
prompt hasta obtener el resultado deseado.
● Acelera la adquisición de buenas prácticas, pues los modelos suelen
sugerir estructuras limpias y legibles.
No obstante, es fundamental que los estudiantes analicen y comprendan el código
generado. La interpretación crítica es parte esencial del proceso formativo.
Buenas prácticas para generar prompts efectivos
No todos los prompts son igual de claros. Una redacción ambigua puede llevar a
resultados incorrectos. Aquí se presentan algunas recomendaciones para
optimizar el uso de IA en la generación de código:
Práctica Ejemplo correcto
recomendada
Sé específico ✅ "Escribe una función en Python que reciba un número
entero y retorne si es primo."
Define el tipo de
dato
✅ "Devuelve una lista con los elementos duplicados de
otra lista."
Usa el formato
pregunta
✅ "¿Cómo creo una clase llamada Estudiante con
atributos nombre y edad?"
Incluye
restricciones
✅ "Escribe un algoritmo que ordene sin usar sort()."
36
Evita
ambigüedades
🚫 "Haz una función que lo arregle." (¿Qué se debe
arreglar?)
Consejo: Comienza con instrucciones simples y ve refinando tu petición. Si la
primera respuesta no es adecuada, reescribe el prompt incluyendo más detalles.
Casos prácticos en el aula
A continuación, se proponen situaciones que pueden implementarse en clase para
entrenar a los estudiantes en la formulación de prompts y la interpretación de
respuestas generadas por IA:
● Caso 1: “Necesito un programa que me diga si un número es múltiplo de 3
y 5.”
Respuesta esperada:
def es_multiplo_3_y_5(n):
return n % 3 == 0 and n % 5 == 0
● Caso 2: “¿Cómo hago para calcular el promedio de una lista de números
flotantes?”
Respuesta esperada:
def calcular_promedio(lista):
return sum(lista) / len(lista)
● Caso 3: “Dame una función que devuelva los caracteres únicos de una
cadena.”
Respuesta esperada:
def caracteres_unicos(cadena):
return list(set(cadena))
37
Aplicaciones Prácticas y Mini Proyectos
En este apartado se busca consolidar el conocimiento adquirido en las estructuras
de control, variables, funciones y condicionales, a través de proyectos prácticos
que simulan contextos reales. Los mini proyectos permiten al estudiante aplicar lo
aprendido en escenarios que podrían encontrarse en su vida profesional,
fortaleciendo la comprensión y fomentando el desarrollo de pensamiento lógico y
habilidades de resolución de problemas.
1. ¿Por qué hacer mini proyectos?
El aprendizaje significativo ocurre cuando los estudiantes construyen activamente
su conocimiento mediante la práctica. Implementar mini proyectos permite:
● Fortalecer el pensamiento computacional.
● Integrar diversos conceptos en una sola solución.
● Reforzar la lógica y sintaxis de Python.
● Estimular la creatividad y la autogestión del aprendizaje.
● Experimentar un enfoque de “aprender haciendo”, alineado con
metodologías como el Practical Learning Method.
Ejemplo práctico 1: Calculadora de Propinas
Objetivo: Calcular cuánto debe dejarse como propina según el valor de la cuenta
y la calidad del servicio.
cuenta = float(input("Ingrese el total de la cuenta: "))
servicio = input("Calidad del servicio (malo, bueno, excelente): ").lower()
if servicio == "malo":
propina = cuenta * 0.05
elif servicio == "bueno":
propina = cuenta * 0.10
38
elif servicio == "excelente":
propina = cuenta * 0.15
else:
propina = 0
print(f"La propina sugerida es: ${propina:.2f}")
Este ejercicio pone en práctica el uso de condicionales, operaciones matemáticas
y entradas del usuario.
Ejemplo práctico 2: Simulador de Registro Académico
Objetivo: Crear un sistema básico donde el usuario registra su nombre, curso y
nota final. El programa debe decir si aprobó y generar un mensaje personalizado.
nombre = input("Nombre del estudiante: ")
curso = input("Nombre del curso: ")
nota = float(input("Nota final (0-100): "))
if nota >= 60:
resultado = "Aprobado"
else:
resultado = "Reprobado"
print(f"{nombre}, en el curso {curso}, tu resultado es: {resultado}")
Aquí se combinan condicionales, entrada de datos, variables y formateo de texto.
Ejemplo práctico 3: Sistema de Login Simulado
Objetivo: Simular el inicio de sesión básico de un sistema con validación de
usuario y contraseña.
39
usuario_guardado = "admin"
contrasena_guardada = "1234"
usuario = input("Ingrese su usuario: ")
contrasena = input("Ingrese su contraseña: ")
if usuario == usuario_guardado and contrasena == contrasena_guardada:
print("Acceso concedido.")
else:
print("Acceso denegado.")
Este ejemplo permite introducir comparaciones múltiples y operadores lógicos.
Proyecto práctico: Menú interactivo para sistema educativo
Objetivo: Crear un menú que permita a los estudiantes consultar su promedio,
saber si aprueban, y simular el ingreso a cursos.
def mostrar_menu():
print("\n--- Menú Estudiante ---")
print("1. Calcular promedio")
print("2. Ver estado de aprobación")
print("3. Simular inscripción")
print("4. Salir")
opcion = 0
while opcion != 4:
mostrar_menu()
opcion = int(input("Seleccione una opción: "))
if opcion == 1:
40
notas = [float(input(f"Ingrese nota {i+1}: ")) for i in range(3)]
promedio = sum(notas)/len(notas)
print(f"Promedio: {promedio}")
elif opcion == 2:
estado = "Aprobado" if promedio >= 60 else "Reprobado"
print(f"Estado: {estado}")
elif opcion == 3:
curso = input("Curso a inscribirse: ")
print(f"Inscripción exitosa al curso {curso}")
elif opcion == 4:
print("Saliendo del sistema.")
else:
print("Opción inválida.")
Este proyecto integra bucles, condicionales, funciones y listas.
Siguiente paso: Incorporación de la IA
En los próximos apartados se explorará cómo la inteligencia artificial puede ayudar
a generar automáticamente fragmentos de código como los anteriores, optimizar
soluciones y sugerir mejoras a partir de descripciones en lenguaje natural. Estos
ejemplos servirán como base para construir soluciones más inteligentes y
adaptativas.
Herramientas de IA aplicadas a la programación
La integración de herramientas de inteligencia artificial en la programación ha
transformado de manera significativa la forma en que desarrolladores y
estudiantes abordan la escritura de código. En lugar de memorizar sintaxis o
buscar soluciones fragmentadas, hoy es posible recurrir a asistentes inteligentes
que guían el proceso de creación, validación y optimización de programas. Estas
herramientas no solo agilizan el desarrollo, sino que también ofrecen un entorno
interactivo de aprendizaje personalizado, elevando el nivel de comprensión y
productividad.
41
Una de las herramientas más influyentes es GitHub Copilot, desarrollado por
GitHub y OpenAI. Este asistente funciona como una extensión para editores de
código como Visual Studio Code, y su propósito principal es sugerir fragmentos de
código mientras se escribe. Por ejemplo, si el usuario comienza una función def
contar_vocales(texto):, Copilot puede completar automáticamente el
cuerpo de la función basándose en patrones aprendidos de millones de
repositorios.
Otra herramienta relevante es Kite, que proporciona autocompletado inteligente y
documentación contextual en tiempo real. Kite soporta múltiples lenguajes,
incluido Python, y destaca por ofrecer sugerencias que priorizan buenas prácticas.
Su ventaja radica en la capacidad de explicar el propósito de las funciones
usadas, lo cual resulta ideal para estudiantes en etapa inicial.
Tabnine es otra opción destacada, entrenada sobre millones de líneas de código,
capaz de integrarse con numerosos IDEs (como PyCharm, Atom o Sublime Text).
A diferencia de Copilot, que genera bloques enteros, Tabnine se centra más en la
predicción de líneas específicas, lo que permite al programador mantener el
control de la lógica mientras recibe sugerencias precisas.
Además de estos plugins, existen plataformas completas como Replit, que
integran entornos de desarrollo en la nube con capacidades de IA. En Replit, el
estudiante puede escribir código y recibir retroalimentación automática sobre
errores, optimización e incluso estilo de programación.
Para tareas más avanzadas, Amazon CodeWhisperer y Google Studio Bot
permiten a las grandes empresas utilizar asistentes de codificación entrenados
con estándares corporativos, integrándose con sus pipelines de desarrollo.
Estas herramientas, lejos de reemplazar al programador, se posicionan como
mentores digitales. En el contexto educativo, su impacto es aún mayor: permiten
que cada estudiante experimente con lógica, corrija errores de forma autónoma y
descubra nuevas formas de construir soluciones, todo dentro de un entorno
seguro y controlado.
El uso pedagógico de estas herramientas demanda un enfoque reflexivo. No se
trata de enseñar a copiar respuestas generadas por IA, sino de capacitar al
estudiante para entender, ajustar y justificar el código sugerido. En este sentido, se
vuelve crucial desarrollar habilidades de interpretación crítica.
42
Ejemplo 1: Uso práctico de GitHub Copilot en Visual Studio Code
Un estudiante escribe en Python:
# Crear una función que invierta una cadena
def invertir_cadena(texto):
Al pulsar enter, Copilot sugiere:
return texto[::-1]
Esta respuesta es correcta, elegante y eficiente. Sin embargo, el docente puede
plantear preguntas como:
● ¿Qué significa [::-1]?
● ¿Existen otras formas de invertir una cadena?
● ¿En qué casos puede fallar este enfoque?
Así, el uso de IA se convierte en una oportunidad para generar discusión,
comparar métodos y fomentar la profundización en el lenguaje.
Ejemplo 2: Kite explicando una función desconocida
Al usar Kite, si el estudiante introduce itertools.groupby(), la herramienta
muestra una breve explicación:
“Crea un iterador que devuelve claves y grupos desde una secuencia
ordenada.”
Esto invita al estudiante a experimentar con el módulo, explorar la
documentación oficial y realizar ejemplos propios.
Ejemplo 3: Tabnine y predicción contextual
En una clase de estructuras de control, el estudiante comienza a escribir:
for i in range(10):
43
Tabnine sugiere:
print(i)
Este tipo de predicción favorece la fluidez del aprendizaje, evitando que el alumno
se distraiga buscando errores de sintaxis o lógica elemental.
Herramientas complementarias basadas en IA
Además de los asistentes de codificación, existen otras herramientas de IA que
enriquecen el proceso educativo:
Explain Code: permite pegar cualquier fragmento de código y obtener una
explicación detallada línea por línea. Ideal para análisis post-ejecución.
ChatGPT + Python: permite no solo generar código, sino también corregir errores,
optimizar algoritmos y simular entrevistas técnicas.
Mermaid + IA: para convertir texto en lenguaje natural en diagramas de flujo,
ideales para documentar lógica algorítmica.
Estas soluciones constituyen un ecosistema robusto que, bien utilizado, fortalece
la autonomía del estudiante. Lejos de fomentar la dependencia, promueven el
aprendizaje activo, permitiendo que cada persona explore, cuestione y mejore sus
soluciones de forma progresiva.
44