lua 教程跳转链接,练习题都来自这里
逻辑运算
检验大小(自测题)
题目:如果已知number变量n,那么如果需要判断n是否符合下面的条件:
3<n≤10
以下四行判断代码,正确的是?
(返回true即表示变量n符合要求)
n = 1--这个数可能是任意数字
print(n <= 10 and n > 3)
分支判断
判断三角形合法性(自测题)
你需要使用前面几章的知识,来完成下面的题目
已知三个number类型的变量a、b、c,分别代表三根木棒的长度
请判断,使用这三根木棒,是否可以组成一个三角形(两短边之和大于第三边)
如果可以组成,就打印出true
如果不可以,就打印false
--多改几个数值自行测试
a,b,c = 3,4,6
t = false
--补全代码
if (a+b>c) and (c>a and c>b) then
t = true
end
if (a+c>b) and (b>a and b>c) then
t = true
end
if (c+b>a) and (c<a and b<a) then
t = true
end
print(t)
函数
判断三角形合法性2(自测题)
你需要使用前面几章的知识,来完成下面的题目
已知三个number类型的变量a、b、c,分别代表三根木棒的长度
请判断,使用这三根木棒,是否可以组成一个三角形(两短边之和大于第三边)
如果可以组成,就打印出true
如果不可以,就打印false
function triangle(a,b,c)
t = false
--补全代码
if (a+b>c) and (c>a and c>b) then
t = true
end
if (a+c>b) and (b>a and b>c) then
t = true
end
if (c+b>a) and (c<a and b<a) then
t = true
end
return t
end
result = triangle(1,2,3)--传入值为三边长度,多改几个测试下
print(result)
返回多个值(自测题)
你需要使用前面几章的知识,来完成下面的题目
已知2个number类型的变量,分别代表一个长方体的长和宽
请计算这个长方形的周长和面积
请新建一个函数rectangle,并可以用如下形式调用:
function rectangle(a,b)
return a*b,(a+b)*2
end
area,len = rectangle(1,2)
--结果:
--面积area为2
--周长len为6
print(area,len)
table
Lua全局变量与table
你需要完成下面的任务:
已知有一个全局变量,名为@#$
请新建一个变量result
将@#$变量里的值赋值给result
_G["@#$"] = 123
result = _G["@#$"]--请补全代码
print("result值为",result)
table小测验3
请新建一个名为t的table,满足以下要求
t[10]可获得number类型数据100
t.num可获得number类型数据12
t.abc[3]可获得string类型数据abcd
t.a.b.c可获得number类型数据789
--请补全代码
t = {
[10] = 100,
['num'] = 12,
abc = {
[3] = 'abcd'
},
a = {
b = {
c = 789
}
}
}
print("t[10]可获得number类型数据100:",t[10],type(t[10]))
print("t.num可获得number类型数据12:",t.num,type(t.num))
print("t.abc[3]可获得string类型数据abcd:",t.abc[3],type(t.abc[3]))
print("t.a.b.c可获得number类型数据789:",t.a.b.c,type(t.a.b.c))
table.concat
请完成下面的任务:
已知table变量t,
将t中的结果全部连起来
间隔符使用 ,
并使用print打印出来
t = {"a","b","c","d"}
print("连接结果:")
--补全代码
print(table.concat(t, ","))
table删减
请完成下面的任务:
已知table变量t,
去除t中的第一个元素
然后这时,在t的第三个元素前,加上一个number变量,值为810
t = {1,2,3,4,5,6,7,8,9}
--补全代码
table.remove(t, 1)
table.insert(t, 3, 810)
print("第一个元素应为2:",t[1])
print("第三个元素应为810:",t[3])
循环
循环测试题1(自测题)
a = 10
--需要用print输出要求的结果
print("输出结果:")
for i=1,a*2,2 do
print(i)
end
循环测试题2(自测题)
a = 10
--需要用print输出要求的结果
print("输出结果:")
cc = ''
for i=1,a do --请补全代码
cc = cc .. '*'
print(cc)
end
循环测试题3(自测题)
a = 20
--需要用print输出要求的结果
print("输出结果:")
cc = ''
for i=1,a do --请补全代码
cc = cc .. tostring(i)
print(cc)
end
循环测试题4(自测题)
有一只猴子,第一天摘了若干个桃子 ,当即吃了一半,但还觉得不过瘾 ,就又多吃了一个。
第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。
以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。
到第n天早上再想吃的时候,就只剩下一个桃子了。
那么,已知变量a为最后一天的天数,请打印出第一天的桃子数。
如:a为5时,输出114
a = 5
--需要用print输出要求的结果
print("输出结果:")
peach = 1
-- 第 n 天,剩 1 个桃子
-- 第 n-1 天,剩 (1+n-1)*2 个桃子
for i=a-1,1,-1 do --请补全代码
peach = (peach + i)*2
end
print(peach)
详解string库
string.sub
请完成下面的任务:
已知字符串变量s,请分别打印出(每种一行):
s从第4个字符开始,到最后的值
s从第1个字符开始,到倒数第3个字符的值
s从倒数第5个字符开始,到倒数第2个字符的值
s = "1919810"
--补全代码
print(s:sub(4))
print(s:sub(1,-3))
print(s:sub(5,-2))
string.rep
打印一行数据,数据内容为810个114514
--补全代码
print(string.rep('114514',810))
string.len
新建一个变量s,使数据内容为810个114514
并打印出字符串s的长度
s = string.rep('114514',810)--补全代码
print(s:len())
大小写转换
已知一个变量s,打印出全是大写字母的s字符串
s = "asd8938KJjsidiajdl;(()k)"
print(s:upper()) --补全代码
string.format
已知一个变量n,为number类型整数
打印出n:连上n值的字符串
n = 810
print(string.format('n:%d', n)) --补全代码
string.char
已知一个字符串的每个字符在数组t中按顺序排列
请根据t的值,打印出字符串内容(一行数据)
注:这个字符串存储的不一定是可见的字符
t = {0x79,0x6F,0x75,0x20,0x61,0x72,0x65,0x20,0x72,0x69,0x67,0x68,0x74}
print("真正的字符串内容:")
--补全代码
s = ''
-- #t 取从第一个元素往后到最后一个不是 nil 的值的索引的下标值。
--[[有些陷阱需要注意,当我定义一个空 table 时,
我在非起始位置赋值一个数据,这时候通过 # 返回的值是 0
]]
for i=1,#t do
s = s .. string.char(t[i])
end
print( s )
string.byte
已知字符串s
请把s中代表的数据,全部相加,并打印出来
s = string.char(1,2,3,4,5,6,7,8,9)
print("s内数据的和是:")
--补全代码
print(s)
print(s:byte(1,-1))
num = 0
for i=1,#s do
num = num + s:byte(i)
end
print(num)
string.find
已知字符串s,里面有很多相同的字符串
请找出字符串s中,所有字符串awsl的位置
使用print打印结果,结果一行一个
如字符串12awslawslaw,输出3和7
s = "12awsaslwlaawsllslllswasllalssawwlawslaw"
print("两个awsl的位置分别是:")
--补全代码
Start,End = 0,0
-- print(#s)
-- print(string.find(s,'awsl'))
i=1
while i<#s do
Start, End = string.find(s,'awsl', i)
if End == nil then
break
end
print(Start)
i = End+1
end
string.gsub
已知字符串变量s,请分别打印出(每种一行):
把字符串s中,前5个a,替换为b
把字符串s中,前3个c,替换为xxx
把结果打印出来,一行数据
s = "asdicagydausckfugdaflgscdabgsdbahhacbshbsd"
print("s变换前的值:",s)
--补全代码
r = s:gsub("a","b",5)
-- print("s变换后的值:", r)
r = r:gsub("c","xxx",3)
print("s变换后的值:", r)