Validación de ingreso de datos
La aplicación de las estructuras de control de flujo en Python es muy amplia. A continuación, veremos algunos ejemplos prácticos de uso de las estructuras de control de flujo en Python.
Validando números positivos
Imaginemos que estamos haciendo un programa que maneja un martillo automático que clava clavos. Pero queremos hacerlo más interesante: en lugar de que el martillo siempre clave la misma cantidad de clavos, vamos a pedirle al operador de la herramienta que indique cuántos clavos se clavarán por vez.
¿Cómo hacemos esto?
Primero, necesitamos pedirle al usuario un número.
Pero ojo, aquí viene el desafío: como estamos contando clavos, necesitamos asegurarnos de que el número sea positivo. No podemos clavar un número negativo de clavos.
Entonces, ¿cómo nos aseguramos de que el usuario nos dé un número positivo? Podríamos hacer algo así:
n = int(input("¿Cuántas veces debe martillar la herramienta? "))
if n < 0:
n = int(input("Ups, necesito un número positivo. ¿Cuántas veces debe martillar la herramienta? "))
Pero espera un momento... ¿Qué pasa si el usuario es un poco travieso y vuelve a poner un número negativo? Nuestro programa se quedaría corto, ¿no?
Podríamos pensar: "Bueno, simplemente repetimos la pregunta otra vez si vuelve a ser negativo". Pero ¿y si el usuario sigue poniendo números negativos una y otra vez? No podemos estar repitiendo el mismo código infinitas veces. Nuestro programa nunca terminaría, y nosotros nunca terminaríamos de escribirlo:
n = int(input("¿Cuántas veces debe martillar la herramienta? "))
if n < 0:
n = int(input("Ups, necesito un número positivo. ¿Cuántas veces debe martillar la herramienta? "))
if n < 0:
n = int(input("Ups, necesito un número positivo. ¿Cuántas veces debe martillar la herramienta? "))
if …
⋮
Entonces, ¿qué podríamos hacer para resolver este problema? ¿Se te ocurre alguna idea para asegurarnos de que siempre obtengamos un número positivo, sin importar cuántas veces el usuario intente poner un número negativo?
Esta es la clase de desafíos que enfrentamos al programar. Tenemos que pensar no solo en lo que queremos que haga nuestro programa, sino también en todas las formas en que podría fallar y cómo evitarlo.