第三节 循环结构

文章目录

  • 1. while循环
    • 1.1 什么是循环?
    • 1.2 while 循环
      • 1.2.1 语法结构
      • 1.2.2 循环中的异类
    • 1.3 while循环使用案例
      • 1.3.1 求1~100之间的和
      • 1.3.2 求1~100之间偶数之和
      • 1.3.3 循环中的"标志变量"
    • 1.4 嵌套循环使用
      • 1.4.1 嵌套循环语法结构
      • 1.4.2 嵌套练习
    • 1.5 知识扩展 --最大公约数
  • 2. for 循环
    • 2.1 语法结构
    • 2.2 练习: 获取1~5的整数
      • 2.2.1 range() 函数
    • 2.3 for 循环的嵌套使用
      • 2.3.1 打印直角三角型
      • 2.3.2 打印九九乘法表
    • 2.4 break 和 continue
      • 2.4.1 break
      • 2.4.2 continue
    • 2.5 扩展知识 while - else 结构

1. while循环

1.1 什么是循环?

  1. 主要强调一个周而复始的概念,即满足条件重复执行。 但是有3个注意条件:

    • 循环开始
    • 判断条件
    • 控制判断条件的控制,即,步长
  2. 根据上面的提示,我们可以去联想一些生活中的案例,分析一下,有什么相同的地方 ?。

    • 操场跑圈
    • 打印机打印文件
    • 切黄瓜
    • 爱你一万年
  3. 通过print("跑了第i 圈") 输出的形式,模拟操场跑圈。

    • 第一种情况: 跑5圈。
    • 第二种情况: 跑1万圈。
    #第一种情况,跑5圈
    print("跑了第1圈") 
    print("跑了第2圈") 
    print("跑了第3圈") 
    print("跑了第4圈") 
    print("跑了第5圈")
    
    # 那么跑 1万圈 怎么实现? 复制+黏贴?
    
    
    

1.2 while 循环

1.2.1 语法结构

  1. 循环三要素:

    • 起始化值,
    • 判断条件,
    • 步长(控制循环)。
  2. while 循环的语法格式:

    • 注意 步长控制的格式缩进.,
    1.初始化值
    while 2.判断条件:
    	执行语句(需要循环地方)
    	3.控制循环(步长)
    
  3. 结合语法结构, 完成跑操场跑一万圈.

    • 第一个注意: 格式上的缩进.
    • 第二个注意: 字符串输出的格式化 f " {} "
    #第二种情况使用while语法格式跑1万圈
    #1. 初始化值
    i=1
    while i<=10000 :#2.判断条件
        # 需要循环的语句
        print(f"跑了第{i}圈")
        #3.步长控制循环
        i+=1
    

1.2.2 循环中的异类

  1. 无限循环又叫做 “死循环”,就是不会停止

    • 请思考, 什么情况下会出现死循环?
    # 1. 什么是无限循环 ?
    while True: # 判断条件永远会执行.
        print("永远和你在一起")
    
    
  2. 自己动手,通过 Debug 来查看循环的执行过程? 并给出你的结论.

    • 注意观看 Debug控制台.
      第三节 循环结构_第1张图片

1.3 while循环使用案例

1.3.1 求1~100之间的和

  1. 相当于从1累加到100.
    • 提示: 起始值从 1开始.
    """
    1. 第一种计算 1到100和
        1.1 相当于 1+2+3...+100.
        1.2 循环三要素:
             初始化值
             判断条件
             步长(控制循环)
    """
    #1. 初始值
    i = 1
    #3. 累计每一次的和
    sum =0
    #2.1-100之间的和 判断条件 i<=100
    while i<=100:
        sum=sum+i #相当于每次循环累计一次.
        i+=1  # 步长控制循环
    
    #循环结束输出 sum值
    print(sum) #5050
    

1.3.2 求1~100之间偶数之和

  1. 什么是偶数?

    • 需要使用运算符 % 去解决.
    • 使用Debug 查看.
    # i%2==0 就是偶数
    i = 1
    oushu = 0
    while i <= 100:
        # 进行判断偶数
        if i % 2 == 0:
            oushu = oushu + i
        i += 1  # 步长
    print(f"偶数之和{oushu}") #2550
    
    
  2. 第二种方式,通过改变控制条件, 来得到偶数.

    • 需要注意初始化值. 思考?从0开始和从2开始的区别?
    • 如果是使用步长控制值的变化,那么还需要使用选择结构去进行判断么?
    # 第二种写法
    
    i = 0 #既然是偶数相加可以从0开始,或者从2开始.
    oushu = 0
    while i <= 100:
        #就不用判断了.
        oushu = oushu + i
        # 通过步长来控制循环,相当于2
        i = i + 2
    print(f"偶数之和是{oushu}")#2550
    
  3. 自己动手做: 请算出 1~100奇数之和.

    • 思考一下, 这两种写法有什么区别? 用自己的语言描述一下.
    #提示: 什么是奇数? 
    #通过步长控制? 
    #TODO coding
    
    

