Menu
Coddy logo textTech

Pętla repeat-until

Część sekcji Podstawy ścieżki Lua w Coddy. Lekcja 72 z 90.

Lua oferuje inny typ pętli o nazwie repeat-until, który ma wyjątkową cechę odróżniającą go od poznanej przed chwilą pętli while. Główna różnica polega na tym, że pętla repeat-until zawsze wykonuje swój blok kodu co najmniej raz, niezależnie od warunku.

Składnia wygląda tak:

repeat
    -- kod do powtórzenia
until condition

Zwróć uwagę, że warunek jest sprawdzany na końcu, gdy kod został już wykonany jeden raz. Pętla powtarza się dopóki warunek nie stanie się true — czyli odwrotnie niż w przypadku pętli while, która wykonuje się, gdy warunek jest true.

Oto praktyczny przykład symulujący rzucanie kostką aż do wyrzucenia 6:

local roll = 0

repeat
    roll = math.random(1, 6) -- Losuje liczbę od 1 do 6
    print("Rolled:", roll)
until roll == 6

print("Finally got a 6!")

Ta pętla gwarantuje, że rzucisz kostką co najmniej raz, i wykonuje kolejne rzuty, aż warunek roll == 6 stanie się prawdziwy. To działanie „najpierw wykonaj, potem sprawdź” sprawia, że pętle repeat-until doskonale sprawdzają się w sytuacjach, w których coś musi wydarzyć się co najmniej raz, zanim zdecydujesz, czy kontynuować.

challenge icon

Wyzwanie

Łatwy

Tworzysz prostą symulację sprawdzania hasła.

  1. Utwórz zmienną o nazwie password i przypisz jej pusty ciąg znaków ("").
  2. Utwórz kolejną zmienną o nazwie correctPassword i przypisz jej "secure123".
  3. Utwórz tablicę o nazwie attempts, która zawiera następujące próby wpisania hasła w tej kolejności:
    • "password"
    • "123456"
    • "admin"
    • "secure123"
  4. Utwórz zmienną o nazwie index i przypisz jej wartość 1. Użyjesz jej do śledzenia, która próba jest aktualnie sprawdzana.
  5. Użyj pętli repeat-until, aby:
    • Przypisać bieżącą próbę do password, używając attempts[index]. Odczytuje to element z pozycji index w tablicy
    • Wypisać bieżące password
    • Zwiększyć index o 1 (np. index = index + 1), aby przejść do następnej próby
  6. Pętla powinna zatrzymać się dopiero wtedy, gdy password będzie równe correctPassword.

Za każdym razem, gdy pętla się wykonuje, odczytuje jedną próbę z tablicy, wypisuje ją, a następnie przechodzi do następnej. Pętla działa, dopóki nie zostanie znalezione prawidłowe hasło.

Spróbuj swoich sił

-- Zainicjalizuj zmienne
local password = ""
local correctPassword = "secure123"

-- Lista prób odgadnięcia hasła
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1

-- TODO:
-- Użyj pętli repeat-until, aby:
-- 1. Przypisać bieżącej próbie dokładny tekst z instrukcji
-- 2. Wypisać wypróbowane hasło
-- 3. Przejść do następnej próby
-- Zatrzymaj się, gdy password będzie równe correctPassword
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Lua online