今天将是基础篇的最后一篇,咱们来补上最后一个内容,流程控制for循环
For 循环
一、为什么有for循环?
for循环能做的事情,while循环全都可以实现,但是在某些情境下,for循环相对于while循环效率更高,例如遍历列表,for循环可以极大简化代码的数量
二、基本结构
# for循环 for i in 循环体: 代码1 代码2 ...
示例1:
>>> list = [1,2,3,4,5,6] >>> for i in list: ... print(i) ... 1 2 3 4 5 6 >>>
三、for循环的用法
1、for循环 + break。这和while循环一致,只要遇到break,就会立刻退出for循环
示例2:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
>>> for i in list: ... if i == 4: ... break ... print(i) ... 1 2 3 >>>
2、for循环 + continue。这个用法也如while循环一致,只要代码运行到continue,就会调过本次循环,进入下一次循环
示例3:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
>>> list = [1,2,3,4,5,6] >>> for i in list : ... if i == 3: ... continue ... print(i) ... 1 2 4 5 6
3、for循环 + else。只有在for循环正常结束后,才执行else下代码
示例4:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
>>> list = [1,2,3,4] >>> for i in list: ... print(i) ... else: ... print("sucessful!") ... 1 2 3 4 sucessful!
4、for循环 + range。range()功能可以生产一个列表,他有三个参数:(起始位置,结束位置,步长),其中起始位置可以省略,默认为0,步长可以省略,默认为1。需要注意的是,生成的是列表,并且生成:结束位置 - 1个元素(顾头不顾尾)。
因为在python3中对range()功能进行了优化,不会直接产生一个真的列表,所以接下来在python2中进行演示
示例5:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
>>> range(1,6,1) [1, 2, 3, 4, 5] >>> range(1,5,2) [1, 3] >>> range(6) [0, 1, 2, 3, 4, 5] >>> range(-1,-6,-1) [-1, -2, -3, -4, -5] >>> for i in range(1,5): ... print(i) ... 1 2 3 4 >>>
5、for循环 + enumerate。enumerate功能是列表的一个功能,它可以将列表的元素和相应的索引绑定在一起,生产一个个元组。这个时候就可以将for循环、enumerate、解压赋值结合起来,取出列表的值可他的索引
示例6:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
>>> list = [1,2,3,4,5] >>> for x in enumerate(list): ... print(x) ... (0, 1) (1, 2) (2, 3) (3, 4) (4, 5) >>># 解压赋值 >>> for x,y in enumerate(list): ... print(x,y) ... 0 1 1 2 2 3 3 4 4 5 >>>
6、for循环 +循环嵌套。以下通过两个示例进行演示
九九乘法表示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 打印九九乘法表 for i in range(1,10): for m in range(1,i+1): a = i *m print("{}*{}={}".format(m,i,a),end= " ") print()
效果如下:
金字塔示例:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
""" 金字塔示例 分析: 层数:6 * 第一层:" "打印6个,"*"打印1个 *** 第二层:" "打印5个,"*"打印3个 ***** 第三层:" "打印4个,"*"打印5个 ******* 第四层:" "打印3个,"*"打印7个 ********* 第五层:" "打印2个,"*"打印9个 *********** 第六层:" "打印1个,"*"打印11个 " " : 7 - 层数 "*" : 2 * 层数 - 1 """ for i in range(1,7): for x in range(1,i+7): if x <= 7-i: print(" ",end="") else: print("*",end="") print()
效果如下:
四、小结
在最后两个示例编写时,本喵遇到了些许麻烦,以下是总结:
- print()函数如果里面没有参数,它就会默认换行,所以需要在九九乘法表和金字塔的代码中,第二层for循环最后添加:print(),目的就是在第二次主循环时,不会跟在末尾打印,而是到第二行;
- for循环嵌套的执行顺序是这样的:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# for循环嵌套 for i in range(3): # i=2 print('=================>外层循环', i) for j in range(5): print("内层循环", j) """ =================>外层循环 0 内层循环 0 内层循环 1 内层循环 2 内层循环 3 内层循环 4 =================>外层循环 1 内层循环 0 内层循环 1 内层循环 2 内层循环 3 内层循环 4 =================>外层循环 2 内层循环 0 内层循环 1 内层循环 2 内层循环 3 内层循环 4 """