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`
---- 上次了解了 elif
- elif 就是 else + if
- 可以构成多分支语句
- 在某些分支上
- 啥都不做
- 就是pass
- 生活中有这种多分支吗????🤔
- 中国最早的「if 分支预测」
- 商朝人烤龟甲看裂纹:
if 裂纹顺
打仗吉
elif 裂纹乱
打仗凶
else
再烤一次
-
上古版条件分支
- 国家大事 全靠 if-else 决定
-
外国法律 什么样 呢?
- 也是if语句吗?
-
Code_of_Hammurabi
-
汉谟拉比法典由
- 序言
- 条文
- 结语
- 三部分组成
if 自由民挖自由民眼
挖你眼(以眼还眼)
elif 自由民打自由民牙
敲你牙(以牙还牙)
elif 自由民弄瞎奴隶眼
赔奴隶半价
- 整部法典 282 条
- 全是条件判断句式
- 堪称古代 “代码大全”
- 法典第一条
- 𒋳𒈠𒀀𒉿𒈝𒀀𒉿𒇴
- 𒌑𒌒𒁉𒅕𒈠
- 𒉈𒅕𒌓𒂊𒇷𒋗
- 𒀉𒁲𒈠
- 𒆷𒊌𒋾𒅔𒋗
- 𒈬𒌒𒁉𒅕𒋗
- 𒀉𒁕𒀝
- 倘自由民宣誓揭发自由民之罪
- 控其杀人而不能证实
- 揭人罪者应处死
if 工匠盖房塌了压死人
工匠处死
- 确保工程质量
if 商人被劫货
债务全免;
elif 自己经营亏
一分不能少
- 法典条文里
- 都是 条件语句
- 甲(未盈六尺)牧马吃庄稼
- 不当论、不赔偿
- 甲盗牛时六尺,关1年再量到六尺七寸
- 判完城旦(轻刑)
- 甲教唆乙(未盈六尺)杀人
- 乙免罪
- 甲磔(车裂)
- 为啥 ?
- 秦尺≈23cm
- 男:六尺五寸(≈1.50m) 为成年线
- 未盈六尺(≈1.38m) 基本免责
- 女:六尺二寸(≈1.43m) 为成年线
- 五尺二寸(≈1.20m)以下:完全无责
- 男:六尺五寸(≈1.50m) 为成年线
# 秦律刑事责任判断(简化版)
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 "无责任/免责"- 为什么不用年龄?
- 年龄没法快速核实
- 秦代没有出生证、身份证
- 户籍登记也不普及、易造假
- 基层官吏抓个人
- 问年龄全靠嘴说,没法验证
- 容易扯皮、徇私
- 身高是硬指标,一量就准
- 拿尺子一量
- 高就是高、矮就是矮
- 没争议、好执行
- 年龄没法快速核实
- 秦要的是高效、统一、可落地的司法标准
- 古人朴素认知
**长到一定高度
就有足够体力、心智去干大事(犯罪/服役)**
和现代刑事责任年龄逻辑一致
这就是 当年的 未成年人保护法
- 确保兵源充足
- 如果 迟到 三到五天
- 要被 上级口头批评
- 如果迟到六天到十天
- 则会被罚款一只盾牌
- 超过十天
- 则会被罚款一副甲胄
# 徭役迟到处罚判断程序
# 获取用户输入的迟到天数
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
- 两个人押注
- 合约存好钱
- 有人告诉合约“下没下雨”
- 合约执行:
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条件语句 包括
- if语句 还有 啥要
注意的吗?🤔 - 下次再说 👋
- 本文来自 oeasy Python 系统教程。
- 想完整、扎实学 Python,
- 搜索 oeasy 即可。





















