Was ist eine Menge?
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 31 von 78.
Eine Menge ist eine Sammlung eindeutiger Werte: Jeder Wert kommt entweder genau einmal oder gar nicht darin vor. Die Frage, die du einer Menge stellst, lautet: „Ist dieser Wert ein Element?“. Die Abzeichen, die ein Spieler verdient hat, die bereits besuchten Level und die bereits vergebenen Benutzernamen sind Mengen.
Ein Array behält jede Kopie, die du hinzufügst:
var pickups := ["sword", "shield", "sword"]
print(pickups.size()) # 3GDScript hat keinen Typ Set. Stattdessen verwendest du ein Dictionary: Seine Schlüssel sind eindeutig, daher sind die Schlüssel die Elemente der Menge. Die Werte werden nicht verwendet, und üblicherweise ist jeder Wert true:
var items := {"sword": true, "shield": true}
items["sword"] = true # bereits enthalten: nichts ändert sich
print(items.size()) # 2
print(items.keys()) # ["sword", "shield"]keys() gibt die Elemente als Array in der Reihenfolge zurück, in der sie hinzugefügt wurden. Eine leere Menge ist ein leeres Wörterbuch, {}.
Ein Mengenliteral listet jedes Element genau einmal auf. Wird derselbe Schlüssel zweimal innerhalb von {} geschrieben, ist das ein Fehler, der das Programm anhält, bevor es ausgeführt wird.
Um den Typ des Sets explizit anzugeben, verwende ein typisiertes Dictionary: var badges: Dictionary[String, bool] = {}
Aufgabe
EinfachEin Spieler hat vier Matches gespielt und in jedem ein Abzeichen erhalten. Einige Abzeichen wiederholen sich. Das Programm liest vier Eingabezeilen, pro Zeile einen Abzeichennamen.
Füge jedes Abzeichen zur Menge badges hinzu und gib dann die Anzahl der verschiedenen Abzeichen und die Elemente der Menge als Array aus. Für die Abzeichen Sniper, Medic, Sniper und Builder lautet die Ausgabe:
Unique badges: 3
["Sniper", "Medic", "Builder"]Probier es selbst
extends Node
func _ready():
var badges := {}
for i in range(4):
var badge := OS.read_string_from_stdin()
# Füge das Abzeichen zur Menge hinzu
pass
# Gib die Anzahl der Abzeichen und die Abzeichen aus
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