Skip to content

Latest commit

 

History

History
118 lines (86 loc) · 2.74 KB

File metadata and controls

118 lines (86 loc) · 2.74 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0357
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

调试循环

回忆

  • 上次深入了循环

    • 渐渐改变了 python图标的颜色
  • 可以找一个你自己的图标

    • 然后也改改颜色吗?
  • 什么时候开始有循环这种流程的呢?🤔

回顾历史

  • 在1940、1950年代
    • 编程主要用汇编语言
    • 最多写一些宏(macro)
    • 还是一段段的指令

图片描述

  • 有跳转JUMP
    • 使用条件跳转指令
      • 实现循环

图片描述

高级语言

  • 1957年
    • IBM 发明了 最早的高级语言fortran
    • FORmula TRANslator
    • 公式翻译器
      • 可以把语句翻译成cpu指令

图片描述

  • 这对于 数学家 和 工程师 特别友好
    • 不用记那些 和 机器cpu相关的 各种指令
    • 写公式就好
    • Fortran 会自动 翻译成 机器的二进制代码

图片描述

  • 这在当时有巨大的文化冲击
    • 可以用循环语句 直接 编程?
  • 不过今天循环语句已经是高级语言的标配了

找到小变量池的边界

图片描述

  • 回忆一下小变量池
    • 池子里面的本来就有空间
      • 引用过来就行
    • 池子外面的都要重新申请空间
  • 怎么遍历呢?

图片描述

  • 如果地址相等
    • 就在小变量池里

图片描述

  • 尝试自己编写

编写代码

for i in range(-333,333):
    a = eval(str(i))
    b = eval(str(i))
    print(a,id(a),id(b))
  • 确实可以发现分界线

图片描述

  • 可以把小变量池里面变量都输出出来吗?

修改

for i in range(-333,333):
    a = eval(str(i))
    b = eval(str(i))
    if a is b:
        print(a,",",end="")

图片描述

  • 这个代码可以优化么?
  • 这个要靠你自己来完成了!

总结

  • 这次深入了循环
  • 明确了循环的核心
    • 循环条件
    • 只要满足循环条件就会不断循环
    • 甚至死循环
  • 循环中可以执行外部命令吗?🤔
  • 下次再说 👋

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。