重复直到循环
本课属于 Coddy Lua 学习旅程的“基础知识”单元。第 72 课,共 90 课。
Lua 还提供了另一种循环,叫作 repeat-until 循环。它有一个独特的特点,让它区别于你刚学过的 while 循环。主要区别在于,无论条件如何,repeat-until 循环都会至少执行一次代码块。
语法如下:
repeat
-- 要重复执行的代码
until condition注意,条件会在最后检查,此时代码已经运行过一次。循环会不断重复,直到条件变为 true,这与 while 循环正好相反,后者会在条件为 true 时继续运行。
下面是一个实用示例,它会模拟不断掷骰子,直到掷出 6:
local roll = 0
repeat
roll = math.random(1, 6) -- 掷出一个 1 到 6 之间的数字
print("Rolled:", roll)
until roll == 6
print("Finally got a 6!")这个循环可以确保你至少掷一次骰子,并且会一直掷,直到条件 roll == 6 成立。这种“先执行,后检查”的行为让 repeat-until 循环非常适合这样的情况:你需要先至少执行一次操作,再决定是否继续。
挑战
简单你正在创建一个简单的密码验证模拟。
- 创建一个名为
password的变量,并将它设为空字符串("")。 - 再创建一个名为
correctPassword的变量,并将它设为"secure123"。 - 创建一个名为
attempts的表,其中按顺序包含以下密码尝试:"password""123456""admin""secure123"
- 创建一个名为
index的变量,并将它设为1。你将用它跟踪当前尝试到哪一项。 - 使用
repeat-until循环来完成以下操作:- 使用
attempts[index]将当前尝试赋给password。这会从表中读取位置index上的项目 - 打印当前的
password - 将
index加 1(例如index = index + 1),以继续尝试下一项
- 使用
- 只有当
password等于correctPassword时,循环才应停止。
每次循环运行时,都会从表中读取一次尝试,打印它,然后继续下一项。循环会持续进行,直到找到正确的密码。
亲手试试
-- 初始化变量
local password = ""
local correctPassword = "secure123"
-- 密码尝试列表
local attempts = {"password", "123456", "admin", "secure123"}
local index = 1
-- TODO:
-- 使用 repeat-until 循环:
-- 1. 将当前尝试赋值为说明中的准确文本
-- 2. 输出尝试的密码
-- 3. 进入下一次尝试
-- 当 password 与 correctPassword 匹配时停止这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Lua 在线编译器