Skip to content

Latest commit

 

History

History
231 lines (165 loc) · 4.98 KB

File metadata and controls

231 lines (165 loc) · 4.98 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 0179
- 这是 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` 
---

for循环

回忆

  • 上次主要了解的是 continue 关键字
  • continue 是一个语句 statement
    • 她的作用是结束本轮循环
    • 回到循环条件语句
    • 继续循环
  • 和 break 那种直接跳出循环的凌厉作风不同

图片描述

  • 帮助手册说除了 while 循环语句之外
  • 还有一种 for 循环语句
  • for 是什么意思?🤔

for

图片描述

图片描述

照猫画虎

图片描述

  • 这事情其实 while 也能做
  • 怎么做?

while

图片描述

  • 同样的事情 while 需要 4 行
  • for 只用两行
  • 关键就在于 range(3)
  • 什么是 range(3)?

range

图片描述

  • range 函数可以得到一个类似于元组的东西
  • 然后让这个 for 遍历这个元组中的元素

range 细节

图片描述

  • 如果只有一个参数
    • 从零开始
    • 前闭后开
  • 如果有两个参数
    • 前闭后开
  • 如果有三个参数
    • 中间增量为第三个参数
  • 我们再来看一个例子

进步

图片描述

  • 我们做一个具体的练习
  • 我们每天进步1%
    • 那么有一年进步了多少
  • 每天退步1%
    • 一年退步了多少?

进步

  • 输入法在桌面
    • 点击输入法之后
    • 右键右下角小图标
dayup = 1
dayfactor = 0.01
for day in range(365):
	dayup *= (1 + dayfactor)
print("进步幅度{:.3f}".format(dayup))
  • 这里的{:.3f}指的是保留三位有效数字

  • 别小看这个例子哦

  • 人工智能也是

    • 由各种初始值
    • 各种因子等等
    • 一步步具有的智能
  • 有进步就有退步

退步

  • 同样可以得到退步幅度
  • 每天退步一点点
dayup = 1
dayfactor = 0.01
for day in range(365):
	dayup *= (1 - dayfactor)
print("退步幅度{:.3f}".format(dayup))
  • 如果是想要让这个进步幅度
  • 通过手动输入应该如何呢?
  • 如果是五年不断进步又会如何呢?
  • 如果进步5天,休息两天又会如何呢?

药方输出

s_fangzi = "麻黄9g 炙甘草6g 杏仁9g 生石膏15-30g(先煎) 桂枝9g 泽泻9g 猪苓9g 白术9g 茯苓15g 柴胡16g 黄芩6g 姜半夏9g 生姜9g 紫菀9g 冬花9g 射干9g 细辛6g 山药12g 枳实6g 陈皮6g 藿香9g"
l_drugs = s_fangzi.split(" ")
i_num = 0
for s_drug in l_drugs:
    i_screen_len = 0
    for c in s_drug:
        if 0x4e00 <= ord(c) <= 0x9fff:
            i_screen_len += 2
        else:
            i_screen_len += 1
    if i_screen_len >= 8:
        s_drug = s_drug + "\t"
    elif i_screen_len >= 4:
        s_drug = s_drug + "\t\t"
    print(s_drug,end='')
    if i_num % 4 == 3:
        print()
    i_num = i_num + 1
  • 这个药方输出的过程中
    • 根据字体 长度判断
    • 补齐 缩进

图片描述

  • 分类讨论

回忆

图片描述

  • 我们输出0-127等数字对应的chr的时候
  • 0好像被黑暗森林所吞没

对应输出

  • 如果用序号:字符的方式

图片描述

  • 可以找到0这个字符

  • 问题出在哪里呢?

  • esc的时候

    • 他从正常输出序列逃逸了
    • 一直到1的时候才回来
  • 那我要跳过27号字符

ESC

图片描述

  • 输出结果

图片描述

  • 0和前面的符号并没有被黑暗森林所吞没

  • 而是跟着esc键逃逸了😁

  • 比如一个明确的列表

    • 其中某元素数量是固定的
    • 这样可以 只保留 一个元素

只留一个

图片描述

evaluateequ.py

  • 这个程序计算数列
    • 1/x+1/(x+1)+1/(x+2)+ ... +1/n
    • 设 x = 1,n = 10
#!/usr/bin/env python3
sum = 0
for i in range(1, 11):
    sum += 1.0 / i
    print("{:2d} {:6.4f}".format(i , sum))
  • 运行程序

图片描述

  • 可以让n不断增加
    • 观察效果

总结

  • 这次主要了解的是 for 循环语句
  • for循环和while循环可以相互转化

图片描述

  • for 循环可以遍历
    • range 对象
    • list 对象
  • for还能干点什么好玩的么?
  • 下次再说 👋

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