lua和python_lua、python对比学习

一、基本数据类型:

lua:nil(空)、boolean(false和nil为假)、number(数值)、string(字符串)、table(表)、function(方法)、thread (线程)、userdata

python:None(空)、boolean(false和None为假)、number(数值)、string(字符串)、list(列表)、tuple(元表)、dictionary(字典)、def(函数)、thread (线程)

string操作:

lua:

str = “Hello” .. “World!”

print (str) # 输出完整字符串

print (string.sub(str,1,1)) # 输出字符串中的第一个字符

print (string.sub(str,3,5)) # 输出字符串中第三个至第五个之间的字符串

print (string.sub(str,3,-1)) # 输出从第三个字符开始的字符串

print (str .. "TEST") # 输出连接的字符串

print (string.find(str,"el")) # 输出第一个满足项起始下标

print (string.format("the value is:%d",4)) # 字符串格式化输出

输出结果

Hello World!

H

llo

llo World!

Hello World!TEST

2 3

the value is:4

python:

str = “Hello” + “World!”

print (str) # 输出完整字符串

print (str[0]) # 输出字符串中的第一个字符

print (str[2:5]) # 输出字符串中第三个至第六个之间的字符串

print (str[2:]) # 输出从第三个字符开始的字符串

print (str * 2) # 输出字符串两次

print (str + "TEST") # 输出连接的字符串

print ("He" in str) # 查询是否包含某字符

print ("the value is:%d" %(4)) #字符串格式化输出

输出结果

Hello World!

H

llo

llo World!

Hello World!Hello World!

Hello World!TEST

True

the value is:4

集合操作:

lua:  下标从1开始

array = {"Lua", "Python"}

for i= 0, #array do

print(array[i])

end

--for循环 ipairs对于集合下标要求必须从1开始递增并且中间值不可为nil

--pairs 输出结果是随机的即不是按照集合顺序输出,但没有ipairs的限制

for _, v in ipairs(array) do

print(v)

end

输出结果

"Lua"

"Python"

"Lua"

"Python"

python:  下标从0开始

array = ["Lua", "Python"]

for i in range(len(array)):

print(array[i])

i = 0

while (i

print(array[i])

i+=1

输出结果

"Lua"

"Python"

"Lua"

"Python"

二、lua注意事项:

1、lua函数第一层结构中,return语句之后不能再有别的代码。

function func()return "H"local data= "Hello"end

2、goto语句的跳转目的,不能写到逻辑判断语句块中。

function func()

local i= 1

goto continue

if i == 2then

::continue::

print("true")elseprint("false")

end

end

3、table之间的赋值为引用,即只是将地址进行引用,而不是申请新的内存空间。

function func()

local tab1= {1, 2, 3}

local tab2=tab1

table.remove(tab2)for i = 1, #tab1 doprint(tab1[i])

end

print("_______________")for i = 1, #tab1 doprint(tab2[i])

end

end

func()--[[1

2_______________1

2]]

4、在使用and或or时,尽可能加括号。

function func()

local i= 1print(i and10 or 5 + 1)

print((i and10 or 5) + 1)

i=nil

print(i and10 or 5 + 1)

print((i and10 or 5) + 1)

end

func()--[[10

11

6

6]]

5、for语句,下标不是连续的不要使用ipairs。ipairs遇见nil就返回。

function func()

local tab= {1, 2, 3, nil, a = 5, 6}for i = 1, #tab doprint(tab[i])

end

print()for k, v in ipairs(tab) doprint(k, v)

end

print()for k, v in pairs(tab) doprint(k, v)

end

end

func()--[[1

2

3nil6

1 1

2 2

3 3

1 1

2 2

3 3

5 6a5]]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值