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()) # falschis_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()) # falseLeerzeichen 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)Aufgabe
EinfachDas 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: 42Fü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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler