Die repeat-until-Schleife
Teil des Abschnitts Grundlagen der Lua-Journey von Coddy. Lektion 72 von 90.
Lua bietet einen weiteren Looptyp namens repeat-until-Loop, der eine einzigartige Eigenschaft besitzt, die ihn vom while-Loop unterscheidet, den du gerade kennengelernt hast. Der Hauptunterschied besteht darin, dass ein repeat-until-Loop seinen Codeblock immer mindestens einmal ausführt, unabhängig von der condition.
Die Syntax sieht wie folgt aus:
repeat
-- Code zum Wiederholen
until conditionBeachte, dass die Bedingung am Ende überprüft wird, nachdem der Code bereits einmal ausgeführt wurde. Die Schleife wird so lange wiederholt, until die Bedingung true wird – was das Gegenteil einer while-Schleife ist, die fortgesetzt wird, solange die Bedingung true ist.
Hier ist ein praktisches Beispiel, das das Würfeln simuliert, bis Sie eine 6 erhalten:
local roll = 0
repeat
roll = math.random(1, 6) -- Würfelt eine Zahl zwischen 1 und 6
print("Rolled:", roll)
until roll == 6
print("Finally got a 6!")Diese Schleife garantiert, dass Sie mindestens einmal würfeln, und sie würfelt so lange weiter, bis die Bedingungen roll == 6 wahr wird. Dieses "zuerst ausführen, später prüfen"-Verhalten macht repeat-until-Schleifen perfekt für Situationen, in denen etwas mindestens einmal passieren muss, bevor entschieden wird, ob fortgefahren werden soll.
Aufgabe
EinfachDu erstellst eine einfache Passwort-Validierungssimulation.
- Erstelle eine Variable namens
passwordund setze sie auf einen leeren String (""). - Erstelle eine weitere Variable namens
correctPasswordund setze sie auf"secure123". - Erstelle eine Tabelle namens
attempts, die die folgenden Passwortversuche in Reihenfolge enthält:"password""123456""admin""secure123"
- Erstelle eine Variable namens
indexund setze sie auf1. Du wirst diese verwenden, um zu verfolgen, bei welchem Versuch du dich gerade befindest. - Verwende eine
repeat-until-Schleife, um:- Den aktuellen Versuch mit
attempts[index]der Variablenpasswordzuzuweisen — dies liest das Element an Positionindexaus der Tabelle - Das aktuelle
passwordauszugeben (mittelsprint) indexum 1 zu erhöhen (z. B.index = index + 1), um zum nächsten Versuch zu wechseln
- Den aktuellen Versuch mit
- Die Schleife soll erst stoppen, wenn
passwordgleichcorrectPasswordist.
Jedes Mal, wenn die Schleife läuft, liest sie einen Versuch aus der Tabelle, gibt ihn aus und wechselt dann zum nächsten. Die Schleife läuft so lange weiter, bis das richtige Passwort gefunden wurde.
Probier es selbst
-- Variablen initialisieren
local password = ""
local correctPassword = "secure123"
-- Liste der Passwortversuche
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1
-- TODO:
-- Verwende eine repeat-until-Schleife, um:
-- 1. Weise den aktuellen Versuch dem genauen Text aus den Anweisungen zu
-- 2. Gib das versuchte Passwort aus
-- 3. Gehe zum nächsten Versuch
-- Stoppe, wenn password mit correctPassword übereinstimmtDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
4Operatoren 2: Vergleichs- & Logikoperatoren
GleichheitsoperatorenVergleichsoperatorenDer 'and'-OperatorDer 'or'-OperatorDer 'not'-OperatorShort-Circuit EvaluationTruthy- und Falsy-WerteZusammenfassung – Einfache Logik7Grundlagen der bedingten Logik
Die if-then-AnweisungDie if-then-else-AnweisungDie elseif-AnweisungZusammenfassung – Schatzkiste10Tabellen Teil 1: Listen-Stil
Was ist eine Tabelle?Eine Tabelle erstellenZugriff auf Elemente per IndexElemente per Index ändernDer Längenoperator '#'table.insert()table.remove()Zusammenfassung - Gruppenmitglieder verwalten13Projekt: Einfacher Zaubertrank-Laden
Projekt-SetupEinen Trank hinzufügen2Variablen und Datentypen
Was ist eine Variable?ZahlenStringsBooleansDer Wert 'nil'Die type()-FunktionNamenskonventionenZusammenfassung - Charakterprofil5Grundlegende Ausgabe
Literale ausgebenVariablen ausgebenMehrere Werte ausgebenStrings & Variablen kombinierenDie tostring() FunktionEingabeCastWiederholung - StatusberichtWiederholung - Bis 1208Grundlagen der String-Manipulation
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Wiederholung - Benutzernamen formatieren11Tabellen 2: Dictionary-Stil
Schlüssel-Wert-PaareDictionary-Stil Tabellen erstellenZugriff – KlammerschreibweiseZugriff mit PunktnotationPaare hinzufügen und ändernPaare mit nil entfernenWiederholung – Elementeigenschaften14Gültigkeitsbereich von Variablen
Globale VariablenLokale VariablenWarum lokale Variablen verwenden?Gültigkeitsbereich und BlöckeRückblick – Scope-Rätsel3Operatoren 1 Arithmetik & Verkettung
Arithmetische OperatorenModulo-OperatorPotenzierungsoperatorString-VerkettungOperatorrangfolgeRückblick - Einfache Berechnungen6Projekt: Charakter-Stats Anzeige
WillkommensnachrichtCharakter-Stats deklarieren9Grundlagen der Funktionen
Eine Funktion deklarierenEine Funktion aufrufenFunktionen mit ParameternFunktionen mit mehreren ParameternDie 'return'-AnweisungZusammenfassung - Flächenrechner12Schleifen-Grundlagen
Die while-SchleifeDie repeat-until-SchleifeDie numerische for-Schleifefor-Schleife mit SchrittweiteDie 'break'-AnweisungZusammenfassung - Countdown15Abschluss-Herausforderungen
Wiederholung – SpielerzugWiederholung – Einfache DatenbankWiederholung – Summe gerader ZahlenÜbe selbstständig: Online-Lua-Compiler