lua学习笔记---2.语句

244 阅读2分钟

vs/eclipse/xcode:继承开发环境(IDE) vsCode/notepad/sublime:文本编辑器

语句:条件语句/循环语句/转移语句

条件语句:if语句(没有switch语句)

-- 语法:
--if 条件1 then 
--    语句1
--elseif 条件2 then --elseif可以有多个
--    语句2
--else
--    语句3
--end
-- 创建随机种子
math.randomseed(os.time())
local num = math.random(1, 99)  -- 随机1-99的数
print(num)
-- 判断num是奇数还是偶数
if num % 2 == 1 then
    print("num:" .. num .. ",为奇数")
else
    print("num:" .. num .. ",为偶数")
end

local a = nil
--判断a是否为假
if not a then
    print("a为假")
end

local lv = 1
local exp = 100
--判断等级大于等于5且经验值大于等于500,升级(等级 * 10)
if lv >= 5 and exp >= 500 then
    exp = exp - lv * 10
    lv = lv + 1;
end

转移语句:break(跳出当前这一层循环)

循环语句:

数字型for

语法:
    表达式1:循环变量的初始值
    表达式2:循环变量的结束值(只计算1次)
    表达式3:步长(可省略,默认为1)
    for 循环变量 = 表达式1,达式2,表达式3 do
        循环体
    end

--打印1-10
for i = 1,10,1 do
    print(i)
end

local n = 10
for i = 1,n,1 do
    n = n - 1
    print(n)
end

-- 打印10 - 1
for i = 10, 1, -1 do
    print(i)
end

-- 打印数组:数组的下标从1开始
local tb= {11,22,33,44,55}
for i = 1,#tb,1 do
    print(tb[i])
end

-- 实现9 * 9 乘法表
for i = 1,9,1 do
    str = ""
    for j = 1,i,1 do
        str = str .. j .. "*" .. i .. "=" .. string.format("%-2d", i*j) .. " "
    end
    print(str)
end

while循环:

    while 条件 do
        循环体
    end  

repeat .. until (重复 .. 直到)

    repeat
        循环体
    until 条件  -- 当条件为真时,跳出循环

作业:

  • 抄笔记
  • 求一个整数的逆序数 1234 - 4321
  • 求1 - 1/2 + 2/3 - 3/4 + ...前n项的结果
  • 求斐波那契数列的第n项
  • 实现冒泡排序和插入排序

求一个整数的逆序数 1234 - 4321

function getReverseNum(n)
    ans = 0
    while n > 0 do
        ans = ans * 10 + n % 10
        n = math.floor(n / 10)
    end
    return ans
end

求1 - 1/2 + 2/3 - 3/4 + ...前n项的结果

function getFunc(n)
    ans = 0
    f1,f2 = 1,1
    flag = 1
    while n > 0 do
        ans = ans + (f1 / f2 * flag)
        f1 = f2
        f2 = f2 + 1
        flag = flag * -1
        n = n - 1
    end
    return ans
end

求斐波那契数列的第n项

function Fibonacci(n)
    if n == 1 or n == 2 then
        return 1
    end
    return Fibonacci(n-1) + Fibonacci(n-2)
end

冒泡排序和插入排序

local arr = {1, 6, 3, 9, 2, 5}
function bubbleSort(arr)
    for i = 1,#arr do 
        for j = 1,#arr - i do
            if arr[j] > arr[j+1] then
                arr[j],arr[j+1] = arr[j+1],arr[j]
            end
        end
    end
end

function insertSort(arr)
    for i = 2,#arr do
        temp = arr[i]
        j = i
        while (j > 1) and (arr[j - 1] > temp) do
            arr[j] = arr[j - 1]
            j = j - 1;
        end
        arr[j] = temp
    end
end
insertSort(arr)
s = ""
for i = 1, #arr do
    s = s .. arr[i] .. " "
end
print(s)