Walidacja danych wejściowych
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 67 z 78.
Dane wejściowe są tekstem, a int() konwertuje dowolny tekst bez zgłaszania błędów. Gdy tekst nie jest liczbą całkowitą, otrzymujesz nieprawidłową wartość zamiast błędu:
print(int("abc")) # 0
print(int("12abc")) # 12
print(int("3.14")) # 3Sprawdź więc tekst przed jego konwersją. is_valid_int() zwraca true, gdy cały tekst jest liczbą całkowitą:
print("42".is_valid_int()) # prawda
print("-15".is_valid_int()) # prawda
print("3.14".is_valid_int()) # fałsz
print("abc".is_valid_int()) # fałsz
print("".is_valid_int()) # fałszis_valid_float() robi to samo w przypadku liczb dziesiętnych. Akceptuje również liczby całkowite, ponieważ 5 jest prawidłową wartością typu float:
print("3.14".is_valid_float()) # true
print("5".is_valid_float()) # true
print("five".is_valid_float()) # falseSpacje są liczone jako znaki: " 99 ".is_valid_int() ma wartość false. Najpierw wywołaj strip_edges(), jeśli dane wejściowe mogą mieć spacje na początku i na końcu.
Poprawna liczba nadal może być nieprawidłową wartością. Po konwersji sprawdź, czy mieści się w zakresie dozwolonym przez Twój program:
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)Wyzwanie
ŁatwyProgram odczytuje jeden wiersz danych wejściowych. Sprawdź go przed konwersją:
- Jeśli jest liczbą całkowitą, wypisz
You entered:, a następnie tę liczbę - W przeciwnym razie wypisz
Invalid input! Please enter a valid number.
Dla danych wejściowych 42 wynikiem jest:
You entered: 42Dla danych wejściowych abc i 3.14 wynikiem jest:
Invalid input! Please enter a valid number.Wypisz przekonwertowaną liczbę, a nie tekst: dla danych wejściowych 007 wynikiem jest You entered: 7.
Spróbuj swoich sił
extends Node
func _ready():
var user_input := OS.read_string_from_stdin()
# Sprawdź dane wejściowe, a następnie wypisz liczbę lub komunikat o błędzie
pass
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słowników12Podstawy obsługi błędów
Czym jest obsługa błędów?Walidacja danych wejściowychKlauzule ochronneZwracanie kodów błędówPodsumowanie — bezpieczne dzieleniePoćwicz samodzielnie: Kompilator GDScript online