语言for循环联程_Lua循环
-- 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循环相关推荐
- C语言循环选择还有,C语言第五讲,语句 顺序循环选择.(示例代码)
C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...
- R语言笔记7:认识循环函数、lapply和sapply
R语言基础系列: 你知道R中的赋值符号箭头(<-)和等号(=)的区别吗? 1数据类型(向量.数组.矩阵. 列表和数据框) 2读写数据所需的主要函数.与外部环境交互 3数据筛选--提取对象的子集 ...
- 谭浩强c语言第六章兔子数列,谭浩强 C语言 第6章_循环.ppt
谭浩强 C语言 第6章_循环 第六章 本章要点 循环的基本概念 不同形式的循环控制 多重循环问题 主要内容 6.1 概述 6.2 goto语句以及用goto语句构成循环 6.3 用while语句实现循 ...
- C语言中不同类型的循环(Different types of loops in C)
C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) {//gets executed after condition ...
- 国二C语言文字选择程序选择,全国计算机等级考试二级C语言题型总结(二)——选择循环结构程序设计部分.doc...
全国计算机等级考试二级C语言题型总结(二)--选择循环结构程序设计部分 C语言第二部分上机题型总结 选择结构部分: if结构题型总结 (案例1) 企业发放的奖金根据利润提成.利润(I)低于或等于10万 ...
- 循环数组函数c语言,C语言练习题2(分支结构循环结构数组函数2009-2012二级真题)..doc...
C语言练习题2(分支结构循环结构数组函数2009-2012二级真题). C语言练习题(二) 一 选择题 1.有以下程序 #include void main() { int a: canf(" ...
- C语言第五讲,语句 顺序循环选择.
C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...
- java for循环_愉快地学Java语言:第五章 循环
导读 本文适合Java入门,不太适合Java中高级软件工程师.本文以<Java程序设计基础篇>第10版为蓝本,采用不断提出问题,然后解答问题的方式来讲述.本篇文章只是这个系列中的一篇,如果 ...
- c语言数组方式实现静态循环队列
1 循环队列原理图 2 结构体设计 3 运行结果图 4 完整源代码 #include<stdio.h> #include<malloc.h> /*这是一个c语言用数组方式实现循 ...
最新文章
- error C2065: “M_PI”: 未声明的标识符
- CA certificate
- CMPB 2021|U-Net:又一魔改U-Net应用于腹部肝脏分割任务!
- 矿Spring入门Demo
- 标记语言 编程语言 脚本语言分别有哪些? 区别是什么?
- JAVA 中的数据结构
- closehandle()函数
- codevs1085数字游戏(环形DP+划分DP )
- python email 附件_使用python调用email模块实现附件发送
- 使命召唤ol显示服务器超时,使命召唤ol网络延迟高的完整解决方案
- 当红“元宇宙”需要冷思考,听听科幻作家、清华教授和阿里专家怎么说
- springboot官方文档PDF下载指北
- tt服务器显示start dcs,TT服务器使用手册
- 【XLSX】Excel表格的导入和导出
- Chang-Xiao Li Machine Learning 2019 Task10
- cocos2d-js的(layer)生命周期,ctor,onEnter,onExit的使用
- 安装多个版本号jdk后java -version不改变的问题解决
- 【R语言 数据挖掘】R语言如何做关联规则?
- AI初探——百度、阿里、腾讯开放平台OCR功能解析
- 不同页面 共享cookie及localStorage
热门文章
- Spring5的核心容器
- 选择结构_单if语句
- RocketMQ错误消息重试策略之Consumer的重试机制(Exception情况)
- [坑] IDEA Unable to import maven project 解决办法
- 日期和时间 - Java处理日期和时间
- synchronized细节问题
- python中怎么表示整数的点称为整点_智慧职教云课堂APPPython程序设计基础答案公众号...
- Spring boot mongodb
- Tomcat 下构建 Web 应用时,常犯的一些通用错误
- 用中文传话游戏理解 RNN