lua基础入门学习笔记

学习参考资料:

视频学习:https://www.bilibili.com/video/BV1Bt411r7oq?p=2

资料文档:https://developers.mini1.cn/wiki/luawh.html#lua%E5%87%BD%E6%95%B0

资料文档2:https://www.runoob.com/lua/lua-tutorial.html

资料文档3:https://developers.mini1.cn/wiki/questions.html

文章目录

一、数据类型

在Iua语言中,基本数据类型按照其值的变化与否,又可以分为常量和变量两种。程序中,其值不发生改变的量称为常量,其值可变的量称为变量。例如:

示例 含义
a=10 –将整数常量10赋值给a这个变量
a=2.5 –将浮点数常量2.5赋值给a这个变量
a=“hello” –将字符 串常量“hello”赋值给a这个变量

这里a是一个变量,而10 , 2.5, "hello”都是常量。因为a可以随意进行赋值,而右边这些数据都是固定不可改变的。注意,在这里的“=”不是我们数学中等号的意思,而是赋值符号,a=10意思就是将10赋值给a变量。

“–” 这个符号叫做注释符,也就是在一行代码之中,如果遇到这个符号后面的所有字符数据都将不参与编译。

当然变量的名字,是我们自己根据习惯取的。比如说a=10。这里a可以改成c22或者fuck或者kill_yisheng这些都是可以的.但是要注意的是变量的命名包括 字母,数字,下划线,必须以字母或者下划线开头,区分大小写,A和a是不同的两个变量。 注意:以下表中为lua的关键字,不能被用作变量名.

end in false ture function not local
and break do else elseif if or
while report nil then return for until

如果通过数据类型来分,我们lua语言的数据类型可以分为:

数据类型 含义
数值型(number) 所有数字包括十六进制和科学计数法。
逻辑性(boolean) 相当于我们其他语言中的布尔型,只有真和假两个参数,在代码中以ture和false表示
字符串型(string) 在代码中以 “ ” 或者 ’ ’ 括起来的各类字符。
函数(function) 可以在代码中实现某种功能的语句块。
表(table) lua语言中的核心之一,类似于哈希表。
自定义型(userdata) 脚本用户只能使用,而不能对其进行定以。
线程(thread) 线程类型的值是一个可以用于异步计算的协同程序(轻量有限线程)
空类型(nil) 什么也没有,空的意思。

而我们的变量,根据其作用域,又可以分为全局变量和局部变量,在我们的lua中,局部变量是由关键字local定义的。

在这个函数num ()中。i就是一个局部变量,他被关键字local定义,只在函数num 
()中有效。而变量j没有用local定义,j就是一个全局变量,在整个程序中都有效。
不论在什么地方,只要没有被local定义的变量就是全局变量。

--------------------------------------------------------------------
function num()
local i=1
j= 2
end
--------------------------------------------------------------------
例题:
print("hello world")
kill ="hello !"
print(kill)
print("kill")

print ()是lua语言标
准库中提供的输出函数,作用就是
在屏幕上输出函数内的信息。

思考题:
写一个函数,要包含两个同名的变量,一个局部变量,一个全局变量。
并输出在屏幕上,来证明两个变量的作用域。

-------代码块----
I = 1
function Lei()
    local I =2
    print(I)
end
Lei()
print(I);

二、运算符与组块:

说到运算符,基本跟我们数学中所用到的运算符相同的,这里我们先来介绍算数运算符。

1.算数运算符。

加法 +
减法 -
乘法 *
除法 /
^
取模(取余) %
取负 -

2.比较运算符。

等于 ==
小于 <
大于 >
小于等于 <=
大于等于 >=
不等于 ~=

3.关系运算符。

和 与 and 当且仅当两个表达式都是true的时候,才返回true,只要有”个为false,就返回false
or 只要两个表达式有一个为true, or运算符就返回true。
not not就是取非运算,简单说,就是把布尔值取反。另外,在Lua中,所有不是false和nil的值都代表true。
连接 . . 符号“ . . ”,连接符号就是两个点,用于连接两个字符串。
and:
print(2>1 and 3>2)
返回true 
print(1 > 2and 1 <2)
返回false
print(26<27 and 12)
返回ture
print(2>1 and 2*2)
返回4
or:
print(1<2 or 2<3)
返回true 
print(1<2 or 3<2)
返回true 
print(1> 2or 3< 2)
返回false
print(2<3 or 13)
返回13
not:
print(not true)
返回false
print(not 4)
返回false
print(not "Hello")
返回false
print(not nil)
返true
.. :
pring("131".."156")
返回131156

and:

这里我们的true和false属于逻辑型。从这里我们可以很明显的看出,
and两边的表达式只有同时为真的时候,函数print的返回值才 为真。
只要and两边的表达式有一一个为假就会返回假。我们要注意的是Lua
的and逻辑运算与其他语言不同的是,如果第一个表达式为true,而
第二个表达式的运算结果是一个非布尔型的值,则输出这个值

or:
如果第一个表达式为false,而第二个表达式的运算结果是一个非布尔型的值,
则输出这个值。

三、函数

在lua中,函数都是function类型的对象,他可以被被比较,可以赋值给一个变量, 传递给函数,从函数中返回,或者作为table表中的键.

