Skip to content

Latest commit

 

History

History
540 lines (402 loc) · 11 KB

File metadata and controls

540 lines (402 loc) · 11 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 0157
- 这是 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` 
---

if 条件判断

回忆

  • 上次了解了 elif
    • elif 就是 else + if
    • 可以构成多分支语句
  • 在某些分支上
    • 啥都不做
    • 就是pass
  • 生活中有这种多分支吗????🤔

甲骨文占卜

  • 中国最早的「if 分支预测」
    • 商朝人烤龟甲看裂纹:
if 裂纹顺 
	打仗吉
elif 裂纹乱 
	打仗凶
else 
	再烤一次
  • 上古版条件分支

    • 国家大事 全靠 if-else 决定
  • 外国法律 什么样 呢?

    • 也是if语句吗?

汉谟拉比法典

  • Code_of_Hammurabi

  • 汉谟拉比法典由

    • 序言
    • 条文
    • 结语
    • 三部分组成
if 自由民挖自由民眼
	挖你眼(以眼还眼)
elif 自由民打自由民牙
	敲你牙(以牙还牙)
elif 自由民弄瞎奴隶眼
	赔奴隶半价
  • 整部法典 282 条
    • 全是条件判断句式
    • 堪称古代 “代码大全”

第一条

  • 法典第一条
    • 𒋳𒈠𒀀𒉿𒈝𒀀𒉿𒇴
    • 𒌑𒌒𒁉𒅕𒈠
    • 𒉈𒅕𒌓𒂊𒇷𒋗
    • 𒀉𒁲𒈠
    • 𒆷𒊌𒋾𒅔𒋗
    • 𒈬𒌒𒁉𒅕𒋗
    • 𒀉𒁕𒀝

图片描述

  • 倘自由民宣誓揭发自由民之罪
    • 控其杀人而不能证实
    • 揭人罪者应处死
if 工匠盖房塌了压死人
	工匠处死
  • 确保工程质量

条文

if 商人被劫货
	债务全免;
elif 自己经营亏
	一分不能少
  • 法典条文里
    • 都是 条件语句

图片描述

真实案例

  1. 甲(未盈六尺)牧马吃庄稼
    • 不当论、不赔偿
  2. 甲盗牛时六尺,关1年再量到六尺七寸
    • 判完城旦(轻刑)
  3. 甲教唆乙(未盈六尺)杀人
    • 乙免罪
    • 甲磔(车裂)

图片描述

  • 为啥 ?

标准

  • 秦尺≈23cm
    • 男:六尺五寸(≈1.50m) 为成年线
      • 未盈六尺(≈1.38m) 基本免责
    • 女:六尺二寸(≈1.43m) 为成年线
      • 五尺二寸(≈1.20m)以下:完全无责
# 秦律刑事责任判断(简化版)
def is_liable(gender, height):
    # 秦尺1尺=23cm
    if gender == "男":
        adult = 6.5  # 六尺五寸
        minor = 6.0  # 六尺
    else:
        adult = 6.2  # 六尺二寸
        minor = 6.0
    if height >= adult:
        return "完全责任"
    elif minor <= height < adult:
        return "减轻责任"
    else:
        return "无责任/免责"
  • 为什么不用年龄?
    1. 年龄没法快速核实
      • 秦代没有出生证、身份证
      • 户籍登记也不普及、易造假
      • 基层官吏抓个人
      • 问年龄全靠嘴说,没法验证
      • 容易扯皮、徇私
    2. 身高是硬指标,一量就准
      • 拿尺子一量
      • 高就是高、矮就是矮
      • 没争议、好执行
  • 秦要的是高效、统一、可落地的司法标准
    • 古人朴素认知

**长到一定高度

就有足够体力、心智去干大事(犯罪/服役)**

和现代刑事责任年龄逻辑一致

这就是 当年的 未成年人保护法

  • 确保兵源充足

睡虎地秦简

  • 如果 迟到 三到五天
    • 要被 上级口头批评
  • 如果迟到六天到十天
    • 则会被罚款一只盾牌
  • 超过十天
    • 则会被罚款一副甲胄
# 徭役迟到处罚判断程序
# 获取用户输入的迟到天数
late_days = int(input("请输入徭役迟到天数:"))

# 根据迟到天数判断处罚规则
if late_days >= 3 and late_days <= 5:
    # 迟到3-5天:口头批评
    print("处罚结果:上级口头批评")
elif late_days >= 6 and late_days <= 10:
    # 迟到6-10天:罚款一只盾牌
    print("处罚结果:罚款一只盾牌")
elif late_days > 10:
    # 迟到超过10天:罚款一副甲胄
    print("处罚结果:罚款一副甲胄")
else:
    # 迟到不足3天:无处罚
    print("迟到天数不足3天,不予处罚")
  • 这是典型的多分支

图片描述

  • 如果遇到 连绵大雨等 不可抗因素
    • 除兴 劳役是会解除的

大泽乡

  • 陈胜
    • 本陈国贵族
    • 了解律法
  • 吴广
    • 鱼腹藏书
    • 夜半狐叫

图片描述

  • 利用 信息不对称
    • 公等遇雨
    • 皆已失期
    • 失期当斩

亡死,举大计亦死,等死,死国可乎?!

图片描述

  • 最终
    • 陈胜兵败 为司机所害
    • 吴广 被部将夺权 所害
  • 但是 革命
    • 已经燎原

约法三章

  • 平民刘邦
    • 先入咸阳
    • 与父老 约法三章:
      • 杀人者死
      • 伤人及盗抵罪

图片描述

  • 这律法
    • 比秦律简单的多
    • 也容易 让人能够明白
    • 也有条件语句的

图片描述

  • 总共三句
    • 杀人者死
    • 伤人者刑
    • 偷盗抵罪

科举制度

  • 巨型社会级
    • if-elif-else
if 考中秀才 
	见官不跪
elif 考中举人 
	可以当官
elif 考中进士 
	直接进体制顶层
else 
	回家种地
  • 整个古代中国的 上升通道
    • 就是 一套 巨型分支

兵法

  • 兵法 全是 if-elif-else
    • 《孙子兵法》就是 巨型条件判断
if 十倍于敌 
	围之
elif 两倍于敌 
	攻之
elif 相当 
	战之
else 
	跑
  • 军事指挥 = 实时动态
    • if-else 系统

定律

  • 开普勒、牛顿
    • 根据 数字关系
    • 总结出 物理学规律

图片描述

  • 人根据数据 推测公式、定律
  • 根据定律
    • 有各种 计算公式

计算公式

  • 将计算公式 写入电子表格

图片描述

  • 自动化 计算

多层嵌套

  • 先后次序
    • 形成 流程

图片描述

  • 实际情况是
    • 多用户 基于不同角色选择
    • 可能性很多

多角色

  • 不同角色 有 不同流程

图片描述

  • 生活中 面临各种选择

检查

  • 今天去医院
    • 先做检查
    • 看数据怎么说

图片描述

  • 基于数据 更科学

机器学习

  • 机器根据数据 生成 决策树

图片描述

权重 与 公式

  • 各种判定 都依赖于 数字和公式
    • 学生综合测评
    • 院系排名
    • 学校排名

图片描述

  • 各种决策 也都依赖于 数字和公式
    • 在哪里 限速多少
    • 是否应该 翻新道路
  • 数字和公式的背后
    • 是 代码

大模型

  • 再复杂的问题 就是 要的也是 答案
    • to be or not to be
    • yes or no
    • 真还是假
    • 但是 当我们 把一切 交给大模型

图片描述

  • 大模型 推理过程 是黑箱
    • 训练过程也是黑箱
    • 会有担心

路由模型

图片描述

  • 让适合的模型做适合的事情
def 总调度器(user_input):
    if 输入是文字问题 / 逻辑推理 / 写代码:
        return 大语言模型(用户输入)

    elif 输入是画图 / 做海报 / 生成图片:
        return 文生图模型(用户输入)

    elif 输入是语音 / 音频:
        return 语音模型(用户输入)

    elif 输入是视频 / 动态生成:
        return 视频生成模型(用户输入)

    else:
        return 通用大模型(用户输入)

代码即法律

  • 一切都在 计算机中 数字化
    • 行政 审批流程
    • 自动化 决策系统

图片描述

  • 计算机的工作过程 就是 执行程序
    • 预定目标的 一系列步骤
      • 可以通过代码 予以表达

智能合约

  • 代码即法律
    • Code is law

图片描述

  • 将条款以代码的方式
    • 写到公开的智能合约中

图片描述

  • 合约内容
    • 公开化
    • 且不可篡改

代码

  • 简易打赌合约
  • 完全是 if-else
    1. 两个人押注
    2. 合约存好钱
    3. 有人告诉合约“下没下雨”
    4. 合约执行:
if (下雨了 == 你猜的):
   钱给你
else:
   钱给对方
  • 这就是智能合约的本质
    • 没有中间人
    • 不能耍赖
    • 不能篡改
    • 满足条件自动执行
    • 完完全全就是 if-else 写死的法律
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

// 简单打赌智能合约
contract SimpleBet {
    // 两个人的地址
    address public player1;
    address public player2;

    // 赌什么:明天是否下雨
    bool public betOnRain;

    // 赌注金额
    uint256 public betAmount;

    // 阶段:未开始、已下注、已揭晓结果
    enum Stage { Idle, BetPlaced, ResultDecided }
    Stage public stage;

    // 开始打赌:player1 发起
    constructor() {
        player1 = msg.sender;
        stage = Stage.Idle;
    }

    // player2 加入,双方押上赌注
    function joinBet(bool _thinkWillRain) external payable {
        require(stage == Stage.Idle, "Already in progress");
        player2 = msg.sender;
        betOnRain = _thinkWillRain;
        betAmount = msg.value;
        stage = Stage.BetPlaced;
    }

    // 揭晓结果:外部告诉合约下没下雨
    function decideResult(bool didRain) external {
        require(stage == Stage.BetPlaced, "Not ready");

        // ↓↓↓ 这里就是核心:纯纯 if-else 判断!↓↓↓
        if (didRain == betOnRain) {
            // player2 猜对,赢走钱
            payable(player2).transfer(address(this).balance);
        } else {
            // player1 赢
            payable(player1).transfer(address(this).balance);
        }

        stage = Stage.ResultDecided;
    }
}

代码生成过程 也是法律

  • 代码里面 可以有明确的分工
    • 谁 正在 修改代码
    • 谁 负责 将修改汇总和确认
    • 谁 负责 最终将代码 合并

图片描述

  • 代码 的生成过程
    • 用数字化的方式 记录
  • 写代码的人的组织方式
    • 也是数字化的

总结🤔

  • 其实条件语句 很就有了
    • 律法
    • 历法
  • 今天的 很多决策
    • 都依赖于 数字 和 算法

图片描述

  • 我们写过 条件语句的程序
    • if条件语句 包括
      • if条件表达式
      • if语句执行体
    • 满足条件
      • 执行语句
  • if语句 还有 啥要 注意的吗?🤔
  • 下次再说 👋

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