lua测试题

 

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))

这个算是lua小测试,接触lua一周后写的,代码写的不是很好,如有错误,请指出,我会改!谢谢,感谢观看!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值