本节书摘来自异步社区《Abaqus GUI程序开发指南(Python语言)》一书中的第2章,第2.8节,作者: 贾利勇 , 富琛阳子 , 贺高 , 周正光 更多章节内容可以访问云栖社区“异步社区”公众号查看。
循环语句指的是重复执行的代码块,由循环体和循环终止语句组成。重复执行的语句称为循环体,循环体执行的次数由循环终止语句来控制。在Python语言中,一般采用while循环和for循环两种方式。
**2.8.1 while循环**while循环语句是Python语言中最通用的迭代结构,只要while语句的顶端测试一直是真值,那么就会一直执行循环体内的代码块,每次循环之后,控制权会返回到开头部分,直到测试为假时,控制权才会传给while块之后的语句。
while循环的一般格式如下。
while <test>: <statements1> else: <statements2>其中,while和else的缩进位置必须一致。
需要注意的是,Python中没有其他语言所谓的“do until”的概念,不过程序员可以在循环主体内部添加一个测试语句和break/continue/pass语句来实现类似的功能。其格式如下。
while <test1>: <statements1> if <test2>:break if <test3>:continue if <test4>:pass else: <statements2>其中,break代表的是跳出最内层循环,执行之后会立刻离开循环;continue 代表的是跳过本次循环,直接跳至下一次循环;pass语句是无运算的占位语句,它通常用于为复合语句编写一个空的主体。
2.8.2 for循环for循环在Python中是一个通用的序列迭代器,可以遍历任何有序的序列对象中的元素。for语句可用于字符串、元组以及列表等多种数据类型。for循环的一般格式如下。
for <target> in <object>: <statements1> else: <statements2>当运行for循环时,Python会逐个将序列对象中的元素赋值给目标,然后为每个元素执行循环主体。for循环也支持一个选用的else块,如果循环结束时没有碰到break语句,就会执行else语句,前面介绍的break和continue语句同样可以用于for循环,例如:
for <target> in <object>: <statements1> if <test>:break if <test>:continue else: <statements2>【实例2.30】
(1)对列表数据遍历循环
p=mdb.models['Model-1'].parts['Part-1'] for i in [1,2,5,7,10]: highlight(p.elements[i])(2)对一定范围的数据遍历循环
p=mdb.models['Model-1'].parts['Part-1'] for i in range(0,10): print p.elements[i].label #打印零件'Part-1'中前10个单元的单元号上述实例中,range(x,y,z)函数对应的是获取某一范围的数值,其中x为起始索引号,y为截止索引号,z为间隔数值,如果z空缺,默认z=1,并且range(x,y,z)所能获取的最大值为y-1,而不是y。
除此之外,Python语言不仅可以对数值进行索引循环,还可以对某一类别对象内的各个元素进行遍历循环。
【实例2.31】
p = mdb.models[modelName].parts[partName] f = p.faces e=p.element n=p.nodes for face in f: print f # modelName为模型名称,partName为零件名称。 #f为零件的全部几何面,此循环表示对几何体的所有面元素进行循环。 for element in e: print element.label #循环输出模型中零件单元编号 for node in n: print node.coordinates #循环输出模型中零件节点坐标值。由上面的实例可以看出,在Python语言中,for循环的对象是丰富多样的,应用十分灵活。
相关资源:《Abaqus GUI程序开发指南(Python语言)》配套资