学习Lua笔记(一)


1.变量
Lua中变量无需指定数据类型,根据赋值号右侧数据内容的类型,类别会自动识别
比如:
name = 100
(1)如果值字符串类型可以使用“”,也可以使用‘’
(2)lua语言中变量可以直接引用
(3)语句后面可以省分号
print(name) --100
print(type(name)) --string
(4)可以这样赋值,定义两个变量可以只赋一个值
sex,age = '男',18
sex,age = '男'
gender = 'man',18

2.逻辑运算符
lua中逻辑运算符包括:and or not

(1)nil(空)为false,其他任何值(包括0)都为真
直接上例子:
isOk = true
print(not isOk or 1) --1
print(isOk and msg) --nil
print(nil and 3) --nil
print(4 or 5) --4
print(4 and 5) --5
print(false or 5) --5
print(false and 5) --false
print(true and 5) --5
print(not 4) --false
(2)三目运算符
a=4
b= 5
print(a or b) --4
print(a and b) --5

isOk = true
isOk?4:5
isOk = false
print((isOk and a) or b) --

(3)链接运算符
print("wangxing".."真的好丑") --"wangxing真的好丑"
3.数组
table_age = {} --可以这样定义
table_age = {"hello",1,2,3,4,5} --可以存储不同的类型的元素
print(table_age[1]) --"hello"
(1)数组的长度不用固定
print(type(table_age)) --table
(2)访问数组元素.默认数组的下标是从1开始的,数组越界不会崩溃,会直接打印nil(特也是一种数据类型)
如果想要下标从0开始----------------给他制定一个值
table_num={1,3,5,7}
table_num[0] = 9
table_num["aa"] = 8
print(table_num[0]) --9
print(table_num["aa"]) --8
print(table_num[1]) --1

(3)任意类型的都可以存储,包括函数
如果表里面的数据包括普通的数值,又有键值对,使用表名[下标]取得值是表里面的普通数值,
会把键值对跳过去,表明[下标]只会读取普通数值,如果想取键值对,则表名[‘键的名字’]或表名.键名
score = {
[0] = 34,
o = 35,
name = "lanou",
69,
age = 20,
89,
nil
}
print(type(score)) --table
print(score[0]) --34
print(score['o']) --35
print(score[1]) --69
print(score.name) --lanou

name = 9
tab = {"Lanou",age = 20,60,name}
print(tab[0]) --nil
print(tab[1]) --20
print(tab.age) --20
print(tab[3]) --9

(4)table相当于数组
score = {89,90,78,60}
相当于一个字典
tab = {name = "LO",age = 20,["mmm"]='jjj',[111]=555}
print(tab['mmm']) --jjj
print(tab[111]) --555
(5)表里面的注意事项
--[[
1.所有元素以都好分开
2.所有索引值都需要用‘[’和‘]’扩起来,但是如果是字符串,就可以去掉引号和中括号,如果没有[]括起来,则认为是字符串索引
3.如果不写索引,则索引就会被认为默认为数字索引,并按顺序自动从1开始往后编
4.如果字符串当索引的话,不能直接使用引号,,可以直接使用在[]中添加引号形式
]]

stuent ={["name"] = "wangxing",30,28,30}
tab1 = {[tab]= "table"} --此时tab虽然从上面定义的是表,但是在这里只作为一个变量来用
print(tab1[tab]) --table

look = {[temp]= 1,11}--这种情况下会报错table index is nil

temp = 2
temp1= 2
tab = {[temp] = 1,11}
temp = 1
print(tab[temp]) --11
print(tab[temp1]) --1

虽然定义了temp = 2,但是后来改变了temp = 1,所以指向的另外的key

由上综述
1.对于字符串,在{}定义时,可以Key = value,也可以[“flag”]= nil,索引都是string类型,对于非nil类型变量(包括字符串),都可以使用[var]= value的方式
2.使用table时,对于字符串,可以通过.的方式进行访问,也可以通过[]方式访问,对于tab[a]和tab[b],如果a=b,tab[a]访问到tab[b]的内容

4.循环
(1)循环语句1
--[[
for i=起始值,终止值,增量(可忽略) do
循环体
end
]]
(2)输出2-10之间的所有偶数
for i=2,10,2 do
print(i)
end

(2)循环语句2
while循环体内可以更改循环条件,而for循环不可以
--[[
whie 条件表达式 do
循环语句
end
]]
(3)输出2-10之间的所有偶数
i = 2
while i<=10 do
print(i)
i=i+2
end
(4)循环语句3
--[[
repeat
循环语句
until 条件表达式
]]
(5)输出1-100之间的所有数的和
i= 1
sum = 0
repeat
sum = sum+i
i=i+1
until i>100
print(sum)

(6)如果老王有10000元,每天花一半,多少天可以花完如果剩余数量小于0.01,算花完
方法1:
b = 10000
c = 0
d = 0
repeat
c = b/2
b= b-c
d = d+1
until b<0.01
print(d)
方法2:
money = 10000
day = 0
while money>=0.01 do
money = money/2
day= day+1
print(money)
end
print(day)

(7)sum = 1+2+3+.....+N,求sum不超过10000的最大整数值和项值
zhi = 0
repeat
i = i+1
zhi = zhi+i
until zhi>10000
print(zhi-i)
print(i-1)

(8)求1-100内质数的和

sum = 0
for i=2,100 do
t = 0
for j=i,2,-1 do
if i%j == 0 then
t = t+1
end
end
if t==1 then
sum = sum+i
end
end
print(sum)
5.遍历数组
arrAges = {1,2,3,4,5}
表中插入一个元素
table.insert(arrAges,2,"nihao")
表中移除一个元素
table.remove(arrAges,4)
for i=1,#arrAges do
print(arrAges[i])
end
--通过#表名,可以获取table或者字符串的长度
name = "lanoukeji"
print(#name) --9

列数参数中指定table的数组部分从Start位置到end位置的所有元素
这些元素之间以指定的分隔符隔开
print(table.concat(arrAges,"*",1,3)) --1*2*3

使用Table来实现冒泡排序
SortArr = {20,19,56,9,67}
for i=1,#SortArr do
for j=1,#SortArr-i do
if SortArr[j]>SortArr[j+1] then
tem = 0;
tem = SortArr[j]
SortArr[j] = SortArr[j+1]
SortArr[j+1] = tem
end
end
end
for i=1,#SortArr do
print(SortArr[i])
end

6.if语法的三种格式
1.
if true then
print("苹果")
end
2.
if true then
print("苹果")
else
print("香蕉")

end
3.
if true then
print("苹果")
elseif(a==3) then
print("香蕉")
else
print("梨")
end






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值