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