CODEZEROINTERACTIVE

Chapter 7 / 15

Parte 12 — Datos inválidos

Entrada de datos con input(), conversiones, respuestas del usuario y formulario interactivo de MiniFinance.

Lesson 1337%

13 / 22 lessons in this chapter

Parte 12 — Datos inválidos

1 / 1 in this part

Current chapter

Chapter 7 — input(): recibir información del usuario

Self-paced

Parte 12 — Datos inválidos

El usuario puede escribir cualquier cosa

Este código espera un número:

python terminal
saldo = int(input("Saldo inicial: "))

Pero el usuario podría escribir:

text terminal
hola

Python intentará ejecutar:

python terminal
int("hola")

y producirá un error.


Ejemplo de ValueError

Código:

python terminal
saldo = int(input("Saldo inicial: "))

print(saldo)

Entrada:

text terminal
Saldo inicial: mil

Posible error:

text terminal
ValueError: invalid literal for int() with base 10: 'mil'

El programa se detiene

Cuando ocurre ese error, Python no continúa con las siguientes líneas.

python terminal
saldo = int(input("Saldo inicial: "))

print("Dato registrado")

Si la conversión falla, no aparecerá:

text terminal
Dato registrado

Recibir, convertir y validar son pasos distintos

Es importante diferenciar tres conceptos.

Recibir

python terminal
saldo_texto = input("Saldo: ")

Obtiene lo que escribió el usuario.

Convertir

python terminal
saldo = int(saldo_texto)

Intenta transformarlo en número.

Validar

Consiste en comprobar que el dato cumpla las reglas.

Por ejemplo:

  • Que realmente sea un número.
  • Que no sea negativo.
  • Que no esté vacío.
  • Que se encuentre dentro de un límite.
  • Que la moneda sea compatible.

Todavía no sabemos programar todas esas comprobaciones.

Las aprenderemos con condiciones y manejo de errores.


Un número válido también puede ser incorrecto

Supongamos que el usuario escribe:

text terminal
-500

Esto puede convertirse correctamente:

python terminal
saldo = int("-500")

No produce un ValueError.

Sin embargo, quizá nuestra aplicación no permita un ingreso negativo.

Eso no es un error de tipo.

Es un problema de validación y reglas del programa.


Suposición temporal

Durante este capítulo asumiremos que el usuario:

  • Escribe números cuando se solicitan números.
  • Utiliza punto para decimales.
  • No deja campos importantes vacíos.
  • Sigue el formato indicado.

Más adelante eliminaremos esas suposiciones y haremos MiniFinance más resistente.

Porque confiar ciegamente en el usuario es una tradición excelente para convertir una tarde tranquila en un incendio de producción.