1. 请写出require与dofile区别
答:require和dofile都是加载文件函数,都可以执行文件中的代码。
区别在于:
(1) require只会加载一次,加载文件时,可以不带目录,lua会自己搜索加载文件路径
(2) require加载文件时,会判断文件是否加载过,加载过就不会再加载
(3) dofile包装了loadfile,加载文件时,根据loadfile返回的函数运行一遍
(4) dofile都是每次加载
2. local value = {"yoyo", yoyo = "yoyou"};print(value[value[1]])结果是
答:结果是yoyo
解释:1,表示的是字符串”yoyo”,value[1]输出前面字符串中的yoyo,然后print(valueyoyo)输出后面字符串”yoyo”中的yoyo
3.print(false == nil) 结果是
输出结果:false
解释:lua中false和nil都是假,但是nil只和自己相等,所以输出结果是假的,为false
4.print((nil and false) == false) 结果是
输出结果:false
解释:nil和false都是假,nil and false表示:nil为假返回nil,否则返回false,可以得知,nil为假,输出结果为nil,然后nil == false,由第三题得知,结果为false
5.print(false or nil == true) 结果是
输出结果:false
解释:因为==的优先级比and和or高,所以nil==true为false,false or false为false
6.print(nil and false == true) 结果是
输出结果:nil
解释:因为==的优先级比and和or高,所以false ==true,为false,nil and false表示nil为假输出nil。
7.string.sub(“123456”,2,-2)结果是
结果:2345
解释:这是lua中截取字符串操作,表示截掉前一位和后一位
8.随机四个10以内数,请将这四个数依次从大到小排序
t={math.random(10),math.random(10),math.random(10),math.random(10)}
print(t[1],t[2],t[3],t[4])
temp=""
i=""
j=""
for i=1,4 do
print("i",i)
for j=1,4-1 do
print("j",j)
print("t[j]>t[j+1]",t[j]>t[j+1],t[j],t[j+1])
if t[j]<t[j+1] then
temp=t[j]
t[j]=t[j+1]
t[j+1]=temp
end
print(t[1],t[2],t[3],t[4])
j=j+1
end
i=i+1
end
print(t[1],t[2],t[3],t[4])
9.请将1-20的数字随机排序
local result = {} -- 接收排序后的table
local obj = {1,2,"3",4,5,6,"7","8",9,10,11,12,13,14,15,16,17,18,19,20} -- 需要进行排序的table
for i,v in ipairs(obj) do
print("--排序前--",i,v)
end
function shuffle(_table)
if type(_table)~="table" then
return
end
local _result = {}
local _index = 1
while #_table ~= 0 do
local ran = math.random(0,#_table)
if _table[ran] ~= nil then
_result[_index] = _table[ran]
table.remove(_table,ran)
_index = _index + 1
end
end
return _result
end
result = shuffle(obj)
for i,v in ipairs(result) do
print("--排序后--",i,v)
end
10.写一个方法,参数为一个String类型的字符串,打印该字符串每一位置的内容,空格则用引号引起来。
如:
字符串内容为qwe@%1 23
效果如下:
q
w
e
@
%
1
" "
2
3
代码:
--这个题是乱写的 当时没写出来
local sourcestr = "qwe@%1 23"
local first_sub = string.sub(sourcestr, 1, 1)
print(string.format("%s", first_sub))
local second_sub = string.sub(sourcestr, 2, 2)
print(string.format("%s", second_sub))
local third_sub = string.sub(sourcestr, 3,3)
print(string.format("%s", third_sub))
local fourth_sub = string.sub(sourcestr, 4,4)
print(string.format("%s", fourth_sub))
local fourth_sub = string.sub(sourcestr, 5,5)
print(string.format("%s", fourth_sub))
local fourth_sub = string.sub(sourcestr, 6,6)
print(string.format("%s", fourth_sub))
local fourth_sub = string.sub(sourcestr, 7,7)
print(string.format("%q", fourth_sub))
local fourth_sub = string.sub(sourcestr, 8,8)
print(string.format("%s", fourth_sub))
local fourth_sub = string.sub(sourcestr, 9,9)
print(string.format("%s", fourth_sub))