01 · 非程序员编程的核心理念
编程和用AI写代码是两件完全不同的事。这是最关键的心态转变。
学编程需要你理解算法、数据结构、系统设计。但用AI写代码只需要你清楚地描述问题、验证代码是否工作、知道什么时候不该用AI。这就像开车和学汽车修理:你不需要懂引擎工作原理就能开车。
三个核心区别
第一,目标完全不同。学编程的目标是"掌握一个技能"。用AI写代码的目标是"解决一个具体的问题"。心态不同,追求的东西就不同。
第二,所需的技能不同。学编程需要理解抽象的概念。用AI写代码需要的是清楚地表达一个具体的问题。你需要的不是"编程能力",而是"需求描述能力"。
第三,验证方式不同。作为程序员,你需要能够调试代码、理解每一行的含义。作为非程序员使用AI,你只需要能够判断"输出对不对"。你不需要理解代码怎么工作,只需要理解它在做什么。
关键认知:你不是在学编程,你是在学"怎么让AI给你写代码"。这是两个完全不同的技能树。
非程序员能做和不能做的边界
- 能做的:简单脚本(几十行)、数据处理、文件操作、定时任务、网页爬虫、数据分析、简单的web应用(Flask、Django)
- 不能做的:复杂系统、长期维护的代码、需要深厚CS知识的任务、涉及用户数据和安全的系统、高性能计算
- 分界线:当代码超过500行,或需要定期维护和升级,或涉及多人协作时,你应该找真正的程序员。
你的优势是什么?你理解业务问题,知道用户需要什么。程序员不一定理解。所以,用AI写的代码最适合"快速解决业务问题"的场景。
02 · 简单爬虫:需求到可运行代码
网页爬虫是非程序员用AI最常见的场景。完整的工作流是:需求描述 → 代码生成 → 运行调试 → 结果整理。
第一步:清楚的需求描述
关键是告诉AI:你要爬什么网站、要提取什么信息、最后的输出是什么样的。不用技术术语。
爬虫需求描述模板
目标网站: [URL或网站名]
信息来源: [具体是哪个页面]
要提取的信息:
- [字段1]: [描述,比如"商品名字"]
- [字段2]: [描述,比如"价格"]
- [字段3]: [描述,比如"评分"]
范围: [多少页?所有分类还是特定分类?]
输出: [CSV还是JSON?存到哪里?]
举例:
我要爬某电商网站的手机分类下的所有商品。
提取信息:商品名、价格、评分、评论数
范围:前5页
输出:保存成CSV文件,列为:名字、价格、评分、评论数
第二步:获取代码并理解它
把需求给AI后,AI会生成Python代码。你需要做三件事:(1)让AI解释代码在做什么,(2)检查是否需要安装某些库,(3)确认代码不会做你没预期的事。
代码理解提示词
你已经生成了一个爬虫代码。现在请:
1. 逐行解释这段代码在做什么(用日常语言,不用技术术语)
2. 这段代码需要安装哪些库?(pip install 什么?)
3. 运行这个代码需要注意什么?是否有可能失败?为什么?
4. 这个代码有什么限制?(比如只适用于某个网站的结构,如果网站改版会坏)
第三步:测试和调试
不要用真实的爬虫参数运行。先用小规模数据测试(比如只爬1页而不是100页)。这样快得多,也更安全。
常见的错误包括:网站结构和代码预期的不一样、某些数据是缺失的、网站有反爬虫机制。告诉AI你遇到的具体错误,AI会帮你修改代码。
法律和伦理红线
重要:什么网站可以爬,什么不可以爬?
- 可以爬的:公开的信息(新闻网站、价格对比网站、公开的数据库),并且robots.txt允许爬取的网站
- 不可以爬的:需要登录的内容、明确禁止爬虫的网站(查看robots.txt)、个人信息、受著作权保护的内容(比如小说全文)
- 灰色地带:社交媒体的数据(可能违反ToS)、商业性质的爬取(比如爬别人网站的内容转发到你自己的网站)
核心原则:(1)查看robots.txt,(2)尊重网站的ToS,(3)不爬取个人信息,(4)适当延迟请求(不要在短时间内发出大量请求),(5)标记你的爬虫身份(User-Agent)。
从爬虫到可维护代码
一个一次性的爬虫脚本和一个你每周都要运行的爬虫,要求完全不同。如果爬虫需要定期运行,考虑:错误处理(网站坏了怎么办)、日志记录、通知机制(爬取失败时通知你)。
让AI添加这些功能的提示词:我需要让这个爬虫脚本更可靠。请添加:(1)错误处理,(2)成功/失败的日志,(3)如果爬取失败,发送邮件通知我
03 · 数据分析脚本:从Excel到Insights
你有一堆Excel或CSV数据。想从中找出规律、生成图表、做统计分析。这是非程序员最常见的任务,也是AI最擅长帮助的。
三个递进场景
场景一:数据清洗和格式转换
比如你有一个杂乱的Excel文件,需要:删除重复行、填补缺失值、统一格式、提取某些字段。
数据清洗提示词
输入文件: sales.xlsx
问题描述:
- 某些行有重复数据
- 日期格式不统一(有"2024-01-01"也有"01/01/2024")
- 某些产品名写错了("Iphone"和"iPhone")
- 价格列有些是空白
请写一个Python脚本:
1. 删除完全重复的行
2. 统一日期格式为YYYY-MM-DD
3. 修复产品名的大小写问题
4. 对于价格的空白,填入同类产品的平均价格
5. 输出为新的CSV文件
场景二:数据分析和统计
计算平均值、总和、分组统计、找出异常值。
数据分析脚本提示词
数据源: customers.csv
包含的列: 客户ID、注册日期、总消费、最后购买日期、购买次数
分析任务:
1. 计算客户的平均消费额、中位数
2. 按注册月份分组,看每月新增客户数和他们的平均消费
3. 找出"高价值客户"(消费超过平均值150%)
4. 找出"流失客户"(最后购买日期超过6个月)
5. 生成一份汇总报告,包含上述所有指标
输出:一个汇总CSV和一份文本报告
场景三:数据可视化
生成图表、趋势图、对比图。
数据可视化提示词
数据源: sales_2024.csv
生成以下图表:
1. 按月份的销售额趋势图(折线图)
2. 产品类别的销售额对比(柱状图)
3. 客户数量和平均订单金额的关系(散点图)
4. 不同地区的销售占比(饼图)
每个图表应该清晰、有标题、有单位。保存为PNG或PDF。
常见的数据分析需求和提示词模板
模板的关键是清楚地说出:输入是什么、要做什么操作、输出是什么。
聚合统计
按某个字段分组,计算总和、平均值、计数。最常见的场景。
趋势分析
看某个指标随时间的变化。需要时间序列数据。
异常检测
找出不符合规律的数据点(异常值或异常行为)。
分布分析
理解数据的分布特征(正态分布?有异常值?)。
相关性分析
两个变量之间是否有关系。比如价格和销量。
一个完整的数据分析工作流
- 定义问题:你想从数据中了解什么?(比如"哪些产品卖得最好?")
- 获取数据:导出原始数据(通常是CSV或Excel)
- 数据清洗:用AI生成脚本清洗数据(去重、格式统一、填补缺失值)
- 数据分析:用AI生成脚本计算你关心的指标
- 可视化:用AI生成脚本生成图表
- 验证结果:看看输出对不对。抽查几个数字,确认计算是正确的。
- 生成报告:用AI把结果组织成一份可读的报告
数据分析中最常见的错误:不检查数据就开始分析。先花时间理解数据(有多少行、什么格式、有没有缺失值、是否有异常值)。很多错误分析来自"脏数据"。
04 · 小工具开发:从想法到可用的应用
除了爬虫和数据分析,还有一类常见的需求:做一个小工具来自动化某个任务。比如:批量重命名文件、生成报告、处理文本、简单的计算器。
工具开发的三种形式
1. 命令行脚本(最简单)
运行:python script.py [参数]
适合:需要经常运行、可以接受在terminal中运行的场景
命令行工具提示词
任务: 批量转换图片格式
输入: 一个文件夹,包含100个JPG图片
输出: 转换后的PNG图片,放在新的文件夹
参数: 输入文件夹、输出文件夹、目标格式
帮我写一个Python脚本,接收命令行参数,可以这样使用:
python convert_images.py --input ./photos --output ./converted --format png
脚本应该:
1. 读取输入文件夹的所有图片
2. 转换为目标格式
3. 保存到输出文件夹,保持原文件名
4. 显示进度(已处理100张中的30张)
5. 错误处理(如果某个文件坏了,记录错误并继续)
2. 桌面应用(有UI)
用Python的tkinter或PySimpleGUI库生成图形界面
桌面应用提示词
功能: 费用计算器
输入: 工作时长(小时)、时薪、税率
输出: 总费用、税金、税后费用
帮我用tkinter写一个Python应用,包括:
- 三个输入框(工作时长、时薪、税率)
- 一个"计算"按钮
- 显示结果的三行(总费用、税金、税后费用)
- 清空按钮(清除所有输入)
用户界面应该简洁、易用。
3. Web应用(可以在浏览器中使用)
用Flask或Django构建简单的web应用
Web应用提示词
功能: 文本分析工具
功能列表:
- 用户上传一个文本文件或粘贴文本
- 显示字数、词数、平均句长
- 显示最常出现的词(前10个)
- 显示句子长度分布
帮我用Flask生成一个简单的web应用。用户界面包括:
- 一个文本输入框或文件上传
- 一个"分析"按钮
- 显示分析结果的部分
后端应该有一个/analyze endpoint,接收文本,返回分析结果。
工具开发的完整工作流
- 清楚地定义你要解决的问题
- 选择合适的形式(命令行、桌面或web)
- 列出所有输入和输出
- 用AI生成初版代码
- 在你自己的电脑上安装必要的库和依赖
- 运行代码,测试是否工作
- 根据实际使用情况修改(添加功能、修复bug)
- 如果需要长期使用,考虑加上错误处理和日志
提示:对于简单的任务,命令行脚本最快。对于需要定期使用、不太技术的用户,web应用最好。对于需要离线使用、偶尔用的,桌面应用合适。
05 · 代码验证清单
AI生成的代码通常是可以运行的,但"能运行"和"正确"是两码事。你需要一套清单来验证代码。
理解代码
- 让AI逐行解释代码在做什么
- 理解代码的高层逻辑流程(不需要理解每个细节)
- 确认代码和你的需求描述一致
- 检查是否有可能造成意外后果的操作(删除文件、修改数据)
功能验证
- 用小规模测试数据运行代码(5行而不是5000行)
- 检查输出是否符合预期
- 测试边界情况(空数据、只有1条数据、特殊字符)
- 如果有配置参数,测试不同的参数值
安全检查
- 代码会删除或修改原始文件吗?(应该是否?)
- 代码会创建新文件吗?会放在哪里?
- 代码是否需要访问网络?访问什么?
- 代码是否需要访问敏感信息(密码、密钥)?
- 代码是否可能无限循环或长时间运行?
依赖检查
- 代码需要安装什么库?(应该用pip install安装)
- 这些库有什么系统要求?(某些库可能只支持Linux或Windows)
- 库之间有版本冲突吗?
- 如果代码需要爬虫或API,是否需要设置认证?
错误处理
- 如果输入文件不存在,代码会怎样?
- 如果网络中断,代码会怎样?
- 如果某个数据格式不对,代码会crash吗?
- 错误提示是否清晰?用户能理解发生了什么吗?
性能检查
- 代码运行需要多长时间?是否在可接受的范围内?
- 代码使用多少内存?对于大数据是否可行?
- 是否有明显的低效的地方?(比如内层循环做了重复的操作)
完整的验证清单。不用全部检查,但至少检查"理解代码"和"功能验证"。安全和性能的检查取决于代码的重要性。
06 · 调试技巧与标准流程
代码不工作的时候怎么办?这是非程序员最困扰的地方。标准的调试流程可以帮你快速找到问题。
第一步:理解错误信息
大多数时候,Python会告诉你出什么问题了。错误信息通常包含:错误类型、错误发生在哪一行、为什么出错。
FileNotFoundError: [Errno 2] No such file or directory: 'data.csv'
这表示:找不到data.csv文件。要么文件路径不对,要么文件确实不存在。
第二步:告诉AI你遇到的错误
不要只说"代码不工作"。给AI完整的错误信息,以及运行代码的时候做了什么。
调试提示词模板
错误信息:
[完整的错误信息和stack trace]
我做了什么:
运行命令:python script.py
输入数据:data.csv,文件在/Users/myname/Downloads/
代码的相关部分:
[粘贴出错的那部分代码,通常是stack trace指向的行]
请帮我理解出什么问题了,如何修复。
第三步:尝试简单的修复
很多错误有简单的解决方案,不需要改代码:
- 文件找不到:检查文件路径。试试用绝对路径(/Users/myname/data.csv)而不是相对路径(data.csv)
- 缺少库:安装库(pip install 库名)
- 版本不匹配:更新库(pip install --upgrade 库名)
- 权限问题:检查文件权限,或用管理员权限运行
第四步:如果还是不行
让AI修改代码。关键是给AI足够的上下文:完整的错误信息、代码的相关部分、你期望的结果。
代码调试提示词
下面的代码有问题。错误信息是:[完整错误]
问题代码:
[粘贴有问题的代码块]
这段代码想要做的是:[描述意图]
请帮我修复这个问题。修复后,请解释问题出在哪里,为什么会出错。
标准调试流程图
代码不工作 → 看错误信息 → 谷歌搜索错误信息 → 仍然不懂 → 告诉AI完整的错误和代码 → AI提供修复方案 → 尝试修复 → 成功或继续循环
调试的艺术不是理解代码怎么写的,而是理解代码在做什么,以及为什么它的输出和预期不一样。
07 · 安全红线与代码审查
不是所有的代码都应该让AI写。有些涉及安全、用户数据、财务的代码,必须经过专业review。
绝不该让AI独立写的代码
- 处理用户数据的代码:个人信息、密码、支付信息。这些必须被加密、保护、安全存储。AI不知道怎么做这些。
- 支付和交易代码:涉及金钱的逻辑。出错可能导致财务损失。必须由懂支付系统的人review。
- 身份验证和授权代码:决定谁可以访问什么。错误的实现会导致安全漏洞。
- 密钥和认证信息处理:API密钥、数据库密码。不能明文存储在代码里,必须用专门的密钥管理方式。
- 长期维护的核心业务逻辑:比如财务报表生成、订单处理。需要被彻底测试。
可以让AI写但需要人工review的代码
- 数据分析和报表生成(检查计算逻辑是否正确)
- Web应用的基础框架(检查是否有明显的安全漏洞)
- 爬虫和数据收集(检查是否尊重网站ToS和法律)
- 自动化脚本(检查是否有意外的副作用)
代码审查清单(如果你找程序员review)
如果你用AI写了代码,想让程序员检查,给他们一份清单,告诉他们你最关心什么:
- 安全问题:有没有可能被攻击或滥用?
- 数据正确性:计算逻辑是否正确?
- 性能:是否高效?能处理大数据吗?
- 可维护性:代码是否清晰易懂?如果我需要修改怎么办?
- 错误处理:如果出错了,用户会看到什么?
AI生成代码的典型问题
程序员review AI代码的时候经常发现的问题:
- 过度工程化:AI生成的代码往往"太复杂",解决一个简单问题用了复杂的方式
- 错误处理不足:代码假设一切都完美,但现实中总有异常
- 性能问题:对于大数据,AI的算法效率不足
- 安全漏洞:特别是SQL injection、XSS这类常见漏洞
- 依赖问题:AI引入了不必要的库,增加了维护成本
关键原则:越简单的代码越容易维护。如果AI的代码比你期望的复杂,要求它简化。如果代码涉及安全或数据,必须让专家review。
实战练习:用AI写一个数据处理脚本
- 选择你工作中的一个重复性数据处理任务(或者用一个假设的任务)
- 清楚地写下:输入数据是什么样的、要做什么处理、期望的输出是什么
- 用本章的提示词模板,让AI生成一个Python脚本
- 让AI逐行解释这个脚本。确保你理解了高层逻辑
- 查看脚本需要的库。如果没装,用pip安装
- 用一个小数据集(5-10行)测试脚本,确认输出正确
- 如果有问题,记录完整的错误信息,告诉AI并要求修复
- 修复后,用真实的完整数据运行脚本
- 反思:这个脚本省了你多少时间?代码有什么你不理解的地方吗?如果以后需要修改,你能改吗?