Проверка входных данных
Часть раздела Логика и потоки выполнения путешествия по 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()) # falseis_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)Задание
ЛегкоПрограмма считывает одну строку ввода. Проверь её перед преобразованием:
- Если это целое число, выведи
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
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатов9Расширенная агрегация данных
Суммирование значенийПоиск минимального и максимального значенийПользовательская сортировкаПовторение — сортировщик словарей12Основы обработки ошибок
Что такое обработка ошибок?Проверка входных данныхЗащитные условияВозврат кодов ошибокПовторение — безопасное делениеПотренируйтесь самостоятельно: Онлайн-компилятор GDScript