python循环结构之for循环

时间:2022-06-23
本文章向大家介绍python循环结构之for循环,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

内容回顾

  • 逻辑运算符回顾
    连接多个条件运算符,and、or、not
    问题:连接多个条件的运算返回的是布尔值还是数据值??

    • 如果所有的条件都是数据值,那么返回的就是数据值

      print(0 and 2 and 5)  # 5
      print(0 or 1 or 3 or 5) # 1
      
    • 如果所有的条件都是表达式,那么返回的是布尔值

      print(1 < 0 and True and 3 > 1)  # False
      print(1 < 0 or True or 3 > 1)  # True
      
    • 如果条件既有表达式又有数据值,那么返回的结果就要看连接的逻辑运算符是and还是or

    • 在遇到逻辑运算符都是and的情况时,从前到后要依次看条件是否都成立,最后一个条件是数据值就返回数据值,如果是表达式,就返回布尔值。

      print(1 and 1 < 2)  # True
      print(1 and 3 and True and 56)  # 56
      
    • 在遇到逻辑运算符都是or的情况时,从前向后依次看,遇到的第一个条件结果成立的时候,就返回,如果是数据值就返回数据值,如果是表达式就返回布尔值

      print(1 or 1 < 3 or True)  # 1
      print(3 > 1 or 1 < 2)  # True
      
    • 遇到多种运算符混合使用的时候,需要考虑优先级,()>not>and>or,遇到具体的数据值就返回数据值,遇到表达式,就返回布尔值

      print(1 and 3 > 2 or 5 or False and 3 == 3)  # True
      print(1 < 0 and 3 or 5 or False and 3 == 3)  # 5
      
    • not的结果返回的只能是布尔值

  • 循环结构之while基本语法

    `while` 条件
       条件成立后执行的子代码
    
  • while+break

    `while` 条件:
       条件成立后执行的子代码
       break
    

    break的用法是可以终止循环,如果是多个条件循环嵌套的情况时,break只是终止的他所在的那层循环不会影响其他的循环

  • while+continue

    `while` 条件:
       条件成立后执行的子代码
       continue`
    

    continue的用法是跳过这次循环,继续执行下次循环

  • while+else

    `while` 条件:
       条件成立后执行的子代码
    `else`:
       提前定义好的代码
    

    else的用法是正常在循环体结束后执行的,不是异常执行,else与while同级

  • while的循环嵌套

    `while` 条件:
       条件成立执行的子代码
       `whlie` 条件
       	条件成立后的子代码
    

    循环嵌套需要注意代码的层级关系,代码的缩进,大循环套小循环,只需要循行同级的关系按照顺序结构一次向下执行,如果遇到while、if在做另行判断

  • 死循环和全局标志位

    死循环:循环体代码不能是连续的计算机任务,尽量不要去使用。

    全局标志位:为了节省break,在开始定义一个True,结尾再重新定义为False

今日学习任务

  • 循环结构之for循环

    for循环能够做的事情while循环都可以做到,它可以遍历到任何序列的项目,例如列表、字典、字符串、元组、集合

    • 通过列表索引迭代,一种执行循环的方式是通过索引,适用于列表、元组和集合

      fruits = ['banana', 'apple',  'mango']
      for i in fruits:
         print('当前水果 : %s' % i)
      """
      当前水果 : banana
      当前水果 : apple
      当前水果 : mango
      """
      
      • 语法结构
        `for` 变量名 `in` 可迭代对象:
      
      ​	for循环的循环体代码
      
      • for循环的过程,它会拿到给的数据,从前到后依次取出这个数据的每一个数据值然后赋值给前面的变量i,首先拿出第一个数据值绑定给i进行循环体里执行,执行结束后他会再次回到for循环里然后再次拿出第二个数据值进行赋值给i,然后继续执行循环体代码,其中i是一个动态绑定的,直到数据里的数据值全部取完后,它会自动结束

      • 变量名的命名:如果待取名的数据有明确的方向,那么就要做到见名之意

        常见的命名名字有:i、j、k、item

    • 字典的取值,在for循环中,默认我们只能取到K值

      dict = {'name': 'zhangran', 'age': 23, 'gender': 'women'}
      for i in dict:
          print(i)
      """
      name
      age
      gender
      """  
        
      
    • 字符串的取值,for循环中,字符串的取值为单个字符

      str = 'asdfgh'
      for i in str:
          print(i)
      """
      a
      s
      d
      f
      g
      h
      """
      
  • 扩展知识

  1. for的重要方法----range:它是一个能够帮我们产生一个包含许多数据值的列表,他总共有三种用法
  • `for` 变量名 in range(数字):
    	循环体代码
    

    当range后面只跟了一个数字,从0开始到范围值-1结束例如:范围值为4的时候,结果是0,1,2,3,4

  • `for` 变量名 in range(数字1,数字2):
    	循环体代码
    

    当range后面跟了俩个数字,第一个是起止位置,第二个为终止位置,这时候产生的数据值的特点是”顾头不顾尾“,即左包含右不包含。例如:(1,6),结果是1,2,3,4,5

  • `for` 变量名 in range(数字1,数字2,间隔数):
    循环体代码
    

    当range后面跟了三个数字,最后一个数字为数据之间的间隔数(也可理解为等差数列)例如:(1,10,2),结果是1,3,5,7,9
    3. range方法实际操作---网络爬出

    网络爬虫:python代码模拟网络请求获取数据

    base_url = 'https://movie.douban.com/top250?start=%s&filter='
    for i in range(0, 250, 25):
        print(base_url % i)
    """
    https://movie.douban.com/top250?start=0&filter=
    https://movie.douban.com/top250?start=25&filter=
    https://movie.douban.com/top250?start=50&filter=
    https://movie.douban.com/top250?start=75&filter=
    https://movie.douban.com/top250?start=100&filter=
    https://movie.douban.com/top250?start=125&filter=
    https://movie.douban.com/top250?start=150&filter=
    https://movie.douban.com/top250?start=175&filter=
    https://movie.douban.com/top250?start=200&filter=
    https://movie.douban.com/top250?start=225&filter=
    """
    
  • for与其他关键字一起使用

    1. for + break

      break强制结束所在的那层for循环

    2. for + continue

      continue跳过这次循环继续下次循环

    3. for + else

      else配合for一起使用 当for循环没有被强制结束的情况下 循环体结束之后运行else子代码

原文地址:https://www.cnblogs.com/zxr1002/p/16406433.html