1.3.3 循环中的"标志变量"

  1. 妈妈每次都要问小明,“你作业做完了么?”,小明只有作业做完了才能出去玩, 没有做完就继续做,直到做完作业才可以.

    • 循环中标志变量的使用.
    '''
    1. 标志变量一般在循环中相当于一个开关,
        碰到了该变量就会停止,
    '''
    # 声明一个标志变量
    answer = "no"
    while answer == "no":
        print("作业中.....")
        answer = input("妈妈问: 小明作业做完了么?")#相当于步长.
        print(f"小明的回答是{answer}")
    print("程序结束")
    

1.4 嵌套循环使用

1.4.1 嵌套循环语法结构

  1. 嵌套顶级,核心语法

    • 联想钟表:分针走一次, 秒针需要走一圈.
    • 即: 外循环循环一次, 内循环循环一圈.
  2. 嵌套循环的语法结构

    • 外层循环执行一次, 内层循环执行多次.
    while 判断条件:  #外循环
    	代码 1
    	
    	while 判断条件: #内循环
    		代码2:
    		步长控制2
    	步长控制1
    

1.4.2 嵌套练习

  1. 要求输出一下格式,循环嵌套的目标结果.

    • 操场跑圈,一共要跑5圈, 每跑一圈,需要做3个俯卧撑.
    '''
    第1圈
        做了第1个俯卧撑
        做了第2个俯卧撑
        做了第3个俯卧撑
    第2圈
        做了第1个俯卧撑
        做了第2个俯卧撑
        做了第3个俯卧撑
    第3圈
        ...
    '''
    
  2. 根据上述需求,可以得知,一共跑5圈,每次3个俯卧撑

    • 提示 : 可以先创建外层循环, 内层循环使用print()输出5次.然后再将内层循环带入.
    • 注意: 格式上的缩进, 步长控制.
    • 使用断点测试代码.
    i = 1
    while i <= 5:
        print(f"跑了第{i}圈")
    	#准备做俯卧撑  
    	#print("做俯卧撑")
        # 内层循环,直接带入.
        j = 1
        while j <= 3:
            print(f"\t做第{j}个俯卧撑") #使用制表符
            j += 1 #注意格式缩进  
        # 外层循环控制
        i += 1
    

1.5 知识扩展 --最大公约数

  1. 一个数可以整除几个数,那么这几个数称为公约数.

    • 1是最小公约数
      第三节 循环结构_第2张图片
    """
    输入两个数  12   8 
    从开始      1    1  公约数
                2   2   公约数
                3   3
                4    4   公约数(最大)
                5    5 
                6    6 
                ..   ..
    """
    

2. for 循环

2.1 语法结构

  1. for循环也是循环,也是表示重复做某些事,只是语法格式同while循环不一样.

    • 但是原理是一样的.
  2. 语法格式

    for 输出变量名 in 要遍历的内容:
    	 循环体
    
  3. 入门案例 变量字符串.

    • 遍历字符串 “hello,world”
    #遍历该字符串
    for i in "hello,world":
        print(i)
    

2.2 练习: 获取1~5的整数

  1. 获取1~5的整数

    #1.直接输入整数是不行的.需要一个范围,且是字符串形式
    # for i in 12345:
    #     print(i) # TypeError: 'int' object is not iterable
    
    print("-"*20) #华丽的分隔符
    
    #2.需要使用字符串的形式
    for i in "12345":
        print(i)
    

2.2.1 range() 函数

  1. range() 函数可创建一个整数列表, 一般用在 for 循环中使用.

  2. range() 使用的三种情况.

    • 自己总结一下规律.
    • 反向遍历,从大到小
    # 1. range(8)      [0,8)
    for i in range(8):
    	print(i) #根据输出结果自己总结
    
    # 2. range(1,8)     [1,8)
    for i in range(1,8):
        print(i)
    
    # 3. range(0,8,2)    [0,8,2) 计数间隔2
    for i in range(0,8,2):
        print(i)
    
    # 4.扩展知识 range(8,0,-2)  
    for i in range(8,0,-2): 
    	print(i) # 相当于从反方向输出,即反向遍历
    
  3. 使用 for循环计算 1~100之间的和.

    • 思考如果求:1~100的偶数之和呢?
    
    #设置累计求和 sum
    sum = 0
    # for循环语法   range(1,101)
    for i in range(1,101):#需要加到100,[1,101)
        sum = sum+i #累计求和
    
    print(f"1~100的值是{sum}")
    

2.3 for 循环的嵌套使用

