
1.9.1 for循环结构
for循环是计次循环,通常用于遍历序列或枚举。for循环结构的格式如下:

其中,for是for循环结构的关键字;循环变量是一般意义的变量,循环变量名的取名方式和一般变量的取名方式相同;sequence是一组排列的数据序列,数据可以是数值数据、字符串、列表、元组、可迭代序列等,例如数值序列range(2,12,2)、字符串'Iloveyou'、列表[1,2,3,4,7,8,10,'hello']、元组(2,3,'aa','bb');in和冒号“:”是格式符,in的作用是让循环变量依次取sequence中的数据,for循环结构的循环次数是sequence中数据的个数,冒号“:”说明后续的语句是循环语句。循环语句需要缩进,循环语句由一行或多行代码构成,循环语句必须有相同的缩进量。for循环的sequence数据常由函数range()产生,关于range()函数的说明参见2.5节的内容。for循环先读取sequence中的第1个数据,并把第1个数据赋值给循环变量,然后执行循环语句块;循环语句块执行完成后,再读取sequence中的第2个数据,并把第2个数据赋值给循环变量,再执行循环语句块;循环语句块执行完成后,再读取sequence中的第3个数据进行循环,……,直至sequence中的所有数据读取完成,结束循环执行后续语句。
for循环中可以增加else补充语句块,其结构如下。当循环变量在sequence中读取完数据,不再执行循环语句块后,再执行一遍补充语句块。通常else语句与continue或break语句一起使用。

下面实例由用户输入两个整数,计算两个整数之间所有整数的和,并输出循环变量的值。

下面例子由用户输入一段文字,输出该段文字中每个文字和对应的ASCII码值。如果输入“Iloveyou我爱你”,将会输出“I=73,l=108,o=111,v=118,e=101,y=121, o=111,u=117,我=25105,爱=29233,你=20320”。

需要注意的是,即使在循环结构中改变了循环变量的值,由于每次循环时循环变量都会读取sequence中的值,循环变量的值也都是sequence中的值。例如下面的计算从1到10的和的例子中,在循环结构中虽然改变了循环变量的值i=1000,并不影响计算结果sum= 55;如果将sum=sum+i和i=1000对调,则结果sum=10000。
