09 流程控制之for循环

共计 2160 个字符,预计需要花费 6 分钟才能阅读完成。

引入

1. 什么是 for 循环

  • 就是重复的做某事
  • 它是 Python 提供的第二种循环机制

2. 为什么要有 for 循环

  • 理论上 for 能做的事情,while循环都可以做
  • 之所以使用 for 循环是因为在特定的时候 for 循环更简洁, 比如: 循环取值

3. 如何使用 for 循环

  • 伪代码示例
🍁可迭代对象目前理解为包含多个值的类型
🍁运行原理: 从可迭代对象中取出一个值给变量名, 执行下面代码, 然后又取出第二的值... 直到值取完
for [变量名] in [可迭代对象]:
    代码 1
    代码 2
    代码 3

4. 如何终止 for 循环

  • 值所包含的元素取干净
  • 遇到 break 立即终止本层循环

一.for 循环循环取值

1. 字符串循环取值

  • 取的是大字符串里的单个字符, 包括空格
strr = "shawn is man"
for i in strr:
    print(i)

2. 列表循环取值

  • 默认取出的是第一层的值
li = [111,222,333,444]
for i in li:
    print(i)

3. 字典循环取值

  • 默认取出的是字典的 key
dic = {"name":"shawn","age":22}
for i in dic:
    print(i,dic[i])  # name shawn   age 22  

二.for 与 break 组合使用

  • break : 立刻终止本层循环

三.for 与 else 组合使用

  • 只有在循环正常执行完毕,且没有被 break 打断的情况下 else 中的子代码块才会生效

四.for 与 continue 组合使用

  • 跳过当前循环进行下一次循环
for i in range(5):
    if i == 3:
        continue
    print(i)  # 0, 1, 2, 4

五.range 功能与 for 组合使用

1.for 循环取值的局限性

  • 使用一些数据类型来控制循环的次数, 当循环次数多时, 比如以前一万次, 难道还要在数据类型里面包含一千一万个值吗 –(相当于鸡蛋)
  • 这显然是不方便的, 于是 range 就很好的解决了这个问题 –(相当于老母鸡)

2.range 的作用

  • for 循环并不一定是要做循环取值, 也有可能是单纯的执行循环次数, range 就是用来做这件事的

3.range 的用法

🍁指定结尾, 默认从 "0" 开始, 到 "4" 结束, 顾头不顾尾
for i in range(5)
    print(i)  #0,1,2,3,4 
🍁指定开头和结尾, 顾头不顾尾 "1~4"
for i in range(1,5)
    print(i)  #1,2,3,4
🍁指定开头结尾和步长, 顾头不顾尾
for i in range(1,8,2)
    print(i)  #1,3,5,7 (也就是每两个取第一个)

六.for 与 range 与 len 组合使用

  • len 可以统计长度, 我们可以配合 range, 循环出索引, 然后通过索引取值
l = [111,222,333,444,555]
for i in range(len(l)):
    print(f"{i}:{l[i]}"
# 0:111
# 1:222
# 2:333
# 3:444
# 4:555

七.for 循环嵌套

1. 嵌套循环的逻辑思路

  • 外层循环一次, 里层循环完毕, 然后再进行外层的第二次循环, 里层又开始循环, 以此往复, 直到外层和里层都循环完毕

2. 伪代码示例

for [外层变量名] in [外层循环条件 / 次数(假设 3)]:
    print(" 我是外层循环输出 ")
    for [里层变量名] in [里层循环条件 / 次数(假设 4)]:
        print(" 我是里层循环输出 ")
🍁以上伪代码示例, 外层 "3" 次循环, 里层 "4" 次循环
🍁外层循环 "1" 次, 里层循环 "4" 次, 循环完进行外层的第二次循环
🍁最终外层循环完 "3" 次, 那么里层就一共循环了 "12" 次

3. 金字塔示例

count = 5
for maxdepth in range(1, count + 1):
    for space in range(count - maxdepth):
        print('', end='')
    for start in range(1, maxdepth * 2):
        print("*", end="")
    print()
#     *
#    ***
#   *****
#  *******
# *********    

4. 九九乘法表示例

for maxdepth in range(1,10):
    for now in range(1,maxdepth+1):
        print(f"{now}*{maxdepth}={now*maxdepth} ",end="")
    print()
# 1*1=1 
# 1*2=2 2*2=4 
# 1*3=3 2*3=6 3*3=9 
# 1*4=4 2*4=8 3*4=12 4*4=16 
# 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 
# 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 
# 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 
# 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 
# 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81 

八.for 循环与 while 循环的区别

1. 相同之处

  • 都是循环, 循环做的事情两种方式都可以做, 主要看应用场景, 看哪个使用的更方便

2. 不同之处

  • while 循环称之为条件循环, 循环的次数取决于条件何时变为假
  • for 循环称之为遍历循环(取值循环等等), 循环的次数取决于 in 后面包含的值的个数

九. 总结

  • for + 可迭代对象 : 实现遍历取值
  • for + range : 实现控制循环次数
  • for + range + len : 实现按索引取值
© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容