2.3.1 打印直角三角型

  1. 打印直角三角型

    • 使用for循环的嵌套,
    • 外循环控制行, 内循环控制输出次数
  2. 图形如下

        *
        * *
        * * *
        * * * *
        * * * * *
    
  3. 代码:

    • 举一个例子: 最快速的方式 ? 直接print输出,推荐使用 三引号.
    • 使用带入方法,去编写代码.
    """
    第二种方式:采用for循环的方式 
        分析一波:
            for 外层控制输出行数
                for 内循环控制输出次数 
            
            第一次循环: 
                    for 外层循环第1次循环
                         for(内层) 输出1次 *
            第二次循环:
                    for 外层循环第2次循环
                        for(内层) 输出2次  * * 
            第三次循环:
                    for 外层循环第3次循环
                        for(内层) 输出3次  * * *
            第四次循环: 
                    for 外层循环第4次循环 
                        for(内层) 输出4次  * * * * 
            第五次循环
                    for 外层循环第5次循环 
                        for(内层) 输出5次  * * * * * 
    """
    
    for i in range(1,6): # [1,6) 相当于 1,2,3,4,5 次.
            #内层循环控制输出次数
        for j in range(i):
            # 默认输出是"\n",需要该为end=""小细节
            print("*",end=" ") 
        #相当于换行
        print("")
    
  4. 要求输入一个n打印出来相应的行数.即输入几就打印几行.

    • 要了解 range(start,end,step) 的函数.
    #.怎么分析代码?
    #当n =1 时 
    n=1
    for i in range(n):
        for j in range(i):
            print("*", end=" ")
        print("")
    
    #当n=2时...
    n=2
    for i in range(n):
       for j in range(i):
            print("*", end=" ")
        print("")
    # 当n=3时 ...
    n=3
    for i in range(n):
        for j in range(i):
            print("*", end=" ")
        print("")
    
    # 最终: 所以得出结论,输入n+1 就是要打印的行数. 
    n =4
    for i in range(1,n+1):
        for j in range(i):
            print("*", end=" ")
        print("")
    

2.3.2 打印九九乘法表

  1. 使用循环来打印九九乘法表
    第三节 循环结构_第3张图片

    """
    如何分析:
        根据样式发现
            外循环第一次循环
                内循环一次
            外循环 第二次
                内循环输出二次
            外循环  循环9次
                内循环输出9次
    
    """
    # 根据语法格式 先搭建外循环构架
    for i in range(1, 10):
        for j in range(1, i + 1):  # 需要使用i+1 输出第一个
            print(f"{j}x{i}={i * j}", end=" ")
        print("")
     
    print("*"*20)
    
    
  • 思考: 第二种需求,当输入n时 生成 相应的乘法表.

    #2,第二种需求,当输入n时 生成 相应的乘法表.
    n = 11;
    for i in range(1, n+1):
        for j in range(1, i + 1):  # 需要使用i+1 输出第一个
            print(f"{j}x{i}={i * j}", end=" ")
        print("")
    

2.4 break 和 continue

2.4.1 break

  1. break 语句用于结束整个循环.

    • 演示break的循环过程
    • 只能使用在循环之中.
    #1.break使用结构,跳出本次循环,并结束程序.
    i=1
    while i<=10:
        print(i) #1 ,2,3 
        if i==3:
            break
        print(f"我执行了么?{i}") #后面的语句就不执行了. 1 ,2
        i+=1
    
    1
    我执行了么?1
    2
    我执行了么?2
    3
    
  2. 使用Debug查看.
    第三节 循环结构_第4张图片

2.4.2 continue

  1. continue的作用是结束本次循环.执行下一次循环

    • 演示continue 的循环过程.
    • 只能使用在循环之中.
    # 结束本次循环,执行下一次循环
    
    for i in range(1, 10):
        print(i) 
        if i == 3:
            continue
        print(f"我执行了么{i}") #相当于跳过了3,执行了后面.
    

2.5 扩展知识 while - else 结构

  1. 知道有if -else 结构, else 还可以和while一起使用.

    • else执行也是有条件的.
    • pass 占位符语句,又叫空语句.
    # 1. 这叫做等式恒成立结构. 所以 else会是黄色的.
    if 5 > 3:
        print("if")
    else:
        print("else")
    
    # 2. pass 占位语句
    if 5 > 3:
        # 如果不写会报错.
        pass  # 使用pass占位,不执行任何,空语句
    else:
        print("else")
    
    # 3. while-else结构
    # 如果循环正常结束,循环输出就会执行 else里面
    i = 1
    while i <= 10:
        print(i)
        i = i + 1
    else:
        print("else")
    
    #3.1  如果循环中有break就不会执行.
    i = 1
    while i <= 10:
        print(i)
        if i==3:
            break
        i = i + 1
    else:
        print("else")
    
    

第三节 循环结构_第5张图片

你可能感兴趣的:(Python的快速入门,python,开发语言)