Menu
CoddyTech

Проверка входных данных

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 67 из 78.

Ввод поступает в виде текста, а int() преобразует любой текст, не выдавая ошибок. Если текст не является целым числом, вы получаете неверное значение вместо ошибки:

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

Поэтому проверь текст перед преобразованием. is_valid_int() возвращает true, когда весь текст представляет собой целое число:

print("42".is_valid_int()) # true
print("-15".is_valid_int()) # true
print("3.14".is_valid_int()) # false
print("abc".is_valid_int()) # false
print("".is_valid_int()) # false

is_valid_float() делает то же самое для десятичных чисел. Он также принимает целые числа, потому что 5 — допустимое значение float:

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

Пробелы считаются символами: " 99 ".is_valid_int() — это false. Сначала вызови strip_edges(), если вокруг ввода могут быть пробелы.

Число может быть допустимым, но всё же иметь неверное значение. После преобразования проверьте, что оно находится в диапазоне, допустимом для вашей программы:

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

Задание

Легко

Программа считывает одну строку ввода. Проверь её перед преобразованием:

  • Если это целое число, выведи You entered: , а затем число
  • В противном случае выведи Invalid input! Please enter a valid number.

Для ввода 42 вывод будет таким:

You entered: 42

Для вводов abc и 3.14 вывод будет таким:

Invalid input! Please enter a valid number.

Выведи преобразованное число, а не текст: для ввода 007 вывод — You entered: 7.

Попробуйте сами

extends Node

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

	# Проверьте ввод, затем выведите число или сообщение об ошибке
	pass
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript