-- Lua循环--[[很多情况下我们需要做一些有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。循环语句是由循环体及循环的终止条件两部分组成的。start  -------->   条件  ---------> finish (条件为false)                        --------->  执行条件代码(条件为true) ------> 条件(直到条件为false)Lua 语言提供了以下几种循环处理方式:循环类型               描述while循环             在条件为 true 时,让程序重复地执行某些语句。执行语句前会先检查条件是否为 true。for循环               重复执行指定语句,重复次数可在 for 语句中控制。repeat...until        重复执行循环,直到 指定的条件为真时为止循环嵌套                可以在循环内嵌套一个或多个循环语句(while do ... end;for ... do ... end;repeat ... until;)--]]print("\n\nwhile循环\n")-- Lua 编程语言中 while 循环语句在判断条件为 true 时会重复执行循环体语句。--[[语法Lua 编程语言中 while 循环语法:while(condition)do   statementsendstatements(循环体语句) 可以是一条或多条语句,condition(条件) 可以是任意表达式,在 condition(条件) 为 true 时执行循环体语句。start ------>  condition  -------->  code block(condition is true) -------> condition(true/false)                          -------->  finish(condition is false)在以上流程图中我们可以看出在condition(条件)为 false 时会跳过当前循环并开始脚本执行紧接着的语句。]]-- 来看例子a = 10while(a < 20)    do         print("a的值为:",a)        a = a + 1end--[[ 输出结果为:a的值为:   10a的值为:   11a的值为:   12a的值为:   13a的值为:   14a的值为:   15a的值为:   16a的值为:   17a的值为:   18a的值为:   19 ]]times = 10while(times < 15)    do        print("你好呀!世界")        times = times + 1endprint("\n\nLua for 循环\n")function  f(num)    return num * 2end--[[Lua 编程语言中 for 循环语句可以重复执行指定语句,重复次数可在 for 语句中控制。Lua 编程语言中 for语句有两大类::数值for循环泛型for循环数值for循环Lua 编程语言中数值 for 循环语法格式:for var=exp1,exp2,exp3 do        end  var 从 exp1 变化到 exp2,每次变化以 exp3 为步长递增 var,并执行一次 "执行体"。exp3 是可选的,如果不指定,默认为1。]]-- 来,看看例子for i=1, f(2) do    print(i)endfor i = 5, 1, -1 do    print(i)end-- for的三个表达式在循环开始前一次性求值,以后不再进行求值。比如上面的f(x)只会在循环开始前执行一次,其结果用在后面的循环中。function f_test(n)    print("function f_test")    return n + 1endfor i=1, f_test(3) do    print(i)--     function f_test--      1--      2--      3--      4endprint("\n泛型for 循环\n")--[[泛型for循环通过一个迭代器函数来遍历所有值,类似java中的foreach语句Lua编程语言中泛型for循环语法格式直接上例子]]a = {"hello","world","I","Like","You"}for i,v in ipairs(a) do    print(i,v)-- 1   hello-- 2   world-- 3   I-- 4   Like-- 5   Youendprint("\n")--[[额外补充,  ipairs 和 pairs区别1:ipairs遍历时,遇到nil会停止,而pairs会输出nil值然后继续下去区别2:ipairs并不会输出table中存储的键值对,会跳过键值对,然后顺序输出table中的值,遇到nil则会停止而pairs会输出table中国呢的键和键值对,先顺序输出值,再乱序(键的哈希值)输出键值对原因:table在存储值的时候是按照顺序的,但是在存储键值对的时候,是按照键的哈希值存储的,并不会按照字母顺序或是数字顺序存储]]local taba = {"Hello","world",aaa = 1,bbb =2,ccc=3,ddd = 100,"Good",nil,"Love","You"}for i ,v in ipairs(taba) do    print(i,v)-- 1   Hello-- 2   world-- 3   Goodendprint("\nnext\n")for k,v in pairs(taba) do    print(k,v)-- 1   Hello-- 2   world-- 3   Good-- 5   Love-- 6   You-- ddd 100-- bbb 2-- aaa 1-- ccc 3end--[[    对于taba 来说,如果执行print(taba[3]),输出的结果也会是Good,也就是说table并不会给键值对一个索引值    也就是说,ipairs只是按照索引顺序,打印出了table中有索引的数据,没有索引的值不管    而pairs是先按照索引值打印,打印完成后再按照键值对的键的哈希值打印他的值]]print(taba[3]) -- Good-- 所以嘞,要怎么顺序输出一个table里面的键值对?local  tab = {    key1 = 1,    key2 = 2,    key3 = 3,    key4 = 4,    key5 = 5,    key6 = 6,    key7 = 7 ,    key8 = 8,}function getLen(tab)    local len = 0    for _,v in pairs(tab) do        len = len + 1    end    return lenendlocal keyfor i=1,getLen(tab) do    key = "key" .. i    print(key,tab[key])-- key1    1-- key2    2-- key3    3-- key4    4-- key5    5-- key6    6-- key7    7-- key8    8endprint("\n\n")-- i 是数组索引值,v是对应索引的数组元素值,ipairs是Lua提供的一个迭代器函数,用来迭代数组-- 循环数组 daysdays = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}for i,v in ipairs(days) do    print(v)-- 星期一-- 星期二-- 星期三-- 星期四-- 星期五-- 星期六-- 星期日endprint("\n\nLua repeat ... until 循环\n")--[[    Lua编程语言中repeat ... until 循环语句不同于 for 和 while 循环,for 和 while 循环的条件语句在当前循环      执行开始时判断,而 repeat ... until 循环的条件语句在当前循环结束后判断    语法格式:    repeat        statements    until(condition)    我们注意到循环条件判断语句(condition)在循环体末尾部分,所以在条件进行判断前循环体都会执行一次。    如果条件判断语句(condition)为 false,循环会重新开始执行,直到条件判断语句(condition)为 true 才会停止执行。    Lua repeat...until 循环流程图如下:    start  --------> code block ----------> condition ----------> code block(codition is false)                                                       ----------> finish(condition is true)]]vara = 10repeat    print("a的值为:",vara)    vara = vara + 3-- a的值为:   10-- a的值为:   13-- a的值为:   16-- a的值为:   19until(vara > 20)print("\n\n")print("Lua 循环嵌套\n")-- Lua编程语言中允许循环中嵌入循环。--[[ Lua for 循环嵌套语句语法格式    for init,max/min value, increment    do        for init,max/min value, increment        do            statements        end        statements    end]]for i =1, 4 do    for j=1, i, 2 do        print("i=",i,"j=",j)    endend-- i=  1   j=  1-- i=  2   j=  1-- i=  3   j=  1-- i=  3   j=  3-- i=  4   j=  1-- i=  4   j=  3--[[ Lua while循环欠条语法格式    while(condition)    do        while(condition)        do            statements        end        statements    end]]wi =1while(wi <= 3)do    iwj = 1    while(iwj <= wi)    do        print("wi=",wi,"iwj=",iwj)        iwj = iwj + 1    end    wi = wi + 1end-- wi= 1   iwj=    1-- wi= 2   iwj=    1-- wi= 2   iwj=    2-- wi= 3   iwj=    1-- wi= 3   iwj=    2-- wi= 3   iwj=    3--[[ Lua 中 repeat ... until 循环嵌套语法格式    repeat        statements        repeat            statements        until(condition)    until(condition)    ]]rui = 1repeat    iruj = 1    repeat        print("rui=",rui,"iruj=",iruj)        iruj = iruj + 1    until(iruj > rui)    rui = rui + 1until(rui > 3)-- rui=    1   iruj=   1-- rui=    2   iruj=   1-- rui=    2   iruj=   2-- rui=    3   iruj=   1-- rui=    3   iruj=   2-- rui=    3   iruj=   3-- 除了以上同类型的循环嵌套外,还可以使用不同循环类型来嵌套 如for循环中嵌套while循环mix = 3for i=1,mix do    tmp = 1    while(tmp <= i) do        deep_in = 1        repeat            print("deep_in=",deep_in,"tmp=",tmp,"i=",i)            deep_in = deep_in + 1        until(deep_in > tmp)        tmp = tmp + 1    endend-- deep_in=    1   tmp=    1   i=  1-- deep_in=    1   tmp=    1   i=  2-- deep_in=    1   tmp=    2   i=  2-- deep_in=    2   tmp=    2   i=  2-- deep_in=    1   tmp=    1   i=  3-- deep_in=    1   tmp=    2   i=  3-- deep_in=    2   tmp=    2   i=  3-- deep_in=    1   tmp=    3   i=  3-- deep_in=    2   tmp=    3   i=  3-- deep_in=    3   tmp=    3   i=  3-- 使用for循环打印乘法表raw = 9col = 9output = ""for i=1,raw do    for j=1,i do        output =  output .. j .. "*" .. i .. "=" .. j*i .. "\t"    end     print(output)    output = ""end-- 1*1=1   -- 1*2=2   2*2=4   -- 1*3=3   2*3=6   3*3=9   -- 1*4=4   2*4=8   3*4=12  4*4=16  -- 1*5=5   2*5=10  3*5=15  4*5=20  5*5=25  -- 1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  -- 1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  -- 1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  -- 1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81  print("\n\n\n")--[[    循环控制语句    循环控制语句用于控制程序的流程,以实现程序的各种结构方式    Lua支持一下循环控制语句    控制语句           描述    break语句         退出当前循环或语句,并开始脚本执行紧接着的语句。    goto语句          将程序的控制点转移到一个标签处。--]]--[[ break语句Lua 编程语言 break 语句插入在循环体中,用于退出当前循环或语句,并开始脚本执行紧接着的语句。如果你使用循环嵌套,break语句将停止最内层循环的执行,并开始执行的外层的循环语句。语法Lua 编程语言中 break 语句语法格式:start -------> conditional code ------> condition  ---------> finish (condition is failse)                                                   ---------> coditional code (if condition is true)                                ------>(break) finish以下实例执行while循环,在变量a小于20时输出a的值,并且在a大于15时终止执行操作]]a = 12while (a < 20) do    print("a的值为:",a)    a = a + 1    if (a > 15) then        print("要break了")        break    endend-- a的值为:   12-- a的值为:   13-- a的值为:   14-- a的值为:   15-- 要break了print("\n\n")-- Lua语言的 goto 语句--[[    Lua 语言中的 goto 语句允许将控制流程无条件地转到被标记的语句处。    语法    语法格式如下所示:    goto Label    Label 的格式为:    :: Label ::]]-- 在判断语句中使用gotolocal a = 1::label:: print("=----- gogo label ----=")a = a + 1if a < 3 then    goto labelend-- =----- gogo label ----=-- =----- gogo label ----=-- 在label中设置多个语句i = 0::s1:: do    print("in ::s1:: i=",i)    i = i + 1endif i > 3 then    print("the follow run is os.exit")    -- os.exit()    goto do_breakendgoto s1::do_break::-- in ::s1:: i=    0-- in ::s1:: i=    1-- in ::s1:: i=    2-- in ::s1:: i=    3-- the follow run is os.exit-- 有了goto可以实现contiue功能for i=1,5 do    if i <=2 then        print(i,"yes continue")        goto continue    end    print(i,"no continue")    ::continue::    print([[I'm end]])end-- 1   yes continue-- I'm end-- 2   yes continue-- I'm end-- 3   no continue-- I'm end-- 4   no continue-- I'm end-- 5   no continue-- I'm end--[[    无限循环    在循环体中如果条件永远为true,循环语句就会永远执行下去,    以while循环为例子--]]-- while(true)-- do--     print("这里是死循环")-- end

扫码关注一下呗~

语言for循环联程_Lua循环相关推荐

  1. C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  2. R语言笔记7:认识循环函数、lapply和sapply

    R语言基础系列: 你知道R中的赋值符号箭头(<-)和等号(=)的区别吗? 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 ...

  3. 谭浩强c语言第六章兔子数列,谭浩强 C语言 第6章_循环.ppt

    谭浩强 C语言 第6章_循环 第六章 本章要点 循环的基本概念 不同形式的循环控制 多重循环问题 主要内容 6.1 概述 6.2 goto语句以及用goto语句构成循环 6.3 用while语句实现循 ...

  4. C语言中不同类型的循环(Different types of loops in C)

    C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) {//gets executed after condition ...

  5. 国二C语言文字选择程序选择,全国计算机等级考试二级C语言题型总结(二)——选择循环结构程序设计部分.doc...

    全国计算机等级考试二级C语言题型总结(二)--选择循环结构程序设计部分 C语言第二部分上机题型总结 选择结构部分: if结构题型总结 (案例1) 企业发放的奖金根据利润提成.利润(I)低于或等于10万 ...

  6. 循环数组函数c语言,C语言练习题2(分支结构循环结构数组函数2009-2012二级真题)..doc...

    C语言练习题2(分支结构循环结构数组函数2009-2012二级真题). C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(" ...

  7. C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  8. java for循环_愉快地学Java语言:第五章 循环

    导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...

  9. c语言数组方式实现静态循环队列

    1 循环队列原理图 2 结构体设计 3 运行结果图 4 完整源代码 #include<stdio.h> #include<malloc.h> /*这是一个c语言用数组方式实现循 ...

最新文章

  1. error C2065: “M_PI”: 未声明的标识符
  2. CA certificate
  3. CMPB 2021|U-Net:又一魔改U-Net应用于腹部肝脏分割任务!
  4. 矿Spring入门Demo
  5. 标记语言 编程语言 脚本语言分别有哪些? 区别是什么?
  6. JAVA 中的数据结构
  7. closehandle()函数
  8. codevs1085数字游戏(环形DP+划分DP )
  9. python email 附件_使用python调用email模块实现附件发送
  10. 使命召唤ol显示服务器超时,使命召唤ol网络延迟高的完整解决方案
  11. 当红“元宇宙”需要冷思考,听听科幻作家、清华教授和阿里专家怎么说
  12. springboot官方文档PDF下载指北
  13. tt服务器显示start dcs,TT服务器使用手册
  14. 【XLSX】Excel表格的导入和导出
  15. Chang-Xiao Li Machine Learning 2019 Task10
  16. cocos2d-js的(layer)生命周期,ctor,onEnter,onExit的使用
  17. 安装多个版本号jdk后java -version不改变的问题解决
  18. 【R语言 数据挖掘】R语言如何做关联规则?
  19. AI初探——百度、阿里、腾讯开放平台OCR功能解析
  20. 不同页面 共享cookie及localStorage

热门文章

  1. Spring5的核心容器
  2. 选择结构_单if语句
  3. RocketMQ错误消息重试策略之Consumer的重试机制(Exception情况)
  4. [坑] IDEA Unable to import maven project 解决办法
  5. 日期和时间 - Java处理日期和时间
  6. synchronized细节问题
  7. python中怎么表示整数的点称为整点_智慧职教云课堂APPPython程序设计基础答案公众号...
  8. Spring boot mongodb
  9. Tomcat 下构建 Web 应用时,常犯的一些通用错误
  10. 用中文传话游戏理解 RNN