ps:关于函数,在其他流行编程语言中,函数只是
类的一部分,它不是对象。所以,你不能将一个函
数赋值给一个变量或者进行相等不相等的比较,你
更不可以在一个函数中去定义另一个函数。

1.函数的定义:

方法一:

function 函数名(参数)
函数内容
end
例如: function num(i)
i=i +1
end

方法二:

函数名= function(参数)
函数内容
end
例如: num = function(i)
i=i+1
end

2.函数初步使用:

2.1 定义无参函数

function shuchu()
print("hello world!")
end
shuchu()
-- 这里我们可以看到,首先我们定义了一个名字shuchu的无参数的函数,他的作用是输出
--一个字符串,而我们的函数内print ()则是我们lua语言中的输出函数,他的作用是输出
--括号内的数据。接着第四行我们就调用了shuchu这个函数。

2.2 定义有参函数

function cang(i)
    print(i)
end
do
local jj = "hello world!"
cang(jj)
end
--这里我们看到,我们定义了一个函数cang(),然后在do...end中我们定义了一个局部变量jj,
--将字符串"hello world!"赋值给jj,然后通过调用cang(),
--把j的值传递给cang()的参数,输出了jj保存的值。

2.3 定义可变长参函数:

function (...)      -- 三个点表示函数的参数个数不确定
function x(a, b...) -- 函数有两个固定的参数,其他参数不确定。
x(3)                --a=3, b=nil, arg={n=0}
x(3, 4)             --a=3, b=4, arg={n=0}
x(3, 4,5, 8)        -- a=3, b=4, arg={5, 8; n=2}

3. return 的使用:

定义一个函数,它可以接收任意多个参数供其使用。另
外,一个函数可以在它结束的时候返回任意多个值。
return关键字的作用就是在函数中返回某些值。

function 函数名 (参数)
    函数内容
    return 返回值
end

示例:
function hs(a,b)
x=a*a
y=b*b
return x, y 
end
i= 10
j= 11
x,y= hs(i, j)
print(x.."和"..y)

return 只能出现在语句块的结尾一句(也就是说:在end之前,或者
else前,或者until前)

练习:
定义一个函数,传入两个参数并相加、相减、相乘、相除,取模,然后返回他们的运算结果,并输出在屏幕上。
----------代码块-------
function shuxue(a,b)
    c1 = a + b
    c2 = a - b
    c3 = a * b
    c4 = a / b
    c5 = a % b
    return c1 ,c2,c3,c4,c5
end
i = 9
j = 5
p1,p2,p3,p4,p5 = shuxue(i,j)
print(p1)
print(p2)
print(p3)
print(p4)
print(p5)

补充:lua函数

四、判断语句

我们Iua语言中的判断语句,包括三个关键字if, else,elseif,并以end作为结束整个语句的标志。判断语句的格式主要有三种。

1、if语句

if 表达式 then
语句块
end

2、else语句

if 表达式 then
	语句块1
	else
	语句块2
end

3、elseif 语句

if  表达式1 then
	语句块1
elseif 表达式2 then
	语句块2
elseif 表达式3 then
	语句块3
	……………………
else
	语句块N
end

4、练习代码:

function you(i)
    if i == 7 then
        x = "😂"
        y = "sb"
        return x,y
    else
        z = "you are sb"
        return z
    end
end
print(you(7))
print(you(2))

-----------------------# 练习
function ceshi(num)
    if num == "cang" then
        print("你想cang老师了?")
    else 
        print("您输入了:"..num)
    end
end
a ="cang"
ceshi(a)
ceshi(123)
-------------------------------#练习二:
function xingqi(today)
    if today== 1 then
        print("今天星期一")
    elseif today == 2 then
        print("今天星期二")
    elseif today == 3 then
        print("今天星期三")
    elseif today == 4 then
        print("今天星期四")
    elseif today == 5 then
        print("今天星期五")
    elseif today == 6 or today== 7 then
        print("今天放假..")
    else
        print("地球没有星期八,赶快回火星吧!")
    end
    end
    xingqi(5)
    xingqi(7)
    xingqi(10)

    ---------练习---------
    课后思考题:
1、写一个脚本,判断一个数如果大于等于90小于等于100则输出"优秀",如果大于70小于90则输出"良好
,如果大于等于60小于等于70则输出"及格",小于60输出"不及格",如果大于100则输出分数有误。
2、参照示例,写一个脚本判断一个数是否为大于100的偶数。
3、参照示例,写一个脚本判断两个数是否都为小于或等于200的奇数

    function grade(i)
        if i>=90 and i<=100 then
            print("优秀")
        elseif i>=70 and i <90 then
            print("良好")
        elseif i >=60 and i<70 then
            print("及格")
        elseif i>=0 and i<60 then
            print("不及格")
        else
            print("你的成绩是寂寞吗?")
        end
    end
    grade(95)
    grade(75)
    grade(59)
    grade(-10)
    grade(101)

------- ------判断大于一百的奇数偶数-----------
    function judge(i)
        if i>=100 and i%2==0 then
            print(i.." :为大于一百的偶数")
        elseif i>=100 and i%2~=0  then
            print(i..":为大于一百的奇数")
        else
            print("输入不合法")
        end
    end
    judge(102)
    judge(201)

    --------#判断小于200的奇数偶数------
    function judge(i)
        if i<200 and i%2~=0 then
            return true
        else
            retu
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值