Day 03 / 共 68 天 · 阶段 1 编程地基
Python 极速入门①
昨天(Day 02)装好了 Python 灶台;今天正式开写代码——变量、数字、字符串、布尔,以及让程序"会拐弯"的 if 判断和"会重复"的循环。这四样是所有程序的地基,也是后面调大模型、写 Agent 时天天用的基本功;明天(Day 04)会在此之上学函数和数据结构。
📍 你在阶段 1(编程地基 D3-9)的位置
D03 Python①→
D04 Python②→
D05 Python③→
D06 命令行&Git→
D07 调 API
💡 用一个类比兜住今天(今天全程沿用「整理一间收纳仓库」的世界观)
写程序 = 管理一间收纳仓库。变量 = 贴了标签的收纳盒(盒子上写"苹果数量",里面放个 3);数据类型 = 盒子里装的东西种类(数字、文字、是否);if 判断 = 仓库门口的分拣员(看情况决定往哪走);循环 = 传送带(同一个动作重复做很多遍)。今天你就是这间仓库的管理员,学会给盒子贴标签、按规则分拣、用传送带批量干活。
L01
变量:贴了标签的收纳盒
🤔 痛点程序要记住东西——用户名字、商品价格、对话历史……总不能每次都重打一遍。怎么把一个值"存起来、随时能取"?
💡 本质用变量:给一个值起个名字存起来,以后用名字就能取。就像收纳盒贴个标签"苹果数量",里面放数字 3;要用时喊标签名,不用去翻盒子里到底是啥。
# = 不是"等于",而是"把右边的值,装进左边这个名字"
apple_count = 3 # 贴标签"apple_count"的盒子,装进数字 3
user_name = "小明" # 另一个盒子,装进文字"小明"
print(apple_count) # 取出来看看 → 3
print(user_name) # → 小明
apple_count = 5 # 盒子里的东西可以随时换掉(这就叫"变量"——值会变)
print(apple_count) # → 5
👶 起名字的规矩变量名用英文字母、数字、下划线,不能用数字开头,不能有空格。见名知意最重要:
price 比 p 好,user_age 比 x1 好。多用小写 + 下划线(叫 snake_case),这是 Python 的习惯。📝 举个例子:变量让程序"改一处、全生效"
想象商品打折:如果价格到处硬写
100,改价要满仓库翻;但若 price = 100 存进盒子,后面都用 price,以后只改这一处,整个程序自动更新。这就是变量最大的价值:一处定义,处处引用。L02
数字与运算
🤔 痛点程序总要算账:总价、平均分、剩余额度。数字在 Python 里怎么写、怎么算?
💡 本质Python 里数字分两种:整数 int(3、-5,盒子里装整个的苹果)和小数 float(3.14、9.9,能切开的量)。运算符号跟计算器差不多,只有几个要单独记。
a = 10
b = 3
print(a + b) # 加 → 13
print(a - b) # 减 → 7
print(a * b) # 乘(星号是乘号)→ 30
print(a / b) # 除 → 3.3333...(除法结果是小数 float)
print(a // b) # 整除(只要商的整数部分)→ 3
print(a % b) # 取余数(余数是几)→ 1
print(a ** b) # 幂(10 的 3 次方)→ 1000
📝 举个例子:% 取余的经典用途——判断奇偶
一个数
% 2 如果等于 0,说明能被 2 整除 = 偶数;等于 1 = 奇数。8 % 2 → 0(偶),7 % 2 → 1(奇)。这个"取余判断整除"的技巧,后面循环里超常用。小陷阱:
/ 的结果永远是小数(10/2 得 5.0 不是 5)。想要整数结果用 //。分不清时,先都用 /,后面需要再说。L03
字符串:一段文字
🤔 痛点跟大模型打交道,输入输出全是文字——问题、回答、提示词。文字在程序里怎么存、怎么拼、怎么塞变量进去?
💡 本质字符串(string)就是"一段文字",用引号包起来(单双引号都行)。它是 AI 时代最重要的数据类型——你给模型的 prompt、模型给你的回答,本质都是字符串。
greeting = "你好"
name = "小明"
# 方法1:用 + 号把两段文字拼起来(像串珠子)
print(greeting + "," + name) # → 你好,小明
# 方法2:f-string(推荐!)在字符串前加 f,用 {} 塞变量进去
age = 25
print(f"{name} 今年 {age} 岁") # → 小明 今年 25 岁
# 一些常用招式
text = "Hello Agent"
print(len(text)) # len = 长度(几个字符)→ 11
print(text.upper()) # 转大写 → HELLO AGENT
print(text.replace("Agent", "World")) # 替换 → Hello World
👶 f-string 是你未来的最爱写
f"..." 后,大括号 {} 里能直接放变量甚至算式,Python 自动替换成值。以后拼提示词,比如 f"请把这段话翻译成英文:{user_input}",全靠它。记住:f 打头、变量进花括号。👶 小白:数字 25 和文字 "25" 看着一样,有区别吗?
👨🏫 老师:区别大了!25(数字)能做加减:25 + 1 = 26;"25"(字符串)的 + 是拼接:"25" + "1" = "251"。就像盒子里放"3 个苹果"能吃,放"写着3的纸条"不能吃。想互相转换:int("25") 把文字变数字,str(25) 把数字变文字。这个坑新手必踩一次,记住就好。
L04
布尔与比较:只有"是/否"的盒子
🤔 痛点程序怎么"判断"?比如"库存够不够""用户是不是 VIP"——这类问题的答案只有两种。
💡 本质布尔(bool)是只能装两个值的特殊盒子:
True(真/是)或 False(假/否)。比较运算(大于、等于……)算出来的就是布尔值,它是 if 判断的"燃料"。print(10 > 3) # 大于 → True
print(10 < 3) # 小于 → False
print(5 == 5) # ==(两个等号)判断"是否相等" → True
print(5 != 3) # != 判断"是否不等" → True
print(5 >= 5) # 大于等于 → True
# 多个条件用 and(都满足)/ or(满足一个即可)/ not(取反)
age = 20
print(age > 18 and age < 30) # 大于18 且 小于30 → True
print(age < 18 or age > 60) # 未成年 或 老年 → False
血泪坑警告:
= 是"赋值(把值装进盒子)",== 是"判断相等(问是不是一样)"。想问"x 是不是 5"要写 x == 5,写成 x = 5 会变成"把 5 装进 x"。一个等号赋值,两个等号比较——念三遍。L05
if / elif / else:仓库门口的分拣员
🤔 痛点程序不能一条道走到黑——考试及格发喜报、不及格发提醒,得根据情况走不同的路。怎么让程序"看情况办事"?
💡 本质
if(如果)就是分拣员:条件为 True 就执行这一堆;elif(否则如果)接着问下一个条件;else(否则)是兜底。关键:每个分支下面的代码要缩进(前面空 4 格),Python 靠缩进判断"哪些属于这个分支"。score = 75
if score >= 90: # 冒号结尾,下一行缩进
print("优秀 🏆") # 这行缩进了,属于 if 分支
elif score >= 60: # 上一个不满足才问这个
print("及格 ✅") # 75 走到这里
else: # 以上都不满足
print("不及格,加油 💪")
# 输出:及格 ✅
图注:从上往下逐个问,谁先为真就走谁,进去后其余全跳过;都不满足才落到 else。
📝 举个例子:这就是 Agent 的雏形
以后你写的 AI 应用,核心也是这种判断:
if 用户想查天气: 调天气工具 elif 用户想算数: 调计算器 else: 直接让大模型回答。"看情况选择做什么",正是 Agent"会思考"的最底层机制——今天学的 if,你会用到最后一天。L06
for / while 循环:传送带
🤔 痛点要给 100 个用户发通知、把一批文档逐个处理——难道复制粘贴 100 遍代码?累死也易错。
💡 本质循环就是传送带:同一段动作,让它自动重复很多遍。
for 用于"挨个处理一堆东西"(数量确定);while 用于"只要条件成立就一直做"(次数看情况)。# for:挨个走一遍列表里的东西(列表 Day04 细讲,先感受)
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits: # 依次把每个取出来,命名为 fruit
print(f"处理:{fruit}") # 缩进的这行重复执行 3 次
# range(3) 生成 0,1,2 —— 想重复固定次数就用它
for i in range(3):
print(f"第 {i+1} 次搅拌")
# while:只要条件为 True 就一直转
count = 3
while count > 0: # 只要 count 还大于 0
print(f"倒计时 {count}")
count = count - 1 # 每轮减 1,否则会转到天荒地老(死循环!)
print("发射 🚀")
👶 while 的头号大坑:死循环如果
while 的条件永远为真(比如忘了 count - 1),传送带就停不下来,程序卡死。写 while 一定要保证"条件迟早会变成 False"。真卡住了,按 Ctrl + C 强行喊停。👶 小白:for 和 while 感觉都能重复,到底啥时候用哪个?
👨🏫 老师:一句话——知道要做几遍、或有一堆东西要挨个过,用 for(遍历列表、重复 N 次);不知道要几遍、只知道"啥时候该停",用 while(比如"用户没说退出就一直聊天"、"没成功就一直重试")。后面写 Agent 主循环,那个"想→做→看→再想"转到任务完成为止,用的正是 while。
L07
今日小结 + 动手 10 分钟
🧠 今天你应该能回答
- 变量是什么?
=和==分别是啥,别搞混? - 数字
25和字符串"25"有啥区别?怎么互转? - f-string 怎么把变量塞进一句话?
- 布尔只有哪两个值?
and / or / not什么意思? - if/elif/else 靠什么区分"哪些代码属于这个分支"?(缩进)
- for 和 while 各在什么时候用?死循环怎么来的?
✋ 动手 10 分钟:写个"成绩评语小程序"
新建 day03.py,把今天四样(变量+字符串+if+循环)串起来。先照抄跑通,再改改分数和名字看输出怎么变:
# 一批学生的成绩
students = [("小明", 92), ("小红", 75), ("小刚", 55)]
# 用 for 挨个处理每个学生
for name, score in students: # 把每对拆成 name 和 score
# 用 if 分拣出评语
if score >= 90:
comment = "优秀"
elif score >= 60:
comment = "及格"
else:
comment = "需努力"
# 用 f-string 拼出一句话打印
print(f"{name}:{score} 分,评语【{comment}】")
# 期望输出:
# 小明:92 分,评语【优秀】
# 小红:75 分,评语【及格】
# 小刚:55 分,评语【需努力】
进阶挑战(选做):加一行统计"及格人数"——定义 pass_count = 0,每遇到及格就 pass_count = pass_count + 1,循环结束后打印出来。这就用上了"变量累加"这个超高频技巧。
明日预告 · Day 04:今天的盒子只能装一个值。明天 Python② 学"能装一堆东西的大盒子":列表 list、字典 dict、元组/集合,还有把代码打包复用的函数 def,以及读写文件。函数和字典是写 Agent 的绝对核心,明天见!