Menu
CoddyTech

Validación de entradas

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 67 de 78.

La entrada llega como texto, e int() convierte cualquier texto sin quejarse. Cuando el texto no es un número entero, obtienes un valor incorrecto en lugar de un error:

print(int("abc")) # 0
print(int("12abc")) # 12
print(int("3.14")) # 3

Así que comprueba el texto antes de convertirlo. is_valid_int() devuelve true cuando todo el texto es un número entero:

print("42".is_valid_int()) # verdadero
print("-15".is_valid_int()) # verdadero
print("3.14".is_valid_int()) # falso
print("abc".is_valid_int()) # falso
print("".is_valid_int()) # falso

is_valid_float() hace lo mismo con los números decimales. También acepta números enteros, porque 5 es un float válido:

print("3.14".is_valid_float()) # true
print("5".is_valid_float()) # true
print("five".is_valid_float()) # false

Los espacios cuentan como caracteres: " 99 ".is_valid_int() es false. Llama primero a strip_edges() cuando la entrada pueda tener espacios alrededor.

Un número válido aún puede ser un valor incorrecto. Después de la conversión, comprueba que esté dentro del rango permitido por tu programa:

var text := OS.read_string_from_stdin()
if not text.is_valid_int():
	print("Please enter a whole number")
else:
	var age := int(text)
	if age < 0 or age > 120:
		print("Age must be between 0 and 120")
	else:
		print("Age: ", age)
challenge icon

Desafío

Fácil

El programa lee una línea de entrada. Compruébala antes de convertirla:

  • Si es un número entero, imprime You entered: seguido del número
  • De lo contrario, imprime Invalid input! Please enter a valid number.

Para la entrada 42, la salida es:

You entered: 42

Para las entradas abc y 3.14, la salida es:

Invalid input! Please enter a valid number.

Imprime el número convertido, no el texto: para la entrada 007, la salida es You entered: 7.

Pruébalo tú mismo

extends Node

func _ready():
	var user_input := OS.read_string_from_stdin()

	# Comprueba la entrada y luego imprime el número o el mensaje de error
	pass
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online