Menu
CoddyTech

Validando a entrada

Parte da seção Lógica e fluxo do Journey de GDScript da Coddy. Lição 67 de 78.

A entrada chega como texto, e int() converte qualquer texto sem reclamar. Quando o texto não é um número inteiro, você obtém um valor incorreto em vez de um erro:

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

Então, verifique o texto antes de convertê-lo. is_valid_int() retorna true quando todo o texto é um número inteiro:

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

is_valid_float() faz o mesmo para números decimais. Ele também aceita números inteiros, porque 5 é um float válido:

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

Espaços contam como caracteres: " 99 ".is_valid_int() é false. Chame strip_edges() primeiro quando a entrada puder ter espaços ao redor.

Um número válido ainda pode ser um valor incorreto. Após a conversão, verifique se ele está dentro do intervalo permitido pelo seu 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

Desafio

Fácil

O programa lê uma linha de entrada. Verifique-a antes de convertê-la:

  • Se for um número inteiro, imprima You entered: seguido do número
  • Caso contrário, imprima Invalid input! Please enter a valid number.

Para a entrada 42, a saída é:

You entered: 42

Para as entradas abc e 3.14, a saída é:

Invalid input! Please enter a valid number.

Imprima o número convertido, não o texto: para a entrada 007, a saída é You entered: 7.

Experimente você mesmo

extends Node

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

	# Verifique a entrada e, em seguida, imprima o número ou a mensagem de erro
	pass
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e fluxo

Pratique por conta própria: Compilador de GDScript online