Lua教程

Lua极简入门(五)——循环

2019-10-20  本文已影响0人  李小磊_0867

在编写代码的过程中,总有许多迭代的代码需求,如计算从1连加到10的计算,如果数字足够大,使用表达式计算的方法,将无法胜任,我们不可能花费一下午去写一个累加表达式。此时可以借助Lua提供的迭代控制实现,迭代控制主要包含whileforrepeat三种。whileforend作为显示结尾符;repeatuntil作为结尾。

其中for 又分为 数值型for泛型for 两种。

while

java一致,while控制先检查条件,当条件满足时,将一直循环执行表达式,当条件不满足时,退出循环。比如计算高斯算法,从1累加到100,使用while实现如下:

sum = 0
n = 1
while n <= 100 do
    sum = sum + n
    n = n + 1
end

print(sum)
-->> 5050

repeat

repeat...until直观意思为重复...直到。那么该控制语句会不断重复repeat语句,直到until判断条件为true时,终止循环。until条件判断在repeat循环体之后,因此同while一致,循环体至少执行一次。

采用repeat...until控制语句实现高斯算法:

sum = 0
n = 1
repeat
    sum = sum + n
    n = n + 1
until n > 100

print(sum)
-->> 5050

如收集用户输入,直到用户输入exit时,终止输入:

input = ""
repeat
    input = io.read()
    print(input)
until input == "exit"
-->> hello  -- 输入
-->> hello  -- 输出
-->> lua    -- 输入
-->> lua    -- 输出
-->> exit   -- 输入
-->> exit   -- 输出,程序结束

for(number)

数值型for语法如下所示

for n = init, target, step do
    <执行语句>
end    

含义为:当变量n从初始值init,改变到target,每次的步长为step,对n进行递增,并且每次递增都执行循环体<执行语句>。其中步长step可以省略,将缺省时,默认步长为1

使用for计算高斯算法

sum = 0
for i = 1, 100, 1 do
    sum = sum + i
end
print(sum)
-->> 5050
sum = 0
for i = 1, 100 do
    sum = sum + i
end
print(sum)
-->> 5050
sum = 0
for i = 100, 1, -1 do
    sum = sum + i
end
print(sum)
-->> 5050

for语句中,控制变量i为局部变量,在for循环体外,将无法访问,如果要在循环之后,访问控制变量的值,需要设置其他变量用以保存该控制变量。

如找到第一个考试不及格的学生位置:

a = {99, 87, 69, 55}
position = -1
for i = 1, #a do
    if a[i] < 60 then
        position = i
        break
    end
end

print(position)
-->> 4

for(泛型)

泛型for循环,通过迭代器函数遍历所有值,内置的迭代器也是编码中常用的几种迭代器如下:

上一篇 下一篇

猜你喜欢

热点阅读