📚前言
📒FDE系列内容总纲:
🚄前置课程列表:
阶段一:
【FDE系列】阶段1Day 1:AI 层级关系 --- 四个嵌套的圈-CSDN博客
【FDE系列】阶段1Day 2:AI 三阶段发展史 --- 会认 → 会判断 → 会创造-CSDN博客
【FDE系列】阶段1Day 3:符号 AI vs 机器学习 --- 两条路线的本质区别-CSDN博客
【FDE系列】阶段1Day 4:Transformer 的历史意义 --- 2017 年的分水岭-CSDN博客
【FDE系列】阶段1Day 5:本周复习与自测 --- 检验你的 AI 认知地基-CSDN博客
【FDE系列】阶段1Day 6:Transformer 架构 --- 一张图纸盖出千千万万栋楼-CSDN博客
【FDE系列】阶段1Day 7:LLM 本质 --- 文字接龙机器-CSDN博客
【FDE系列】阶段1Day 8:Token --- 模型眼中的最小单位-CSDN博客
【FDE系列】阶段1Day 9:AI 幻觉 --- 为什么会一本正经地胡说八道-CSDN博客
【FDE系列】阶段1Day 10:上下文窗口 --- 模型的记忆力上限 + 本周复习-CSDN博客
【FDE系列】阶段1Day 11:Prompt --- 给模型立规矩-CSDN博客
【FDE系列】阶段1Day 12:Memory --- 让模型记住上下文
【FDE系列】阶段1Day 13:RAG --- 给模型配图书管理员-CSDN博客
【FDE系列】阶段1Day 14:Tool Use --- 让模型动手操作-CSDN博客
【FDE系列】阶段1Day 15:MCP --- 统一的工具接口标准 + 第三周复习-CSDN博客
【FDE系列】阶段1Day 16:什么是 FDE --- 把 AI 变成客户结果的人-CSDN博客
【FDE系列】阶段1Day 17:FDE vs 传统实施 --- 三大本质区别-CSDN博客
【FDE系列】阶段1Day 18:FDE 三重身份 + C6 胜任力模型-CSDN博客
【FDE系列】阶段1Day 19:七阶段行动路径 + 行业经验的价值-CSDN博客
【FDE系列】阶段1Day 20:阶段总结与产出物 --- 第一阶段收官-CSDN博客
阶段二:
【FDE系列】阶段2:Day 21:Python 环境搭建 --- 写出你的第一行代码-CSDN博客
🚀阶段2·Day 22:变量、数据类型、条件判断 --- Python 的"记忆"和"判断"
FDE 学习系列教程 · 第二阶段 · 第 1 周 · Day 2 预计时长:2 小时 | 难度:★★☆☆☆ | 前置知识:Day 21(环境搭建)
📌 一句话目标:掌握 Python 如何存储数据(变量/数据类型)和做判断(if/elif/else),写出第一个有逻辑的小程序。
🧑🤝🧑 老哥开场白
兄弟,昨天环境装好了,跑出了第一行代码。今天进入正题------怎么让程序"记住东西"和"做判断"。
你学 AI 时知道 Agent 有 Memory 拼图------程序也得有"记忆"。变量就是程序的记忆单元。
判断更简单------"如果温度超过 80 度就报警",这就是 if 语句。今天把它搞懂。
👉 今天内容不难,但信息量大。变量/数字/字符串/布尔/if,五个概念。每学一个就打开 Python 交互模式试一下------边学边敲效果最好。
🎯 变量:程序的"储物箱"
📦 一句话说清
变量 = 给数据贴个标签。你把一个值放到内存里,贴个标签(变量名),以后用标签就能找到它。
# 把"王明"存起来,标签叫 name
name = "王明"
# 把 28 存起来,标签叫 age
age = 28
# 用的时候喊标签名就行
print(name) # 输出:王明
print(age) # 输出:28
🎭 类比
变量 = 快递柜的格子
name = "王明" → 把"王明"放进一个格子,格子上贴标签"name"
age = 28 → 把 28 放进另一个格子,格子上贴标签"age"
以后只要喊 name,它就给你"王明"
只要喊 age,它就给你 28
🔧 变量命名规则
✅ 可以用:
device_name = "A3" # 单词用下划线连
fault_count = 5 # 小写
user_name_2 = "李四" # 可以加数字
温度 = 25 # 中文也行(但不推荐)
❌ 不可以:
3name = "张三" # 不能数字开头
my-name = 28 # 不能有短横
class = "A3" # class 是 Python 关键字,不能当变量名
💡 FDE 建议:用英文下划线命名 ------
device_name、fault_count。后面调 API、对接系统时都是英文环境。
🔄 变量可以改
变量变量,重点在"变"。同一个标签,可以随时换里面的东西:
temperature = 25
print(temperature) # 25
temperature = 82 # 直接贴新值,旧的被覆盖
print(temperature) # 82
temperature = temperature + 3 # 还能自己更新自己
print(temperature) # 85
📊 四大基本数据类型
Python 里最主要的数据类型就四种。搞懂它们,后面写什么都有底。
| 类型 | 写法 | 是什么 | 能做什么 | FDE 怎么用 |
|---|---|---|---|---|
| 整数 int | 42、-5、0 |
整数 | 加减乘除 | 设备编号、故障次数 |
| 浮点数 float | 3.14、-0.5 |
带小数 | 精确计算 | 温度、价格、评分 |
| 字符串 str | "hello"、'你好' |
文字 | 拼接、截取、查找 | API 返回内容、用户输入 |
| 布尔 bool | True、False |
是/否 | 条件判断 | "温度超了没?""权限够不够?" |
🧪 用 type() 看类型
打开 Python 交互模式(终端输入 python 回车),逐行敲:
>>> type(42)
<class 'int'> # 整数
>>> type(3.14)
<class 'float'> # 浮点数
>>> type("hello")
<class 'str'> # 字符串
>>> type(True)
<class 'bool'> # 布尔值
💡 看到尖括号
<class 'int'>别懵,class在这里就是"类型"的意思。type()是你以后排查 bug 的神器------数据不对,先看类型。
🔢 整数和浮点数:数字家族
算术运算符
>>> 7 + 3 # 加
10
>>> 7 - 3 # 减
4
>>> 7 * 3 # 乘
21
>>> 7 / 3 # 除(结果永远是小数)
2.3333333333333335
>>> 7 // 3 # 整除(扔掉小数部分)
2
>>> 7 % 3 # 取余(7 除以 3 余几)
1
>>> 2 ** 3 # 幂(2 的 3 次方)
8
⚠️ 两个除法最容易混:
/正常除,结果带小数;//整除,只留整数部分。FDE 里算"每 100 条数据分一批,能分几批"就用//。
int 和 float 的小坑
>>> 0.1 + 0.2
0.30000000000000004 # 😳 怎么不是 0.3?
这不是 Python 的 bug,是所有计算机浮点数的通病(二进制存不下精确的 0.1)。
💡 涉及钱的场景别用 float 硬算,要么用整数存"分"(
price = 1999表示 19.99 元),要么用专门的decimal模块。知道有这回事就行,不用死磕。
📝 字符串:文字家族
字符串就是用引号包起来的文字。单引号、双引号都行:
name1 = "注塑机A3"
name2 = '注塑机A3' # 两种写法完全等价
# 文字里本身有引号怎么办?换一种引号包
sentence = "他说:'设备过热了'"
字符串拼接
>>> "设备:" + "注塑机A3"
'设备:注塑机A3'
>>> "=" * 20 # 字符串还能乘法!快速画分割线
'===================='
f-string:字符串里塞变量(超高频使用)
device = "注塑机A3"
temperature = 82.5
# 字符串前面加 f,花括号 {} 里放变量
msg = f"告警:{device} 当前温度 {temperature}℃"
print(msg)
# 输出:告警:注塑机A3 当前温度 82.5℃
📌 f-string 是写报告、拼日志、调 API 的必备技能 。只要在引号前加个
f,{变量名}就会自动变成值。这个语法今天必须练熟。
花括号里还能做计算、调函数:
>>> f"故障数:{3 + 2}"
'故障数:5'
>>> f"温度保留1位小数:{82.567:.1f}"
'温度保留1位小数:82.6'
常用字符串操作
s = " Device Fault: OVERHEAT "
len(s) # 长度(含空格):27
s.strip() # 去掉两头空格 → "Device Fault: OVERHEAT"
s.lower() # 转小写 → " device fault: overheat "
s.upper() # 转大写
s.replace(" ", "_") # 替换:空格变下划线
"OVERHEAT" in s # 判断包含关系 → True
s.split(":") # 按冒号切开 → [' Device Fault', ' OVERHEAT ']
这节也简单,老手可以略过。不过 strip() 和 split() 在清洗客户数据时天天用,扫一眼也不亏。
✅ 布尔值:True 和 False
布尔值只有两个:True(真) 和 False(假),注意首字母大写,没有引号。
它通常不是你手写的,而是比较出来的:
>>> 82 > 80
True
>>> 82 < 80
False
>>> 82 == 82 # 判断相等用两个等号!
True
>>> 82 != 80 # != 表示"不等于"
True
⚠️ 头号新手坑 :判断"等不等于"必须写
==(两个等号)。写一个=是赋值,意思是"把右边塞进左边",不是比较。
❌ 错误:
if temperature = 80: # 语法错误!= 是赋值
...
✅ 正确:
if temperature == 80: # == 才是比较
...
🔄 类型转换:四兄弟互转
int("42") # 字符串 → 整数:42
float("3.14") # 字符串 → 小数:3.14
str(42) # 数字 → 字符串:"42"
int(3.99) # 小数 → 整数:3(直接砍掉小数,不是四舍五入!)
int("abc") # ❌ 报错:文字没法变数字
💡 FDE 场景:从 API 或文件读进来的数字,经常是字符串
"82",不能直接比大小,要先int("82")转一下。这个坑你以后一定会踩,提前记住。
🔀 条件判断:让程序学会"看情况"
if:如果......就......
if 的中文就是"如果"。结构长这样:
temperature = 85
if temperature > 80:
print("⚠️ 温度超标!")
注意两个关键点:
-
条件后面有个冒号
: -
下一行要缩进 4 个空格(VS Code 按 Tab 会自动帮你缩进)
if 条件:
条件成立才做的事(缩进=从属关系)
⚠️ 缩进是 Python 的命根子 。其他语言用花括号
{}圈定代码块,Python 用缩进。同一级的代码必须对齐,少一个空格都报错。刚开始会不习惯,写两天就自然了。
if-else:二选一
temperature = 65
if temperature > 80:
print("⚠️ 温度超标!")
else:
print("✅ 温度正常")
else 不能单独用,它是 if 的"另一半"------if 不成立,就走 else。
if-elif-else:多选一
elif = else if,"否则如果"。可以接任意多个:
score = 76
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
程序从上往下挨个检查:
score >= 90? 否 ↓
score >= 80? 否 ↓
score >= 60? 是 → 打印"及格",后面的全部跳过
📌 Python 只会执行第一个命中的分支,命中后整个 if 结构直接结束。所以条件顺序要从严格到宽松,不能反过来。
🔗 逻辑运算符:and / or / not
需要同时满足多个条件时:
| 运算符 | 意思 | 例子 | 结果 |
|---|---|---|---|
and |
并且(两边都真才真) | True and False |
False |
or |
或者(一边真就真) | True or False |
True |
not |
取反 | not True |
False |
temperature = 85
vibration = 12
# 两个条件同时满足才报警
if temperature > 80 and vibration > 10:
print("🚨 严重告警:温度和振动双超标")
# 满足任意一个就关注
if temperature > 80 or vibration > 10:
print("📢 设备状态异常,请检查")
# not:把 True 变 False
is_running = False
if not is_running:
print("设备已停机")
🪆 嵌套 if:判断里套判断
temperature = 92
if temperature > 80:
print("温度超标")
if temperature > 90:
print("🚨 紧急!立即停机检查")
else:
print("⚠️ 安排巡检")
这里要拐个弯了,稍微费点脑子,但摸透了就豁然开朗------嵌套本质就是"大条件里再分小条件",跟你做故障排查的思路一模一样:先看有没有异常,有异常再分级。层级别超过三层,太深说明该拆了。
🛠️ FDE 实战:设备温度分级报警
把今天学的串起来。在 VS Code 新建 alarm.py,敲入:
# ===== 设备温度分级报警小程序 =====
# 模拟从传感器读到的数据(实际项目中这来自 API 或数据库)
device_name = "注塑机A3"
temperature = 87.3
vibration = 11.2
is_running = True
print("=" * 40)
print(f"设备巡检报告:{device_name}")
print("=" * 40)
if not is_running:
print("状态:⛔ 设备停机,本次跳过检测")
else:
print(f"状态:🟢 运行中")
print(f"温度:{temperature}℃")
print(f"振动:{vibration} mm/s")
# 温度分级判断
if temperature >= 90:
level = "紧急"
action = "立即停机,通知维修班"
elif temperature >= 80:
level = "严重"
action = "10 分钟内到场排查"
elif temperature >= 70:
level = "注意"
action = "加密巡检频次"
else:
level = "正常"
action = "无需处理"
print("-" * 40)
print(f"告警级别:{level}")
print(f"处置建议:{action}")
# 双指标联动
if temperature >= 80 and vibration >= 10:
print("-" * 40)
print("🚨 联动告警:温度+振动双超标,优先处理!")
print("=" * 40)
print("巡检结束")
运行 python alarm.py,观察输出。然后改这几个变量的值多跑几次:
-
temperature = 95→ 看是不是"紧急" -
temperature = 60→ 看是不是"正常" -
is_running = False→ 看是不是直接跳过检测 -
temperature = 85, vibration = 5→ 看联动告警还出不出现
💡 这就是真实 FDE 脚本的雏形:读数据 → 判断 → 输出结论。明天学了循环,就能一次巡检 100 台设备;后天学了字典,每台设备的数据能整整齐齐装在一起。
📝 本课小结
| 知识点 | 一句话记住 |
|---|---|
| 变量 | 给数据贴标签:name = "王明" |
| 命名 | 英文小写下划线:device_name |
| 四种类型 | int 整数 / float 小数 / str 文字 / bool 真假 |
| type() | 不确定类型时照妖镜 |
| f-string | f"温度是 {temp}℃",拼字符串神器 |
== vs = |
两个等号才是比较,一个等号是赋值 |
| if-elif-else | 多选一,从上往下,命中即走 |
| and / or / not | 并且 / 或者 / 取反 |
| 缩进 | 4 个空格,Python 的命根子 |
💡 今天最核心的认知:变量让程序有了"记忆",if 让程序有了"判断"。记忆 + 判断 = 程序逻辑的最小骨架。你写的每一个 FDE 脚本,骨架都是这两样。
📋 课后练习
-
类型辨识 :在交互模式里对
10、"10"、10.0、10 == 10分别用type()查看,把结果抄下来。想想它们为什么是四种不同的东西。 -
工单分级器 :写一个
ticket.py,定义变量response_minutes(响应时长,分钟)。规则:≤15 分钟"SLA 优秀",≤60 分钟"SLA 达标",否则"SLA 超时"。用 if-elif-else 打印结果,至少用三组不同的值测试。 -
改造报警脚本 :在今天的
alarm.py基础上,给振动也加一个分级(≥15 紧急 / ≥10 严重 / 其余正常),并让最终报告同时显示温度级别和振动级别。
💭 今日反思
今天哪些概念跟你的行业经验能对上号?(比如 SLA 分级、设备告警阈值)
缩进、
==、类型转换这三个坑,你踩了几个?把报错信息抄到笔记里------报错文本是以后最好的复习资料。
明天预告 :今天只能判断一台设备、一组数据。明天学循环 (让同样的逻辑跑 100 遍不喊累)和函数(把一段逻辑打包成"自定义命令",随用随调)。学完明天,你的代码就开始有"工程"的样子了。
FDE 学习系列教程 · 第二阶段 · 第 1 周 Day 2 · 完