首页 > 技术文章 > python基础之流程控制(2)

zhangchengchao123 2021-03-17 17:21 原文

今天将是基础篇的最后一篇,咱们来补上最后一个内容,流程控制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:

>>> for i in list:
...     if i == 4:
...         break
...     print(i)
...
1
2
3
>>>
View Code

2、for循环 + continue。这个用法也如while循环一致,只要代码运行到continue,就会调过本次循环,进入下一次循环

示例3:

>>> list = [1,2,3,4,5,6]
>>> for i in list :
...     if i == 3:
...         continue
...     print(i)
...
1
2
4
5
6
View Code

3、for循环 + else。只有在for循环正常结束后,才执行else下代码

示例4:

>>> list = [1,2,3,4]
>>> for i in list:
...     print(i)
... else:
...     print("sucessful!")
...
1
2
3
4
sucessful!
View Code

4、for循环 + range。range()功能可以生产一个列表,他有三个参数:(起始位置,结束位置,步长),其中起始位置可以省略,默认为0,步长可以省略,默认为1。需要注意的是,生成的是列表,并且生成:结束位置 - 1个元素(顾头不顾尾)。

因为在python3中对range()功能进行了优化,不会直接产生一个真的列表,所以接下来在python2中进行演示

示例5:

>>> 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
>>>
View Code

5、for循环 + enumerate。enumerate功能是列表的一个功能,它可以将列表的元素和相应的索引绑定在一起,生产一个个元组。这个时候就可以将for循环、enumerate、解压赋值结合起来,取出列表的值可他的索引

示例6:

>>> 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
>>>
View Code

6、for循环 +循环嵌套。以下通过两个示例进行演示

九九乘法表示例:

# 打印九九乘法表
for i in range(1,10):
    for m in range(1,i+1):
        a = i *m
        print("{}*{}={}".format(m,i,a),end= " ")
    print()
View Code

效果如下:

 

金字塔示例:

"""
金字塔示例
分析:
                    层数: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()
View Code

效果如下:

 

 四、小结

在最后两个示例编写时,本喵遇到了些许麻烦,以下是总结:

  • print()函数如果里面没有参数,它就会默认换行,所以需要在九九乘法表和金字塔的代码中,第二层for循环最后添加:print(),目的就是在第二次主循环时,不会跟在末尾打印,而是到第二行;
  • for循环嵌套的执行顺序是这样的:
# 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
"""
View Code

 

推荐阅读