Skip to content

Latest commit

 

History

History
247 lines (169 loc) · 6.58 KB

275-233736-调试循环.sy.md

File metadata and controls

247 lines (169 loc) · 6.58 KB
show version enable_checker
step
1.0
true

调试循环

回忆

这次继续使用循环 - 尝试持续输出时间

  • 然后想起以前的命令
    • cowsay
    • lolcat
    • figlet
  • 这次使用python做主循环
    • 并且把命令执行的结果整合了起来
  • 我们不但可以整合shell下命令输出的结果
    • 还可以整合其他语言比如c、java程序运行后输出的结果
    • 这也就是python被叫做胶水语言的原因
    • 可以把各种语言运行的结果粘合起来
    • 然后用循环不断地执行
  • 但是循环不应该总是死循环
    • 是否应该有个跳出循环的条件呢?
    • 这个帮助手册是怎么说循环的呢?🤔

帮助手册

  • 去帮助模式搜一下

图片描述

  • while 是一个 statement 语句
  • 这个语句会不断测试表达式
  • 如果为真的话
  • 就执行 suite
  • 如果这个测试直接给写成 True 就是死循环

死循环

图片描述

  • 死循环会没完没了地播放下去
  • 一般还是有条件的

满足条件

图片描述

  • 满足 while 的条件就可以继续

愚公移山

图片描述

图片描述

包办婚姻

图片描述

图片描述

持续改进

图片描述

图片描述

潜在结束条件

  • 永远循环下去是不存在的
  • 总有个潜在的结束条件
  • 比如系统崩了或者没电了
  • 总会结束下来
  • 永远这件事我觉得永远是不存在的
  • 永远循环下去也只是一种理想情况

图片描述

  • 全部替换会执行到文件的结束位置就结束

适中

  • 实际情况下
  • 我们倒水的时候
  • 不是说倒一下就完了 一点儿水 不够泡茶的
  • 但是也不是死循环 茶都到满了 再倒就溢出来了
  • 我们一直倒 一直倒 看到差不多了
  • 有个差不多这么个概念 就停了
  • 计算机没有差不多这个概念 想让他退出循环
  • 不倒了 就得给他一个明确的条件

图片描述

时钟

  • 闹钟本身是一个死循环 除非 发条没劲儿了
  • 时钟本身也是一个循环
  • 都有个截至条件
    • 文字替换完了 或者 取消了
    • 茶倒差不多了
    • 把闹钟给按了
    • 循环就结束了

图片描述

  • 我小时候玩过一个游戏
  • 叫做老狼老狼几点了

老狼

图片描述

  • 两个角色
  • 有一个狼还有其他的事别的小动物
  • 小动物问狼
    • “老狼老狼几点了”
  • 老狼回答
    • 从一点开始,
    • 随机一个数字加到时间上
    • 到 12 点的时候,老狼转身追捕

分析流程

图片描述

图片描述

编写代码

图片描述

  • 代码可以如下运行

图片描述

  • 但是有一点点小瑕疵
  • 你能看出来么?

代码修改

  • 老狼报时可能从 11 点直接跳到 13 点
  • 然后就会进入死循环
  • 所以条件有问题

图片描述

重新编码

图片描述

  • while 的条件已经改成了小于了
  • 任务达成!
  • while 特别适合而这种明确数字范围的遍历
  • 比如一个明确的列表
    • 其中某元素数量是固定的
    • 这样可以把这个元素全部删除

全部删除

图片描述

  • 只要能明确循环次数
  • while 就可以完成遍历过程
    • 从 1 到 100
  • 我们甚至可以
    • 遍历一下八卦

搜索

图片描述

图片描述

  • 大致范围就是从(9776)10到(9783)10

编码

图片描述

图片描述

  • 我们曾经输出过所有的 ascii 字符
  • 我们甚至能输出所有的中文字符
  • 8 次循环输出 8 个卦象
  • 次数不多
  • 这并不困难
  • 我们去调试一下

调试

图片描述

  • 第2句 循环判断
  • 第3句 输出文本
  • 第4句 循环变量自增
  • 第4句后,回到第2句进行循环判断
  • 那什么时候退出呢?

跳转

  • 当gua = 9784的时候
  • gua <= 9783 的值为 False
  • 直接跳出循环、

图片描述

  • 可以设置条件断点么?

条件断点

  • 条件断点也是断点
  • 只不过在满足条件的时候才会触发

图片描述

  • 当gua==9784的时候
  • 第二行的断点才会起作用

试运行

图片描述

  • 如果是八八六十四卦可以遍历么?
  • 可以自己研究一下

总结

  • 这次初步了解了循环的条件
  • 就是while后面的布尔型变量
    • 每次循环体执行完成后都会跳转到while这一行
    • 然后再去对循环条件进行判断
    • 这就循环起来了
  • 我们也可以在断点上加判断
    • 满足条件的时候才断
    • 所以叫做条件断点
  • 一些pdb3的命令
    • print输出一次
    • display 每次都显示
    • b n 设置断点
    • c 跳转到断点
    • tbreak n,bool 设置条件断点
  • 循环语句可以做点什么好玩的么?🤔
  • 下次再说 👋