show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次研究了 限号规则 真的太复杂啦
- 你还见过什么复杂的规则吗?
- 可以做成python程序吗?
- 生活中很多数值都是天然有范围限制的
- 对于这些数值 应该如何判断呢?
- 人类的身高体重大致是有个合理范围的
- 再高也没见过 4 米以上的
- 再低也没见过 0.2 米的以下的
- 相差在 10 倍以内
- 属于一个数量级
- 比恒星质量的差距小得多
- 生命的发展
- 有其自身的规律
- 这是客观的的规律
- 发展的过程
- 不光是人类个体身高
- Python 的版本演化也有自身的节奏
- Implementation started - December, 1989
- Internal releases at Centrum Wiskunde & Informatica, 1990
- 0 年代
- Python 0.9.0 - February 20, 1991
- Python 0.9.1 - February, 1991
- Python 0.9.2 - Autumn, 1991
- Python 0.9.4 - December 24, 1991
- Python 0.9.5 - January 2, 1992
- Python 0.9.6 - April 6, 1992
- Python 0.9.8 - January 9, 1993
- Python 0.9.9 - July 29, 1993
- 1 年代
- Python 1.0 - January 1994
- Python 1.2 - April 10, 1995
- Python 1.3 - October 12, 1995
- Python 1.4 - October 25, 1996
- Python 1.5 - December 31, 1997
- Python 1.6 - September 5, 2000
- 2 年代
- Python 2.0 - October 16, 2000
- Python 2.1 - April 15, 2001
- Python 2.2 - December 21, 2001
- Python 2.3 - July 29, 2003
- Python 2.4 - November 30, 2004
- Python 2.5 - September 19, 2006
- Python 2.6 - October 1, 2008
- Python 2.7 - July 3, 2010
- 3 年代
- Python 3.0 - December 3, 2008
- Python 3.1 - June 27, 2009
- Python 3.2 - February 20, 2011
- Python 3.3 - September 29, 2012
- Python 3.4 - March 16, 2014
- Python 3.5 - September 13, 2015
- Python 3.6 - December 23, 2016
- Python 3.7 - June 27, 2018
- Python 3.8 - October 14, 2019
- Python 3.9 - October 7, 2020
- 初期的时候,变化剧烈,迅速
- 后期,相对稳定,缓慢
- 创新减少,稳定提升
- 3 之后进入了稳定期
- 人们提交各种请求希望进化 python
- 但是都希望只添加自己需要的特性
- 其他的不要动
- 新版本迭代的时间
- 在 18 个月到 24 个月之间
- 太短了,更新频繁,跟不上
- 太长了,新特性没有了实效性
- 都是在一个范围内
- 具体到生命的各种指标也是
- 各种数据都有个大致的参考范围
- 太高了
- 或者太低了
- 都不好
- 在正常范围内比较健康
- 其实各种数据都有一个大致范围
- 比如 bmi
- 如果我只想判断他是否属于 Normal range
- 应该如何
height = float(input("height(m):"))
weight = float(input("weight(kg):"))
bmi = weight / (height*height)
if (18.5 < bmi) and (bmi < 24.9):
print("healthy!")
- 前后两个比较结果是布尔类型变量
- 进行逻辑与运算
- 得到结果作为 if 的条件
- 这个代码其实可以改写得更明确
- 这样就可以确认 bmi 在(18.5,24.9)这个区间里面
- 非常明确
- 当然也可以有闭区间比如[18.5,24.9]
- 通过 >= 、<= 实现
- 这些在手册上写了么?
- 以下两个是等价的
- x < y <= z
- x < y and y <= z
- 如果 y 是表达式
- y 只被计算一次
- 如果 x < y 是假的
- 那么 y <= z 就不被计算了
- 其实很多东西都在一个区间范围内
- 太大了不行
- 太小了也不行
- 想要满足一定的要求
- 大致应该在一定的区间
- 万事万物其实道理都是一致的
- 比如做饭也是这样
- 中餐做饭讲究火候
- 火是火的文武
- 候是时间短长
- 都很有讲究
- 这两个是要配合起来的
- 先说火
- 分为旺火、文火
- 爆炒煎炸讲究外焦里嫩
- 火就要旺
- 讲究又脆又嫩
- 文火也有文火的用处
- 比如慢炖煲粥熬汤
- 虽然微弱单慢慢持续
- 煨到酥烂脱骨
- 这些虽然不像宇宙速度那么精密
- 但是也是要用心才能掌握的
- 光看菜谱不行
- 要反复地失败才能掌握
- 是经验的总结
- 蒸米饭为什么要搁一指的水
- 怎么样才能真正把米饭蒸得好吃
- 是很讲究火候的
- 包括搞对象其实也讲究个火候
- 古话说来得早不如来得巧
- 巧指的就是不早不晚
- 时机把握的其实是一个时间窗口
- 在合适的时间出现
- 用合适的步伐同行
- 目的地也是同一个方向
- 很难不走到一起
- 不光要努力实践
- 也要掌握理论知识
- 就像学 python 一样
- 我们回过头看看
- python 手册还说了什么?
- 好家伙
- 赶紧试试
- 真的可以
- 看起来是把 4 个比较运算符的结果做了逻辑与 and 运算
- 手册还说了什么
- 不光是一个方向
- 另一个方向也可以
- 甚至 1<5>2<4>3 也会输出 true
- 看来这种只要相邻两个大小没比错就会输出 true
- 同样的内容有两种方式表示
- 直接把不等式连起来
- 用 and 把不等式连起来
- 哪种方式好呢?
- 既然他们的逻辑上是等价的
- 那么就要看哪种方式更可读
- 我觉得连成一个条件的情况下
- 可读性更好
- 所以要使用连在一起的方式
- Readability counts
- 可读性很重要
- 我们可以优化代码
ch = input("please input one character:")
if ord('a')<=ord(ch) and ord(ch)<=ord('z'):
print("lower")
if ord('A')<=ord(ch) and ord(ch)<=ord('Z'):
print("upper")
if ord('0')<=ord(ch) and ord(ch)<=ord('9'):
print("number")
- 这个程序可以判断输入字符是什么类型
- 显然 and 的形式,可以从写法上优化一下
ch = input("please input one character:")
if ord('a') <= ord(ch) <= ord('z'):
print("lower")
if ord('A') <= ord(ch) <= ord('Z'):
print("upper")
if ord('0') <= ord(ch) <= ord('9'):
print("number")
- 这样子还可以再优化么?
- 其实没有必要使用 ord 序号函数的吧?
- 去掉试试
ch = input("please input one character:")
if 'a' <= ch <= 'z':
print("lower")
if 'A' <= ch <= 'Z':
print("upper")
if '0' <= ch <= '9':
print("number")
- 既优化了写法
- 又优化了效率
- 这就是最终的代码么?
- 其实还是可以进行一些容错处理
- 要确保输入的确实是一个字符
- 这次学习了多个比较运算符的拼合
- 多个比较运算符就像是分别运算
- 最后再取逻辑与 and 运算
- 除了逻辑与之外还有什么逻辑运算符么?
- 还有逻辑非啊
- 那除了逻辑非呢???🤔
- 下次再说 👋