Qué es el control de flujo con condicionales
El control de flujo es la forma en que decides qué partes de tu programa se ejecutan según una condición. En Python, la herramienta principal para esto es if, junto con elif y else. La idea es simple: evalúas una expresión que produce True o False y, según el resultado, ejecutas un bloque u otro.
La estructura básica: if / elif / else
Un condicional se lee como “si pasa esto, haz aquello; si no, haz esto otro”. La indentación (espacios al inicio) define qué líneas pertenecen a cada bloque.
edad = 17
if edad >= 18:
print("Puedes entrar")
else:
print("No puedes entrar")Cuando hay más de dos caminos, usas elif (“si no, pero si…”):
nota = 8
if nota >= 9:
print("Excelente")
elif nota >= 7:
print("Bien")
elif nota >= 5:
print("Aprobado")
else:
print("Reprobado")Condiciones compuestas: and, or, not
Muchas decisiones reales dependen de varias reglas a la vez. Para combinarlas:
and: todas las condiciones deben ser verdaderas.or: al menos una debe ser verdadera.not: invierte el resultado.
edad = 20
invitacion = False
if edad >= 18 and invitacion:
print("Acceso VIP")
elif edad >= 18 and not invitacion:
print("Acceso general")
else:
print("Sin acceso")Errores típicos al empezar
- Confundir
=con==:=asigna,==compara. - Olvidar los dos puntos
:al final deif/elif/else. - Indentación inconsistente: el bloque debe estar alineado con el mismo número de espacios.
Validación de datos: que tu programa no se rompa con entradas “raras”
Validar datos significa comprobar que lo que entra a tu programa cumple reglas mínimas antes de usarlo. Esto evita errores y resultados absurdos. En proyectos reales, la validación es una de las habilidades que más te ahorra tiempo.
Continúa en nuestra aplicación.
Podrás escuchar el audiolibro con la pantalla apagada, recibir un certificado gratuito para este curso y además tener acceso a otros 5.000 cursos online gratuitos.
O continúa leyendo más abajo...Descargar la aplicación
Tipos de validación comunes
- Presencia: no permitir vacío.
- Tipo/formato: que sea un número, que tenga cierto patrón, etc.
- Rango: que esté entre un mínimo y un máximo.
- Conjunto permitido: que sea una de varias opciones válidas.
Guía práctica paso a paso: pedir un número entero válido
Mini-objetivo: solicitar al usuario un número entero y no avanzar hasta que sea válido.
Paso 1: pide el dato como texto (lo que entra por teclado siempre llega como texto).
Paso 2: intenta convertirlo a entero.
Paso 3: si falla, muestra un mensaje y repite.
Paso 4: cuando sea válido, continúa con el programa.
while True:
texto = input("Dime tu edad (entero): ")
try:
edad = int(texto)
break
except ValueError:
print("Eso no es un entero. Intenta de nuevo.")
print("Edad registrada:", edad)Este patrón (bucle + try/except) es una forma robusta de validación cuando necesitas convertir tipos.
Validación de rango: límites razonables
Ahora añade una regla: la edad debe estar entre 0 y 120.
while True:
texto = input("Dime tu edad (0 a 120): ")
try:
edad = int(texto)
except ValueError:
print("Eso no es un entero.")
continue
if 0 <= edad <= 120:
break
else:
print("Edad fuera de rango.")
print("Edad válida:", edad)Fíjate en la combinación: primero validas “se puede convertir”, luego validas “cumple el rango”.
Validación por opciones: menús simples
Cuando solo aceptas ciertas opciones (por ejemplo, S o N), valida contra un conjunto permitido.
while True:
respuesta = input("¿Deseas continuar? (S/N): ").strip().upper()
if respuesta in ("S", "N"):
break
print("Opción inválida. Escribe S o N.")
if respuesta == "S":
print("Continuamos")
else:
print("Nos detenemos")Aquí se usan dos trucos prácticos: strip() para quitar espacios y upper() para aceptar s/n en cualquier combinación de mayúsculas/minúsculas.
Mini-retos (para aprender programando)
Reto 1: Control de acceso a un evento
Reglas:
- Si la persona tiene 18 o más, puede entrar.
- Si tiene 16 o 17, solo entra si trae autorización (
S/N). - Si tiene menos de 16, no entra.
Pistas:
- Valida que la edad sea un entero y esté en rango.
- Solo pregunta por autorización si la edad está entre 16 y 17.
while True:
texto = input("Edad (0 a 120): ")
try:
edad = int(texto)
except ValueError:
print("Edad inválida")
continue
if 0 <= edad <= 120:
break
print("Fuera de rango")
if edad >= 18:
print("Acceso permitido")
elif 16 <= edad <= 17:
while True:
aut = input("¿Traes autorización? (S/N): ").strip().upper()
if aut in ("S", "N"):
break
print("Responde S o N")
if aut == "S":
print("Acceso permitido")
else:
print("Acceso denegado")
else:
print("Acceso denegado")Reto 2: Calculadora de envío con validación
Reglas:
- Pide el peso del paquete en kg (puede ser decimal).
- Si el peso es menor o igual a 0, es inválido.
- Tarifa: hasta 1 kg = 5; hasta 5 kg = 10; más de 5 kg = 20.
Pistas:
- Usa
floaty valida que sea > 0. - Decide la tarifa con
if/elif/else.
while True:
texto = input("Peso en kg: ")
try:
peso = float(texto)
except ValueError:
print("Peso inválido")
continue
if peso > 0:
break
print("El peso debe ser mayor que 0")
if peso <= 1:
tarifa = 5
elif peso <= 5:
tarifa = 10
else:
tarifa = 20
print("Tarifa:", tarifa)Reto 3: Validador de nombre de usuario
Reglas:
- Debe tener entre 3 y 12 caracteres.
- No puede contener espacios.
- Solo se permiten letras, números y guion bajo (
_).
Pistas:
- Usa
len()para el tamaño. - Para caracteres permitidos, recorre el texto y valida cada carácter.
usuario = input("Usuario: ")
if not (3 <= len(usuario) <= 12):
print("Longitud inválida")
elif " " in usuario:
print("No se permiten espacios")
else:
permitido = True
for ch in usuario:
if not (ch.isalnum() or ch == "_"):
permitido = False
break
if permitido:
print("Usuario válido")
else:
print("Caracteres inválidos")