Curso de Python / Elegir rutas de ejecución con if, elif y else
Una cadena if–elif–else elige una ruta de ejecución comprobando condiciones de arriba abajo. Solo ejecuta la primera rama que coincide; por eso conviene definir el orden y los límites de las reglas antes de escribirlas.
Delimitar las ramas mediante la sangría
La condición termina en dos puntos y las instrucciones de su bloque llevan una sangría coherente, normalmente de cuatro espacios. Mezclar tabulaciones y espacios puede hacer que dos líneas parezcan alineadas cuando no lo están. else no lleva una condición adicional.
Dos instrucciones if independientes pueden ejecutarse ambas. Una cadena if–elif elige una sola rama. Decide si estás clasificando un dato en categorías mutuamente excluyentes o generando varios avisos que deben comprobarse por separado.
La guía oficial de if describe su estructura. Para construir las condiciones, utiliza las distinciones de comparación, identidad y operadores lógicos.
Ejecutar una clasificación completa
Guarda este código como classify.py, en UTF-8 y dentro de la carpeta de práctica. Ejecuta python classify.py con el entorno del proyecto seleccionado. Fuera del entorno en macOS o Ubuntu, utiliza python3 si corresponde a tu intérprete.
amount = 8000
if amount < 0:
label = "invalid"
elif amount == 0:
label = "free"
elif amount <= 10000:
label = "small"
else:
label = "large"
print(label)
Con un importe de 8000, la salida esperada es:
small
Las condiciones anteriores ya han descartado los negativos y el cero cuando se alcanza la comparación con 10000. Así, la tercera rama puede expresar el extremo superior sin repetir todas las exclusiones anteriores.
Definir los intervalos y sus extremos
| Entrada | Etiqueta esperada |
|---|---|
| -1 | invalid |
| 0 | free |
| 1 o 10000 | small |
| 10001 | large |
Una condición demasiado amplia situada al principio puede impedir que se alcance una rama posterior. Compara las reglas como intervalos, no solo como líneas que parecen correctas al leerlas. Los valores inmediatamente a ambos lados de un límite ayudan a detectar un operador mal elegido.
Esta clasificación presupone un importe numérico. Convertir texto del usuario mediante int() y gestionar una conversión fallida son tareas diferentes. El programa con input y print muestra dónde se produce esa conversión.
Comprobar todas las rutas y mantener las variables definidas
Cualquier variable utilizada después de la cadena debe recibir un valor en todas las rutas posibles. Si asignas label solo en algunas ramas, otra entrada puede terminar intentando utilizar un nombre inexistente. Puedes asignar un valor inicial o cubrir explícitamente las ramas necesarias.
Dentro de una función, un nombre al que se asigna un valor suele considerarse local a esa función. Si una ruta intenta leerlo antes de asignarlo, puede aparecer UnboundLocalError. Evita asumir que una variable externa resolverá automáticamente ese caso.
- Sustituye el importe por cada entrada de la tabla y comprueba su etiqueta.
- Cambia
<=por<y observa qué ocurre con 10000. Después restaura el operador. - Imagina dos advertencias independientes y decide si dos
ifexpresan mejor las reglas que una cadena exclusiva.
Si una rama parece no hacer nada, revisa primero su condición y las coincidencias anteriores. La práctica de puntuaciones combina estas comprobaciones de límites con un recorrido de varios datos.




