1、for循环语句
Python中除了while循环外,还有for循环。for循环用来迭代Python中序列(sequence)的元素,或其他可迭代对象(iterable)。在Python中,序列是一种有序的集合类型,如字符串和下一章将介绍的列表和元组。有一些通用的操作可以在每一种序列上使用,迭代就是其中之一。
for循环的语法格式如下:
for 迭代变量 in 可迭代对象:
循环体
使用for循环迭代打印字符串中的字符:
>>> for c in 'Python':
... print(c)
...
P
y
t
h
o
n
第一行代码先获取字符串'Python'的第一字符'P',再将其存储在变量c中,接着Python读取下一行代码。在第二行代码中,此时c的值为'P',print(c)将它打印出来。接下来这个循环会迭代(即重复)这个过程,c会依次被赋值为'y'、't'……直到这个字符串结束。
准确地说,Python中没有“字符”这个概念,一个单独的'P'也是字符串类型,上文称为字符是为了与字符串区分。
还可以将迭代出字符串和其他字符串拼接起来:
>>> vowel = 'AEIOU'
>>> for c in vowel:
... print(c, '是一个元音字母')
...
A 是一个元音字母
E 是一个元音字母
I 是一个元音字母
O 是一个元音字母
U 是一个元音字母
实际上,甚至可以不使用迭代出的字符串,而仅仅利用字符串的长度属性(如'Python'的长度是6),来重复做一些事。例如,打印6次“我爱Python”:
>>> for c in 'Python':
... print('我爱Python')
...
我爱Python
我爱Python
我爱Python
我爱Python
我爱Python
我爱Python
即使可以利用字符串的长度属性打印6次“我爱Python”,但却不提倡这种做法。迭代字符串,而不利用迭代出的字符,会造成计算机资源的浪费。
2、使用range()函数
由于重复地执行同一段代码是个很常见的任务,因此,Python内建了一个函数range()来使这个任务实现得更容易。使用range()函数来完成上面打印6次的任务:
>>> for i in range(6):
... print('我爱Python')
...
我爱Python
我爱Python
我爱Python
我爱Python
我爱Python
我爱Python
迭代range()函数和迭代字符串类似,每次都会获取range()函数产生的一个值,然后将它存储在变量i中。将上例的i打印出来:
>>> for i in range(6):
... print(i)
...
0
1
2
3
4
5
可能与预期的结果不同,打印出来的数字是0~5,而不是1~6。这是由于编程语言往往都是从0开始。
使用range()函数也可以完成打印1到100的任务,给range()函数传递两个参数,第一个参数为起始值,第二个参数为结束值:
>>> for i in range(1, 101):
... print(i)
...
1
2
3
4
……
98
99
100
由此可见,这种方式打印1到100,比使用while循环程序更加简洁。while循环往往需要初始化一个变量,还要在循环体中改变这个变量的值;而for循环往往只要指定次数或者指定初始值和结束值即可。
在上述程序中,range()函数的结束值不是100,而是101,而打印到100结束了。这是由于range()函数总是包含起始值而不包含结束值。
range()函数还可以在起始值和结束值的基础上,加入第三个参数——步长。步长就是指定获取数字的间隔。例如,打印1~10中的奇数和它们各自的平方:
>>> for i in range(1, 11, 2):
... print(i, '的平方是', i**2)
...
1 的平方是 1
3 的平方是 9
5 的平方是 25
7 的平方是 49
9 的平方是 81