当前位置: 首页 > news >正文

python流程控制之for循环

python流程控制之for循环

循环结构的第二种实现方式是for循环,for循环可以做的事情while循环都可以实现,之所以用for循环是因为在循环取值(即遍历值)时for循环比while循环的使用更为简洁

文章目录

  • python流程控制之for循环
    • 引入
      • 1.什么是for循环
      • 2.为什么要有for循环
      • 3.如何使用for循环
      • 4.如何终止for循环
    • 一.for循环循环取值
      • 1.字符串循环取值
      • 2.列表循环取值
      • 3.字典循环取值
    • 二.for 与 break 组合使用
    • 三.for 与 else 组合使用
    • 四.for 与 continue 组合使用
    • 五.range 功能与 for 组合使用
      • 1.for循环取值的局限性
      • 2.range 的作用
      • 3.range 的用法
    • 六.for 与 range 与 len 组合使用
    • 七.for 循环嵌套
      • 1.嵌套循环的逻辑思路
      • 2.伪代码示例
      • 3.金字塔示例
      • 4.打印九九乘法表
    • 八.for 循环与 while 循环的区别
      • 1.相同之处
      • 2.不同之处
    • 九.总结

引入

1.什么是for循环

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

2.为什么要有for循环

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

3.如何使用for循环

  • 伪代码示例
可迭代对象目前理解为包含多个值的类型
运行原理:从可迭代对象中取出一个值给变量名,执行下面代码,然后又取出第二的值...直到值取完
for [变量名] in [可迭代对象]:  # 此时只需知道可迭代对象可以是字符串\列表\字典,我们之后会专门讲解可迭代对象
    代码1
    代码2
    代码3
    ....

#例1
for item in ['a','b','c']:
    print(item)
# 运行结果
a
b
c
# 参照例1来介绍for循环的运行步骤
# 步骤1:从列表['a','b','c']中读出第一个值赋值给item(item=‘a’),然后执行循环体代码
# 步骤2:从列表['a','b','c']中读出第二个值赋值给item(item=‘b’),然后执行循环体代码
# 步骤3: 重复以上过程直到列表中的值读尽

2

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)

案例一:打印数字0-5

# 简单版:for循环的实现方式
for count in range(6):  # range(6)会产生从0-5这6个数
    print(count)

# 复杂版:while循环的实现方式
count = 0
while count < 6:
    print(count)
    count += 1

3.字典循环取值

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

    # 简单版:for循环的实现方式
    for k in {'name':'jason','age':18,'gender':'male'}:  # for 循环默认取的是字典的key赋值给变量名k
        print(k)
    
    # 复杂版:while循环确实可以遍历字典,后续将会迭代器部分详细介绍
    

二.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.金字塔示例

# 分析
'''
#max_level=5
     *        # current_level=1,空格数=4,*号数=1
    ***       # current_level=2,空格数=3,*号数=3
   *****      # current_level=3,空格数=2,*号数=5
  *******     # current_level=4,空格数=1,*号数=7
 *********    # current_level=5,空格数=0,*号数=9

# 数学表达式
空格数=max_level-current_level
*号数=2*current_level-1
'''
# 实现:
max_level=5
for current_level in range(1,max_level+1):
    for i in range(max_level-current_level):
        print(' ',end='') #在一行中连续打印多个空格
    for j in range(2*current_level-1):
        print('*',end='') #在一行中连续打印多个空格
    print() 

4.打印九九乘法表

for i in range(1,10):
    for j in range(1,i+1):
        print('%s*%s=%s' %(i,j,i*j),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 : 实现按索引取值

相关文章:

  • python流程控制之while循环
  • Python语法入门之流程控制if判断
  • IDE集成开发环境的基本使用
  • Python实战演练:ATM + 购物车项目开发
  • 博客搬家通告!
  • python之深浅copy
  • python小数据池,代码块的深入剖析
  • 软件开发的目录规范
  • Linux前身今世
  • linux操作系统虚拟机安装
  • python之数字类型内置方法
  • python之字符串类型内置方法
  • python之列表类型内置方法
  • python之元组类型内置方法
  • python之字典类型内置方法
  • 【Leetcode】101. 对称二叉树
  • 4. 路由到控制器 - Laravel从零开始教程
  • Angular6错误 Service: No provider for Renderer2
  • java取消线程实例
  • Leetcode 27 Remove Element
  • OSS Web直传 (文件图片)
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • vue:响应原理
  • vue-loader 源码解析系列之 selector
  • Windows Containers 大冒险: 容器网络
  • 从零开始学习部署
  • 面试遇到的一些题
  • 前端面试之闭包
  • 数据结构java版之冒泡排序及优化
  • 我建了一个叫Hello World的项目
  • 新手搭建网站的主要流程
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 正则表达式小结
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #QT(TCP网络编程-服务端)
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (笔试题)分解质因式
  • (三)uboot源码分析
  • (十一)图像的罗伯特梯度锐化
  • (转)Linq学习笔记
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • ***原理与防范
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net反编译工具
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • [ 数据结构 - C++]红黑树RBTree
  • [2013AAA]On a fractional nonlinear hyperbolic equation arising from relative theory
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [android] 看博客学习hashCode()和equals()
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [C#] 我的log4net使用手册
  • [C/C++] -- 二叉树