Die repeat-until-Schleife
Teil des Abschnitts Fundamentals der Lua-Journey von Coddy — Lektion 72 von 90.
Lua bietet eine weitere Art von Schleife an, die repeat-until-Schleife genannt wird und eine einzigartige Eigenschaft besitzt, die sie von der while-Schleife unterscheidet, die Sie gerade gelernt haben. Der Hauptunterschied besteht darin, dass eine repeat-until-Schleife ihren Codeblock immer mindestens einmal ausführt, unabhängig von der Bedingung.
Die Syntax sieht so aus:
repeat
-- Code, der wiederholt werden soll
until conditionBeachten Sie, dass die Bedingung am Ende geprüft wird, nachdem der Code bereits einmal ausgeführt wurde. Die Schleife wird so lange wiederholt, bis 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 man eine 6 erhält:
local roll = 0
repeat
roll = math.random(1, 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 Bedingung 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
EinfachSie erstellen eine einfache Simulation zur Passwortvalidierung.
- Erstellen Sie eine Variable namens
passwordund setzen Sie diese auf einen leeren String (""). - Erstellen Sie eine weitere Variable namens
correctPasswordund setzen Sie diese auf"secure123". - Erstellen Sie eine Tabelle namens
attempts, die die folgenden Passwortversuche **in dieser Reihenfolge** enthält:"password""123456""admin""secure123"
- Erstellen Sie eine Variable namens
indexund setzen Sie diese auf1. Sie werden diese verwenden, um zu verfolgen, bei welchem Versuch Sie sich gerade befinden. - Verwenden Sie eine
repeat-until-Schleife, um:- Den aktuellen Versuch
passwordzuzuweisen, indem Sieattempts[index]verwenden — dies liest das Element an der Positionindexaus der Tabelle - Das aktuelle
passwordauszugeben (Print) - Den
indexum 1 zu erhöhen (z. B.index = index + 1), um zum nächsten Versuch zu springen
- Den aktuellen Versuch
- Die Schleife soll **erst dann** stoppen, wenn
passwordgleichcorrectPasswordist.
Jedes Mal, wenn die Schleife durchläuft, liest sie einen Versuch aus der Tabelle, gibt ihn aus und geht dann zum nächsten über. Die Schleife läuft so lange weiter, bis das richtige Passwort gefunden wurde.
Spickzettel
Die repeat-until-Schleife führt den Code mindestens einmal aus, bevor die Bedingung geprüft wird. Sie wird so lange wiederholt, bis die Bedingung true wird.
Syntax:
repeat
-- zu wiederholender Code
until conditionBeispiel - Würfeln, bis eine 6 kommt:
local roll = 0
repeat
roll = math.random(1, 6)
print("Rolled:", roll)
until roll == 6
print("Finally got a 6!")Wesentliche Unterschiede zu while-Schleifen:
- Wird immer mindestens einmal ausgeführt
- Die Bedingung wird am Ende geprüft
- Wird fortgesetzt, bis die Bedingung
trueist (Gegenteil vonwhile)
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. Den aktuellen Versuch der Variable `password` zuzuweisen
-- 2. Das versuchte Passwort auszugeben
-- 3. Zum nächsten Versuch übergehen
-- Stoppen, wenn das Passwort mit correctPassword übereinstimmtDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Fundamentals
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