Un programa necesita actuar de manera diferente según los datos. Si una capacidad es cero debe rechazarla. Si una lista está vacía debe explicarlo. Las condiciones permiten expresar esas reglas. En esta lección aprenderás a escribir ramas claras, respetar la sangría y comprobar los valores que quedan justo en los límites de una decisión.
Una condición abre una rama
La instrucción if evalúa una condición. Si su resultado es verdadero ejecuta el bloque asociado. El bloque comienza después de los dos puntos y se escribe con sangría. Utiliza cuatro espacios por nivel. No mezcles tabuladores y espacios en el mismo archivo porque la alineación visual puede resultar engañosa.
capacidad = 5
if capacidad > 0:
print("La capacidad permite hacer el reparto")
print("Comprobación terminada")
La última línea no está sangrada y se ejecuta independientemente del resultado de la condición. Cambia capacidad a cero y observa que desaparece el primer mensaje pero permanece el segundo. La sangría no es únicamente decoración en Python: determina qué instrucciones pertenecen a cada bloque.
Elegir entre dos posibilidades
Puedes añadir else para describir qué debe ocurrir cuando la condición no se cumple. No lleva una nueva condición porque representa la alternativa restante. Ambas ramas deben alinearse al mismo nivel. Las instrucciones de su interior quedan un nivel más adentro.
capacidad = 0
if capacidad > 0:
print("Puedes continuar")
else:
print("La capacidad debe ser mayor que cero")
Este ejemplo todavía no realiza el reparto. Primero establece una respuesta coherente ante un dato inválido. Es una buena práctica introducir una regla y comprobarla antes de combinarla con cálculos o entradas de teclado. Cuando la condición funcione podrás colocar el cálculo únicamente dentro de la rama válida.
Expresar varias categorías
Para clasificar más de dos situaciones utiliza elif. Python evalúa las condiciones en orden y ejecuta la primera rama que resulte verdadera. Después no sigue entrando en las demás ramas de esa misma cadena. El orden importa especialmente cuando los intervalos pueden solaparse.
unidades = 7
if unidades < 0:
print("Cantidad inválida")
elif unidades == 0:
print("Sin existencias")
elif unidades <= 5:
print("Existencias bajas")
else:
print("Existencias suficientes")
Con siete unidades aparece el último mensaje. Con cinco aparece «Existencias bajas» porque el límite está incluido mediante <=. Si escribieras primero unidades <= 5 sin descartar negativos también clasificarías una cantidad negativa como existencias bajas. Revisar el orden permite detectar este tipo de error lógico.
No es equivalente escribir varios if independientes cuando quieres elegir una sola categoría. Varios if pueden ejecutar varios bloques. Una cadena if, elif y else selecciona como máximo uno. Decide si las acciones son compatibles entre sí o si representan alternativas mutuamente excluyentes.
Combinar condiciones con sentido
and exige que se cumplan ambas condiciones. or permite que se cumpla al menos una. not invierte el valor lógico de una expresión. Para aceptar un reparto necesitamos que la cantidad de objetos sea no negativa y que la capacidad sea positiva.
objetos = 23
capacidad = 5
if objetos >= 0 and capacidad > 0:
cajas = (objetos + capacidad - 1) // capacidad
print(f"Necesitas {cajas} cajas")
else:
print("Revisa la cantidad y la capacidad")
Aquí el cálculo solo aparece dentro de la rama válida. No basta con mostrar un aviso y ejecutar después la división fuera del bloque. Si lo haces podrías avisar de capacidad cero y provocar igualmente un error al dividir. La estructura debe impedir la operación que has declarado inválida.
Cuando mezcles and y or utiliza paréntesis para hacer visible tu intención. Por ejemplo, una condición que permita dos opciones de menú y además exija una autorización merece una agrupación explícita. Evita expresiones enormes. Una condición que necesita varias lecturas suele mejorar si divides el problema o introduces variables con nombres claros.
Comprobar los bordes
Una regla que clasifica de una a cinco unidades debe probarse con cero, uno, cinco y seis. Son los puntos donde cambia la respuesta. Probar únicamente tres y diez deja sin examinar la inclusión de los límites. Un error entre < y <= puede pasar inadvertido durante mucho tiempo si eliges siempre valores alejados del borde.
En el cuaderno dibuja cada categoría y escribe sus extremos. Después añade al menos un valor que pertenezca claramente al interior. Este pequeño mapa permite verificar que ningún valor válido queda sin respuesta y que los intervalos no se contradicen. No necesitas una herramienta especial para hacerlo.
También conviene probar texto vacío cuando trabajas con nombres. Puedes comprobar nombre == «» después de aplicar strip. Si el resultado está vacío muestra una instrucción concreta como «Escribe al menos un carácter». Evita mensajes genéricos que obliguen al usuario a adivinar qué entrada debe corregir.
Errores habituales
- Olvidar los dos puntos al terminar if, elif o else.
- Colocar fuera del bloque una operación que debía depender de la condición.
- Ordenar intervalos de forma que una rama capture los casos de otra.
- Utilizar or cuando necesitas que se cumplan simultáneamente dos requisitos.
- Probar solo valores cómodos lejos de los límites.
Lo que deberías recordar
- La sangría determina qué instrucciones pertenecen a una rama.
- Una cadena de alternativas ejecuta la primera rama verdadera.
- Validar debe impedir realmente la operación inválida.
- Los límites revelan errores que los casos intermedios pueden ocultar.
Ejercicio práctico
Escribe un clasificador de existencias con cuatro respuestas: cantidad inválida para negativos, sin existencias para cero, existencias bajas entre uno y cinco y existencias suficientes a partir de seis. Utiliza la séptima hoja del cuaderno para anotar las reglas antes de escribirlas en Python.
Prueba los valores -1, 0, 1, 5 y 6. Registra la salida prevista y la real para cada uno. Después integra la condición del cálculo de cajas y confirma que una capacidad cero produce un aviso sin intentar dividir. Conserva el código más sencillo que cubra esos casos. No añadas todavía un menú ni repeticiones.
Siguiente capítulo: Repetir tareas con bucles.








