3.3.2 for循环和range()内建函数
除了while语句外,python还提供了另外一种功能强大的循环结构―for语句。从可迭代对象(字符串、列表、元组、字典、迭代器等)的头部开始,依次选择每个元素并其进行一些操作直到结束,这种处理模式被称为遍历(traversal)。for语句用于遍历可迭代对象中的所有元素,遍历结束后可执行else子句(与while循环中的else子句类似,for循环中的else子句是可选的)。
书写格式:关键字for+空格+循环变量+空格+关键字in+空格+对象(+的意思是后接),后接英文冒号,else子句与for子句左对齐,后接英文冒号,所有语句块左对齐,即语句块中的全部语句均缩进4个空格,如图3-8所示。
图3-8 for循环结构书写格式
例如:
程序运行结果为“Hello”,即以空格隔开依次输出字符串"Hello"中的每个字母。
例如:
程序运行结果为“25 hello 12.8 A ”,即以空格隔开依次输出列表中的每个元素。
例如:
程序运行结果为“4”,即以遍历方式计算出“山”在字符串中出现的次数。
for循环经常与range()函数配合使用。内建函数range()用于生成整数序列,通常的写法是:range(start, end, step)。其中,start决定序列的起始值(起始值可以省略,省略时该值为0)、end代表序列的终值(半开区间,不包括end的值),step代表序列的步长(可以省略,默认值是1)。
例如:
程序运行结果为“4 6 8”,因为是半开区间,所以不包括数字10。
例如:
程序运行结果为“10 8 6 4”,因为步长为-2,所以输出结果依次递减。
例如:
程序运行结果为“0 1 2 3 4”,起始值省略,从0开始;步长省略,步长为1。
【例3-11】编写程序,使用for语句计算1~10000的自然数之和。
分析:首先初始化总和的值为0,然后使用for语句将range函数中的元素依次添加到总和中,因为range函数为开区间,所以终值设为10001。
代码如下:
【例3-12】编写程序,解决以下问题。
4个人中有一人做了好事,已知有三个人说了真话,根据下面对话判断是谁做的好事。
A说:不是我;
B说:是C;
C说:是D;
D说:C胡说。
分析:做好事的人是4个人其中之一,因此可以将4个人的编号存入列表中,然后使用for循环依次判断;有三个人说了真话,将编号依次代入,使用if语句判断是否满足“三人说真话”(三个逻辑表达式的值为真)的条件,如果满足,则输出结果。
代码如下: