Skip to content

Latest commit

 

History

History
460 lines (350 loc) · 8.4 KB

File metadata and controls

460 lines (350 loc) · 8.4 KB
Error in user YAML: (<unknown>): could not find expected ':' while scanning a simple key at line 3 column 1
---
- oeasy Python 0156
- 这是 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` 
---

比较运算符

回忆

  • 上次思考了 条件的次序
    • 都有的 子判断
      • 可以 提到外面
    • 概率低的 判断
      • 可以 放在前面
  • 二分法
    • dichotomy [daɪˈkɒtəmi]
    • dicho-
      • 来自di-的希腊语形式
    • -tomy
      • 砍,切
      • 词源同 atom, anatomy
      • 即切成两半的

图片描述

  • 问题就是 嵌套层次太多了
    • 可以 搞扁平了吗?🤔

回忆

  • 这 if 条件本质上是分段
bmi = 25
if bmi >= 25:
    if bmi >= 30:
        print("Obese!")
    else:
        print("Overweight!")
else:
    if bmi >= 18.5:
        print("Normal!")
    else:
        print("Underweight!")
  • 先 从中间 分开
    • 然后 左右再分开

图片描述

  • 层层深入

查询 if

  • elif 其实就是 else + if
    • 和 if 并排

图片描述

  • 可以 从轻到重
    • 一段段来吗?

多分支

  • 嵌套条件语句 就变成
    • 多分支条件语句
bmi = 35
if bmi <= 18.5:
    print("Underweight!")
elif bmi <= 25:
    print("Normal!")
elif bmi <= 30:
    print("Overweight!")
else:
    print("Obese!")

  • 层层深入 变成了
    • 多个分支

图片描述

  • 但是 可能经历 3次判断
    • 原来最多经历2次

更多分支

  • 体重过轻 和 体重过重
    • 其实 也 可以细分

图片描述

  • 可各个分成 三个级别

图片描述

  • 这依然 不用嵌套
    • 用多分支就搞定了
  • 判断 同一个变量
    • 最好 不用 嵌套
    • 而用 多分支
  • 分类之后 可以 筛出结果

老问题

  • elif 可以 将分支细化

图片描述

阶梯电价/水价

  • 情况不同
    • 分类讨论
    • 处理策略

图片描述

  • 来看个例子

一元二次方程

  • quadratic equation
    • 二次方程式
#!/usr/bin/env python3
import math

# 输入系数 a, b, c
a = int(input("Enter value of a: "))
b = int(input("Enter value of b: "))
c = int(input("Enter value of c: "))

# 计算判别式 delta
delta = b**2 - 4*a*c

# 三种情况判断
if delta < 0:
    print("Roots are imaginary (虚根,无实根)")
elif delta == 0:
    # 只有一个实数根(重根)
    root = -b / (2 * a)
    print(f"Roots are real and equal: x = {root}")
else:
    # 两个不相等的实数根
    root1 = (-b + math.sqrt(delta)) / (2 * a)
    root2 = (-b - math.sqrt(delta)) / (2 * a)
    print(f"Root 1 = {root1}")
    print(f"Root 2 = {root2}")
  • 实根

图片描述

  • 虚根

图片描述

决策过程

  • 决策过程
    • 像 一棵树
    • 有很多的 分支

图片描述

  • 决策树

宇宙速度

图片描述

  • 根据数值的不同
    • 就会出现不同的结果

图片描述

经典 十二分支

  • 十二星座

图片描述

  • 十二生肖

图片描述

  • 同一个人
    • 使用不同的 分类方法
    • 会有不同的 解释体系

颗粒度

  • 一年可以分为
    • 四季
    • 十二月
    • 二十四节气

图片描述

  • 节气是如何划分的呢?

历法

  • 根据日晷
    • 测定时辰

图片描述

  • 根据圭表
    • 掌握了 太阳周期 和 四季分布的规律

精确时间

  • 清明前后
    • 种瓜种豆
  • 芒种
    • 有芒之谷类作物可种
    • 过此即失效
  • 这些都是 if语句

图片描述

  • 掌握了 植物生长规律
    • 从而 进入了农业社会

七十二物候

  • 七十二物候
    • 1节气 = 3候
    • 1候 = 5天

图片描述

春季(立春—谷雨)

  1. 立春
    • 一候东风解冻
    • 二候蛰虫始振
    • 三候鱼陟负冰
  2. 雨水
    • 一候獭祭鱼
    • 二候鸿雁来
    • 三候草木萌动
  3. 惊蛰
    • 一候桃始华
    • 二候仓庚鸣
    • 三候鹰化为鸠
  4. 春分
    • 一候玄鸟至
    • 二候雷乃发声
    • 三候始电
  5. 清明
    • 一候桐始华
    • 二候田鼠化为鴽
    • 三候虹始见
  6. 谷雨
    • 一候萍始生
    • 二候鸣鸠拂其羽
    • 三候戴胜降于桑

夏季(立夏—大暑)

  1. 立夏
    • 一候蝼蝈鸣
    • 二候蚯蚓出
    • 三候王瓜生
  2. 小满
    • 一候苦菜秀
    • 二候靡草死
    • 三候麦秋至
  3. 芒种
    • 一候螳螂生
    • 二候鵙始鸣
    • 三候反舌无声
  4. 夏至
    • 一候鹿角解
    • 二候蜩始鸣
    • 三候半夏生
  5. 小暑
    • 一候温风至
    • 二候蟋蟀居壁
    • 三候鹰乃学习
  6. 大暑
    • 一候腐草为萤
    • 二候土润溽暑
    • 三候大雨时行

秋季(立秋—霜降)

  1. 立秋
    • 一候凉风至
    • 二候白露降
    • 三候寒蝉鸣
  2. 处暑
    • 一候鹰乃祭鸟
    • 二候天地始肃
    • 三候禾乃登
  3. 白露
    • 一候鸿雁来
    • 二候玄鸟归
    • 三候群鸟养羞
  4. 秋分
    • 一候雷始收声
    • 二候蛰虫坯户
    • 三候水始涸
  5. 寒露
    • 一候鸿雁来宾
    • 二候雀入大水为蛤
    • 三候菊有黄华
  6. 霜降
    • 一候豺乃祭兽
    • 二候草木黄落
    • 三候蛰虫咸俯

冬季(立冬—大寒)

  1. 立冬
    • 一候水始冰
    • 二候地始冻
    • 三候雉入大水为蜃
  2. 小雪
    • 一候虹藏不见
    • 二候天气上升地气下降
    • 三候闭塞而成冬
  3. 大雪
    • 一候鹖鴠不鸣
    • 二候虎始交
    • 三候荔挺生
  4. 冬至
    • 一候蚯蚓结
    • 二候麋角解
    • 三候水泉动
  5. 小寒
    • 一候雁北乡
    • 二候鹊始巢
    • 三候雉始雊
  6. 大寒
    • 一候鸡乳
    • 二候征鸟厉疾
    • 三候水泽腹坚
  • 古人指导播种、耕耘、收获、畜牧的“自然日历”
  • 天人合一:体现人与自然节律同步的哲学思想

问题

  • 我要做这么个多分支

图片描述

  • 判断 num
    • 大于0时
      • 报告大于零
    • 小于0
      • 报告小于零
    • 当 num == 0 的时候
      • 什么也不干

代码和问题

  • 代码如下
num = -23
if num > 0:
    print("more than 0")
elif num == 0:
	
else:
    print("less than 0")
  • 报了一个缩进的错误
    • 可是我就想要 num == 0 时
    • 什么都不做啊?

pass

  • 有这么一个关键字 pass
    • 他的意思就是啥都不做

图片描述

  • 就像玩牌的时候
    • 什么都不出
    • pass 直接过

修改代码

num = -23
if num > 0:
	print("more than 0")
elif num == 0:
	pass
else:
	print("less than 0")
  • 帮助手册里究竟是怎么说的呢?

手册

  • pass 是空运算
    • 当被执行的时候
    • 没有任何事情发生
    • 他是有用的占位标志

图片描述

  • 当需要一个语句
    • 但是并不做任何事的时候
    • 就可以用 pass

保留位置

  • 在num == 0的时候
    • 先把写代码的位置空出来
num = -23
if num > 0:
	print("more than 0")
elif num == 0:
	pass
	#print("equals 0")
else:
	print("less than 0")
  • 这就是pass

总结

  • 这次了解了 elif
    • elif 就是 else + if
    • 可以构成多分支语句

图片描述

  • 在某些分支上
    • 啥都不做
    • 就是pass
  • 生活中 有这种 多分支 吗????🤔
  • 下次再说 👋

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