Menu
CoddyTech

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")) # 3

Sprawdź 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łsz

is_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()) # false

Spacje 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)
challenge icon

Wyzwanie

Łatwy

Program 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: 42

Dla 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
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator GDScript online