2.8 while和for循环
循环语句指的是重复执行的代码块,由循环体和循环终止语句组成。重复执行的语句称为循环体,循环体执行的次数由循环终止语句来控制。在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])
依次将模型'Model-1'中零件'Part-1'的指定单元高亮显示。
(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循环的对象是丰富多样的,应用十分灵活。