Skip to content

Latest commit

 

History

History
129 lines (91 loc) · 2.79 KB

File metadata and controls

129 lines (91 loc) · 2.79 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 0189
- 这是 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` 
---

二重循环

回忆

  • 上次研究了颜色的规律输出
  • 其实在规律的基础上加上random就是紊乱
  • 有序和无序其实是相生的
  • 二重循环是否可以优化呢?🤔

图片描述

  • 我们来看这个问题

完全平方数

  • 我们想计算200以内所有的完全平方数
    • 什么是完全平方数?
      • 本身为其他数字平方的数字
  • 怎么通过编程得到呢??

图片描述

  • 不要翻页尝试自己做出来

循环起来

  • 我们可以尝试
    • 从1-200
    • 每个数字测试一下
    • 判断他是不是一个完全平方数

图片描述

  • 那怎么进行判断呢?

判断

图片描述

  • 这个运行结果正确么?

结果

  • 结果是正确的
    • 但过程需要循环200遍
    • 没有必要循环那么多次

图片描述

  • 可以优化么?

尝试优化代码

  • 这样子确实效率更高
for num in range(200):
	if num**2 > 200:
		break
	print(num**2)
  • 原来是
    • 穷举所有的数
    • 分析数字是否为平方数
  • 现在是
    • 遍历基础数字
    • 分析平方是否小于200
  • 结果也是正确的
    • 超200的时候
    • 就break了
    • 但每次都得判断

图片描述

  • 需要寻找更合适的边界

观察

图片描述

  • 导入math函数

    • 计算200的平方根
  • 然后编写代码

图片描述

  • 这种方法更好
    • 尤其是 数据值 非常大的时候
  • 这让我想到一句python之禅

禅意

  • 最长的这句

图片描述

  • (解决问题)应该有,最好只有,一种明显的方法。

总结

  • 这次我们算了完全平方数
  • 有两种方法
    • 遍历平方数
    • 遍历平方根
  • 经过比较
    • 一重循环不一定比二重循环差
    • 算法确实是可以优化的
  • 优化之后
    • 时间和空间都能节省
    • 是很有意思的
  • 那还有比二重循环更复杂的循环么?🤔
  • 下次再说!👋

图片描述

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