Python主要有for循环和while循环两种形式的循环结构,多个循环可以嵌套使用,并且还经常和选择结构嵌套使用。while循环一般用于循环次数难以提前确定的情况,当然也可以用于循环次数确定的情况;for循环一般用于循环次数可以提前确定的情况,尤其适用于枚举或遍历序列或迭代对象中元素的场合。对于带有else子句的循环结构,如果循环因为条件表达式不成立或序列遍历结束而自然结束时则执行else结构中的语句,如果循环是因为执行了break语句而导致循环提前结束则不会执行else中的语句。两种循环结构的完整语法形式分别为:
while 条件表达式:
循环体
[else:
else子句代码块]
和
for 取值 in 序列或迭代对象:
循环体
[else:
else子句代码块]
其中,方括内的else子句可以没有,也可以有。下面的代码使用循环结构遍历并输出列表中的所有元素。
a_list = ['a', 'b', 'mpilgrim', 'z', 'example']
for i, v in enumerate(a_list):
print('列表的第', i+1, '个元素是:', v)
下面的代码用来输出1~100之间能被7整除但不能同时被5整除的所有整数。
for i in range(1, 101):
if i%7==0 and i%5!=0:
print(i)
下面的代码使用嵌套的循环结构打印九九乘法表。
for i in range(1, 10):
for j in range(1, i+1):
print('{0}*{1}={2}'.format(i,j,i*j), end=' ')
print() #打印空行
下面的代码演示了带有else子句的循环结构,该代码用来计算1+2+3+…+99+100的结果。
s = 0
for i in range(1, 101): #不包括101
s += i
else:
print(s)
下面的代码使用while循环实现了同样的功能:
s = i = 0
while i <= 100:
s += i
i += 1
else:
print(s)
当然,上面的两段代码只是为了演示循环结构的用法,其中的else子句实际上并没有必要,循环结束后直接输出结果就可以了。另外,如果只是要计算1+2+3+...+99+100的值的话,直接用内置函数sum()和range()就可以了,例如:
>>> sum(range(1,101))
5050