Menu
CoddyTech

Eingaben validieren

Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 67 von 78.

Die Eingabe kommt als Text an, und int() wandelt beliebigen Text um, ohne sich zu beschweren. Wenn der Text keine ganze Zahl ist, erhältst du statt eines Fehlers einen falschen Wert:

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

Überprüfe also den Text, bevor du ihn umwandelst. is_valid_int() gibt true zurück, wenn der gesamte Text eine ganze Zahl ist:

print("42".is_valid_int()) # wahr
print("-15".is_valid_int()) # wahr
print("3.14".is_valid_int()) # falsch
print("abc".is_valid_int()) # falsch
print("".is_valid_int()) # falsch

is_valid_float() macht dasselbe für Dezimalzahlen. Es akzeptiert auch ganze Zahlen, da 5 ein gültiger float ist:

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

Leerzeichen zählen als Zeichen: " 99 ".is_valid_int() ist false. Rufe zuerst strip_edges() auf, wenn die Eingabe Leerzeichen am Anfang oder Ende enthalten kann.

Eine gültige Zahl kann trotzdem ein falscher Wert sein. Überprüfe nach der Umwandlung, ob sie im Bereich liegt, den dein Programm zulässt:

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

Aufgabe

Einfach

Das Programm liest eine Eingabezeile. Prüfe sie, bevor du sie umwandelst:

  • Wenn es eine ganze Zahl ist, gib You entered: gefolgt von der Zahl aus
  • Andernfalls gib Invalid input! Please enter a valid number. aus

Für die Eingabe 42 lautet die Ausgabe:

You entered: 42

Für die Eingaben abc und 3.14 lautet die Ausgabe:

Invalid input! Please enter a valid number.

Gib die umgewandelte Zahl aus, nicht den Text: Für die Eingabe 007 lautet die Ausgabe You entered: 7.

Probier es selbst

extends Node

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

	# Prüfe die Eingabe und gib dann die Zahl oder die Fehlermeldung aus
	pass
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablaufsteuerung

Übe selbstständig: Online-GDScript-Compiler