• Day 05 python学习笔记


    循环

    应用:循环轮播图 最基础、最核心

    循环:周而复始,谓之循环   (为了代码尽量不要重复)

    while循环

    while的格式

    索引定义

    while 表达式(只要结果为布尔值即可):

                    循环体

    通过条件的不断变化,从而确定循环体是否继续执行

    例:

    死循环(无限循环)

    while Ture:     (非0即为真)

               循环体    

    循环中断

    continue:终端本次循环,直接进入下一次循环

    break:直接结束循环,遇见break,直接全部gameover

    例:

    输出0-100   

    1. index = 0
    2. while index <= 100:
    3. print(index)
    4. index += 1

    让其在输出49后终止循环

    1. index = 1
    2. while index <= 100:
    3. if index == 50:
    4. break #直接跳出循环
    5. print(index)
    6. index += 1
    7. index = 1
    8. while index <= 100: #continue会使代码回到这
    9. if index == 50:
    10. continue #回到循环判断条件处
    11. print(index)
    12. index += 1 #本代码会输出0-49后卡住,因为陷入死循环
    13. index = 0
    14. while index < 100: #注意代码这边改为 < 无 =
    15. index += 1 #顺序改变,结果会输出0-49,51-100(无50)
    16. if index == 50:
    17. continue
    18. print(index)
    19. print("循环结束") #只会在最后执行一次(只有在while后且缩进的才归其管)

    while……else

    1. while condition:
    2. 代码
    3. else:
    4. 代码

    else后面的代码:当循环正常结束之后要执行的代码

    1. 例:
    2. i = 1
    3. while i <= 5:
    4. if i == 3:
    5. print('不真诚')
    6. i += 1
    7. break #直接跳出循环包括else
    8. print('我错了,思密达~')
    9. i += 1
    10. else:
    11. print('她原谅我了') #不打印,循环未正常结束
    12. 结果:
    13. 我错了,思密达~
    14. 我错了,思密达~
    15. 不真诚
    16. i = 1
    17. while i <= 5:
    18. if i == 3:
    19. print('不真诚')
    20. i += 1
    21. continue #循环继续进行,只暂停一次循环
    22. print('我错了,思密达~')
    23. i += 1
    24. else:
    25. print('她原谅我了')
    26. 结果:
    27. 我错了,思密达~
    28. 我错了,思密达~
    29. 不真诚
    30. 我错了,思密达~
    31. 我错了,思密达~
    32. 她原谅我了

    只有代签执行完毕了,才会被原谅
    中途break,else下边缩进的代码不会执行
    中途continue,else下边缩进的代码执行

    规划好条件
    练习:求1-100的累加和(终止条件 1-100)

    1. count = 0
    2. index = 0
    3. while index <= 100:
    4. count += index
    5. index += 1
    6. print(count)
    7. 结果:
    8. 5050

    循环嵌套

    举例:

    坚持每天送10朵花100天,然后就可以表白成功

    1. i = 1
    2. while i <= 7:
    3. print(f"今天是第{i}天,准备表白思密达~")
    4. j = 1
    5. while j <= 10:
    6. print(f"送她第{j}朵花花")
    7. j += 1
    8. i += 1
    9. print(f"坚持到{i-1}天表白成功")
    10. 结果:
    11. 。。。
    12. 送她第9朵花花
    13. 送她第10朵花花
    14. 今天是第6天,准备表白思密达~
    15. 送她第1朵花花
    16. 送她第2朵花花
    17. 送她第3朵花花
    18. 送她第4朵花花
    19. 送她第5朵花花
    20. 送她第6朵花花
    21. 送她第7朵花花
    22. 送她第8朵花花
    23. 送她第9朵花花
    24. 送她第10朵花花
    25. 今天是第7天,准备表白思密达~
    26. 送她第1朵花花
    27. 送她第2朵花花
    28. 送她第3朵花花
    29. 送她第4朵花花
    30. 送她第5朵花花
    31. 送她第6朵花花
    32. 送她第7朵花花
    33. 送她第8朵花花
    34. 送她第9朵花花
    35. 送她第10朵花花
    36. 坚持到7天表白成功

    内层添加break

    1. i = 1
    2. while i <= 7:
    3. print(f"今天是第{i}天,准备表白思密达~")
    4. j = 1
    5. while j <= 10:
    6. print(f"送她第{j}朵花花")
    7. if j == 2:
    8. break #只结束包含break最近(里)的一个循环
    9. j += 1
    10. i += 1
    11. print(f"坚持到{i-1}天表白成功")
    12. 结果: #外层循环不结束
    13. 今天是第1天,准备表白思密达~
    14. 送她第1朵花花
    15. 送她第2朵花花
    16. 今天是第2天,准备表白思密达~
    17. 送她第1朵花花
    18. 送她第2朵花花
    19. 今天是第3天,准备表白思密达~
    20. 送她第1朵花花
    21. 送她第2朵花花
    22. 今天是第4天,准备表白思密达~
    23. 送她第1朵花花
    24. 送她第2朵花花
    25. 今天是第5天,准备表白思密达~
    26. 送她第1朵花花
    27. 送她第2朵花花
    28. 今天是第6天,准备表白思密达~
    29. 送她第1朵花花
    30. 送她第2朵花花
    31. 今天是第7天,准备表白思密达~
    32. 送她第1朵花花
    33. 送她第2朵花花
    34. 坚持到7天表白成功

    练习:

    打印:

    *
    **
    ***
    ****
    *****

    1. i = 1
    2. n = int(input("请输入打印的层数:"))
    3. while i <= n:
    4. j = 1
    5. while j <= i: #打印一行
    6. print("*", end="") #end去除换行
    7. j += 1
    8. print() #一行结束换行
    9. i += 1
    10. 结果:
    11. 请输入打印的层数:5
    12. *
    13. **
    14. ***
    15. ****
    16. *****

    练习:

    99乘法表

    1. i = 1
    2. while i <= 9: #控制列数
    3. j = 1
    4. while j <= i: #打印一行
    5. print(f"{i}*{j}={i*j}\t",end="" ) #\t水平制表符(相当于8个空格)
    6. j += 1 #end取消换行
    7. i += 1
    8. print()
    9. 结果:
    10. 1*1=1
    11. 2*1=2 2*2=4
    12. 3*1=3 3*2=6 3*3=9
    13. 4*1=4 4*2=8 4*3=12 4*4=16
    14. 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
    15. 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
    16. 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
    17. 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
    18. 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

    for循环

    基础语法:

    for 临时变量 in 待处理数据集:

    循环满足条件时执行的代码

    轮询机制

    对一批内容进行挨个处理---待办事项逐个完成的机制

     遍历循环,一次取出
    无法定义循环条件,理论上,无法构建无限循环

    迭代容器中每一个元素

    1. 例:
    2. #while循环 缺点:不能对无索引下标的容器进行迭代(例:集合)
    3. list = [3,4,5,6]
    4. i = 0 #i作为索引下标
    5. while i < len(list):
    6. print(list[i])
    7. i +=1
    8. #for遍历
    9. for i in list: #i为临时变量,从list中取出元素依次放入i中
    10. print(i)
    11. 结果:
    12. 3
    13. 4
    14. 5
    15. 6
    16. 3
    17. 4
    18. 5
    19. 6
    20. 例:
    21. #for既能遍历有序的容器,也能遍历无须的
    22. set_01 = {1,2,3,"l love you"}
    23. for i in set_01:
    24. print(i)
    25. 结果:
    26. 1
    27. 2
    28. 3
    29. l love you

    练习:

     ”l love you“ 判断是否有o几个

    1. name = 'l love you'
    2. count = 0
    3. for i in name:
    4. if i == "o":
    5. count += 1
    6. print(f"一共有{count}个o")
    7. 结果:
    8. 一共有2个o

    不止能迭代容器,还可以完成普通循环

    rang语句

    range语句:获得一个简单的数字序列(生成一系列连续的整数)

    格式:

    range(start,end,step)

    1. 例:
    2. range(num) :[0,num) (左闭右开,序列0 - num-1
    3. 0开始,到5结束的数字序列,不包含5本身
    4. range5)===>[0,1,2,3,4] 默认从0开始
    5. range15)===>[1,2,3,4] 从1-5,不包含5
    6. range1102)===>[1,3,5,7,9]第三个数字代表数字之间的步长,不含10本身
    7. 特别:
    8. for i in range(100,0,-2): #step为复数,注意start与end也须反过来
    9. print(i)
    10. 结果:
    11. 100
    12. 98
    13. 96
    14. ...
    15. 10
    16. 8
    17. 6
    18. 4
    19. 2

    练习:

    1、求1-100的累加和(终止条件 1-100)

    1. 例:
    2. sum = 0
    3. for i in range(0,101):
    4. sum += i
    5. print(sum)
    6. 结果:
    7. 5050

    2、

    1. 例:
    2. num = int(input("请输入遍历终止值:"))
    3. count = 0
    4. for i in range(1, num+1):
    5. if i % 2 == 0:
    6. count += 1
    7. print(f"有{count}个偶数")
    8. 结果:
    9. 请输入遍历终止值:5
    10. 2个偶数

    for循环变量的作用域

    临时变量在编程规范上,作用范围,只限定在for循环内部
    实际上,for循环外部可以访问到,编程规范上,是不允许,不建议的

    例:(不规范)

     想要使用,在循环之前将该变量定义

    1. 例:
    2. for i in range(5):
    3. print(i)
    4. print(i)
    5. 结果:
    6. 0
    7. 1
    8. 2
    9. 3
    10. 4
    11. 4
    12. i = 2
    13. for i in range(5):
    14. print(i)
    15. print(i) #所以建议不要用到临时变量
    16. 结果:
    17. 0
    18. 1
    19. 2
    20. 3
    21. 4
    22. 4

    for循环的嵌套使用

    空格缩进

    练习:

    for循环打印九九乘法表

    1. i = 1
    2. while i < 10:
    3. j = 1
    4. while j < i+1:
    5. print(f'{j}* {i} = {i * j}\t', end=' ')
    6. j += 1
    7. i += 1
    8. print()
    9. 1*1=1
    10. 2*1=2 2*2=4
    11. 3*1=3 3*2=6 3*3=9
    12. 4*1=4 4*2=8 4*3=12 4*4=16
    13. 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
    14. 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
    15. 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
    16. 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64
    17. 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81

    练习:

    # 打印几层:5
    #     *
    #    **
    #   ***
    #  ****
    # *****
    1. layer = int(input("请输入打印的层数:"))
    2. for i in range(1, layer+1):
    3. #先打印空格
    4. space_nums = layer - i #空格数 = 总行数 - 第几行(即 * 数)
    5. for j in range(space_nums): #或者(1,space_nums+1),两相同
    6. print(" ", end="")
    7. #打印 *
    8. for j in range(i): #j临时变量,两个j互不影响
    9. print("*", end="")
    10. print()
    11. 结果:
    12. 请输入打印的层数:5
    13. *
    14. **
    15. ***
    16. ****
    17. *****

    循环中断

    continue:终端本次循环,直接进入下一次循环

    break:直接结束循环,遇见break,直接全部gameover

    循环综合案例

         

    1. import random
    2. money = 10000
    3. for i in range(1, 21):
    4. score = random.randint(1, 10) #1-10的随机数生成
    5. if score < 5:
    6. print(f"员工{i}绩效为{score},不发工资")
    7. continue
    8. # 判断余额
    9. if money >= 1000:
    10. money -= 1000
    11. print(f"员工{i}发放工资1000,公司账户剩余{money}")
    12. else:
    13. print(f"当前余额剩余{money},不发了,下个月吧")
    14. break
    15. 结果:
    16. 员工1绩效为3,不发工资
    17. 员工2发放工资1000,公司账户剩余9000
    18. 员工3绩效为1,不发工资
    19. 员工4发放工资1000,公司账户剩余8000
    20. 员工5发放工资1000,公司账户剩余7000
    21. 员工6发放工资1000,公司账户剩余6000
    22. 员工7发放工资1000,公司账户剩余5000
    23. 员工8绩效为1,不发工资
    24. 员工9发放工资1000,公司账户剩余4000
    25. 员工10发放工资1000,公司账户剩余3000
    26. 员工11绩效为1,不发工资
    27. 员工12发放工资1000,公司账户剩余2000
    28. 员工13发放工资1000,公司账户剩余1000
    29. 员工14绩效为4,不发工资
    30. 员工15绩效为1,不发工资
    31. 员工16发放工资1000,公司账户剩余0
    32. 当前余额剩余0,不发了,下个月吧

    for……else

    同while......else

    else后面的代码:当循环正常结束之后要执行的代码·
    中途break,else下边缩进的代码不会执行
    中途continue,else下边缩进的代码会执行

  • 相关阅读:
    rust学习——泛型 (Generics)
    马克思主义基本原理
    接口测试常问面试题
    React小项目-在线计算器(下)
    【uboot】bootcmd和bootargs --举例nuc980 yaffs2以及imx6ul emmc
    SpringCloud Alibaba 简介
    如何在 vue3 中使用 jsx/tsx?
    荧光标记多肽FITC/AMC/FAM/Rhodamine/TAMRA/Cy3/Cy5/Cy7-Peptide
    Linux yum安装msql 8.0
    挑战杯 机器视觉人体跌倒检测系统 - opencv python
  • 原文地址:https://blog.csdn.net/Starry__Sky222/article/details/133321285