一年多过去 AI帮我用Python的姿势变了
2024年我问通义千问要一段Python代码,2026年同一句话,AI把成品文件直接递到我面前。同一道货架编号题,记录这一年半AI的变化。

同一道题,问了两遍

2024年12月,我发了篇《人生苦短 AI帮我用Python》:搬完厂要给货架贴编号,把需求甩给通义千问,几秒后拿到一段 pandas 代码,一次通过,我在文末喊「人工智能牛逼(破音)」。

2026年10月,差不多两年后,我又问了一遍。

原话,连错别字都没舍得改:

帮我写一个Python程序,要求生成以下数据,以此类推,一直到货架号60,保存成xlxs文件。

同样的需求、同样的示例数据、同样的笔误。这种对照实验可遇不可求——变量只有时间。那就拿它当样本,看看这一年半,AI 到底进步在哪。

2024:AI 出代码,人当运行时

旧文的全程是这样的:打开通义千问网页 → 粘贴需求和示例数据 → 收到一段代码加两条 pip install → 自己装库、自己运行、自己打开 Excel 确认。

复盘当时的交付物,本质是一段文本:

环节谁干的
写代码AI
装环境我
运行我
验证结果我(肉眼)
表格美化我(如果当时想到的话)

AI 是代码生成器,人是运行时加质检员。「一次通过」已经是当年很漂亮的成绩,但注意:通过不通过,是我开完 Excel 才知道的。

2026:字没多打,文件已经在桌上

这一次的过程:AI 先查环境(openpyxl 已有,不用装)→ 写带注释的脚本 → 直接运行 → 跑完把生成的 xlsx 打开数了一遍:241 行、60 个货架号、四种层级齐全、‘001’ 的前导零还在 → 最后把成品文件和脚本一起递过来。

2024 · 通义千问2026 · WorkBuddy
入口网页聊天窗口对话即开工
交付物一段代码文本脚本 + 成品 xlsx
环境提醒你自己 pip install自己查、自己装
验证无,靠人眼回读文件逐项核对
细节纯数据表头样式、文本格式、冻结首行
可维护性函数参数配置区常量 + 注释

几个当年没有的细节,值得单独说。

前导零。 货架号 ‘001’ 如果按数字写进 Excel,会变成 1。2024 年的代码碰巧躲过一劫——f'{shelf:03d}' 生成的是字符串,pandas 按文本写入。2026 年没靠碰巧:显式设置文本格式,顺手把表头、边框、冻结行一并做了。这些放在以前,都是我回 Excel 里手动调的活。

自证。 「应该没问题」和「我数过了,241 行」是两回事。回读校验这一步,把信任变成了可验证——这是我觉得最踏实的变化。

什么变了,什么没变

没变的比想象的多。

核心算法两年后原封不动:f'{shelf:03d}' 加双层循环,两个 AI 给出同一句 idiom。好答案会收敛,提示词也一样——我那句带着错别字的需求,两年后依然好使。把需求说清楚,始终是性价比最高的部分。

变了的也彻底:从「给你代码」到「替你做完」;从一次性对话到带着项目和机器上下文;从生成文本到调用工具、执行、验证。

一年半前我觉得 AI 牛逼,是因为它几秒写完了我要写半小时的代码;现在我觉得 AI 牛逼,是因为我一个字没多打,文件已经躺在我面前。

以前 AI 是杠杆,现在是手脚。

下一步该让它干什么呢——比如,自己把这篇博客文章发上去。


上面都是AI自己干的活,使用的是WorkBuddy

# -*- coding: utf-8 -*-
"""
生成「货架号 × 层级」数据表并保存为 xlsx。

数据规则:
- 货架号:001 ~ 060(三位数字,不足补零,保持文本格式防止前导零丢失)
- 层级:一、二、三、四
- 共 60 × 4 = 240 行
"""

from openpyxl import Workbook
from openpyxl.styles import Font, Alignment, PatternFill, Border, Side
from openpyxl.utils import get_column_letter

# ---------------- 配置 ----------------
SHELF_START = 1        # 起始货架号
SHELF_END = 60         # 结束货架号
LEVELS = ["一", "二", "三", "四"]
OUTPUT_PATH = "货架层级数据.xlsx"
# --------------------------------------


def build_rows():
    """生成数据行:[(货架号, 层级), ...]"""
    rows = []
    for n in range(SHELF_START, SHELF_END + 1):
        shelf = f"{n:03d}"  # 格式化为三位,如 001、015、060
        for level in LEVELS:
            rows.append((shelf, level))
    return rows


def save_to_xlsx(rows, path):
    wb = Workbook()
    ws = wb.active
    ws.title = "货架层级"

    # 表头
    headers = ["货架号", "层级"]
    ws.append(headers)

    # 样式
    header_font = Font(name="微软雅黑", bold=True, size=11, color="FFFFFF")
    header_fill = PatternFill("solid", fgColor="4472C4")
    body_font = Font(name="微软雅黑", size=11)
    center = Alignment(horizontal="center", vertical="center")
    thin = Side(style="thin", color="BFBFBF")
    border = Border(left=thin, right=thin, top=thin, bottom=thin)

    for col_idx, _ in enumerate(headers, 1):
        c = ws.cell(row=1, column=col_idx)
        c.font = header_font
        c.fill = header_fill
        c.alignment = center
        c.border = border

    # 数据行
    for shelf, level in rows:
        ws.append([shelf, level])

    # 货架号设为文本格式,保证 '001' 前导零不丢失
    text_fmt = "@"
    for r in range(2, ws.max_row + 1):
        shelf_cell = ws.cell(row=r, column=1)
        shelf_cell.number_format = text_fmt
        for c in range(1, 3):
            cell = ws.cell(row=r, column=c)
            cell.font = body_font
            cell.alignment = center
            cell.border = border

    # 列宽
    ws.column_dimensions[get_column_letter(1)].width = 12
    ws.column_dimensions[get_column_letter(2)].width = 10
    ws.row_dimensions[1].height = 22

    # 冻结表头
    ws.freeze_panes = "A2"

    wb.save(path)
    return path


if __name__ == "__main__":
    data = build_rows()
    out = save_to_xlsx(data, OUTPUT_PATH)
    print(f"已生成 {len(data)} 行数据 -> {out}")
    # 打印前后几行核对
    for row in data[:5]:
        print(row)
    print("...")
    for row in data[-3:]:
        print(row)

最后修改于 2026-10-13