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
👶 起名字的规矩变量名用英文字母、数字、下划线,不能用数字开头,不能有空格。见名知意最重要:pricep 好,user_agex1 好。多用小写 + 下划线(叫 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 % 20(偶),7 % 21(奇)。这个"取余判断整除"的技巧,后面循环里超常用。
小陷阱:/ 的结果永远是小数(10/25.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("不及格,加油 💪")
# 输出:及格 ✅
分拣员 if/elif/else:分数进来,走哪条路? score=75 ≥ 90 ? 否→ ≥ 60 ? 是↓ 及格 ✅ else 兜底:不及格
图注:从上往下逐个问,谁先为真就走谁,进去后其余全跳过;都不满足才落到 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 的绝对核心,明天见!
← Day 02 · 学习法 & 环境准备 Day 04 · Python 极速入门② →