系列教程说明
这是「AI专家养成计划」系列教程的第78篇,共140篇。本系列从零基础出发,每天两篇(早课理论+晚课实践),用70天时间带你全面掌握AI的核心概念与实战技能。晚课以实操为主,手把手教你完成具体任务。
上篇回顾
今天早课我们了解了AI编程工具的全景,掌握了三个核心要点:
- Cursor是AI原生编辑器:内置强大的AI对话功能,可以直接用自然语言描述需求生成代码
- GitHub Copilot是编辑器插件:无缝集成到VS Code等编辑器,通过实时代码建议提升编程效率
- 两者定位不同:Cursor适合编程新手和需要AI对话的场景,Copilot适合有经验的程序员日常使用
今晚,我们不聊概念,直接上手——用Cursor和Copilot完成3个真实项目。
实战项目一:用Cursor搭建个人记账本
项目目标
用Cursor的AI对话功能,从零开始创建一个命令行记账程序。你不需要会编程,只需要会打字。
第一步:打开Cursor,创建项目
- 打开Cursor编辑器
- 点击 File → New File
- 按
Ctrl+S(Windows)或Cmd+S(Mac)保存文件,命名为accounting.py
第二步:用自然语言描述需求
按 Ctrl+K(Windows)或 Cmd+K(Mac)打开AI对话框,输入以下内容:
`
帮我写一个Python命令行记账程序,要求:
- 可以添加收入和支出记录,每条记录包含:日期、金额、类别、备注
- 可以查看所有记录
- 可以按月份统计收支情况
- 数据保存在本地JSON文件中
- 有简单的菜单界面,用数字选择功能
`
第三步:查看生成的代码
Cursor会生成完整的代码。你会看到类似这样的结构:
`python
import json
from datetime import datetime
DATA_FILE = “accounting_data.json”
def load_data():
“””加载记账数据”””
try:
with open(DATA_FILE, ‘r’, encoding=’utf-8′) as f:
return json.load(f)
except FileNotFoundError:
return []
def save_data(records):
“””保存记账数据”””
with open(DATA_FILE, ‘w’, encoding=’utf-8′) as f:
json.dump(records, f, ensure_ascii=False, indent=2)
def add_record():
“””添加收支记录”””
# … Cursor会生成完整的添加逻辑
def view_records():
“””查看所有记录”””
# … Cursor会生成查看逻辑
def monthly_summary():
“””月度统计”””
# … Cursor会生成统计逻辑
# 主程序菜单
while True:
print(“n=== 个人记账本 ===”)
print(“1. 添加记录”)
print(“2. 查看记录”)
print(“3. 月度统计”)
print(“4. 退出”)
choice = input(“请选择功能:”)
# … Cursor会生成菜单逻辑
`
第四步:运行和调试
- 按
Ctrl+Shift+打开终端 - 输入
python accounting.py运行程序 - 如果报错,选中错误信息,按
Ctrl+K让Cursor帮你修复
常见问题:如果提示找不到Python,需要先安装Python。在终端输入 python --version 检查是否已安装。
第五步:迭代改进
程序能运行后,继续用AI对话优化它:
`
给记账程序增加以下功能:
- 支持删除某条记录
- 添加数据导出为CSV的功能
- 用不同颜色显示收入(绿色)和支出(红色)
`
关键技巧:每次只提一个改进需求,让Cursor逐步完善。一次提太多需求,生成的代码可能不稳定。
实战项目二:用Copilot写一个网页爬虫
项目目标
用GitHub Copilot的代码建议功能,写一个自动抓取网页标题和链接的Python脚本。
前置准备
- 已安装VS Code和GitHub Copilot插件
- 已安装Python
第一步:创建项目文件
- 在VS Code中新建文件,保存为
web_scraper.py - 确保文件右下角显示的语言是 Python
第二步:用注释驱动编程
这是Copilot最神奇的功能——你写注释,它写代码。
在文件中输入以下注释:
`python
# 导入requests和BeautifulSoup库
# 用于发送HTTP请求和解析HTML
# 写一个函数,接收URL参数
# 获取网页内容
# 提取所有链接和标题
# 返回一个字典列表,每个字典包含title和url
# 主程序:抓取一个示例网站
# 打印所有抓取到的链接
`
当你输入完每行注释后,停顿一下,Copilot会自动显示灰色的代码建议。按 Tab 接受建议。
第三步:完善代码
Copilot可能会生成这样的代码:
`python
import requests
from bs4 import BeautifulSoup
def extract_links(url):
“””抓取网页中的所有链接和标题”””
try:
headers = {‘User-Agent’: ‘Mozilla/5.0’}
response = requests.get(url, headers=headers, timeout=10)
response.raise_for_status()
soup = BeautifulSoup(response.text, ‘html.parser’)
links = []
for a_tag in soup.find_all(‘a’, href=True):
title = a_tag.get_text(strip=True)
href = a_tag[‘href’]
if title and href:
links.append({‘title’: title, ‘url’: href})
return links
except Exception as e:
print(f”抓取失败:{e}”)
return []
# 主程序
if __name__ == “__main__”:
target_url = “https://example.com”
results = extract_links(target_url)
print(f”n从 {target_url} 抓取到 {len(results)} 个链接:n”)
for i, link in enumerate(results[:10], 1):
print(f”{i}. {link[‘title’]}”)
print(f” {link[‘url’]}”)
`
第四步:安装依赖并运行
在终端中执行:
`bash
# 安装必要的库
pip install requests beautifulsoup4
# 运行脚本
python web_scraper.py
`
第五步:让Copilot帮你扩展功能
在代码末尾添加新的注释,让Copilot继续帮你写:
`python
# 添加功能:将抓取结果保存为CSV文件
# 添加功能:支持抓取多个页面
# 添加功能:过滤掉无效链接(如javascript:开头的)
`
Copilot的使用技巧:
- 注释要具体:写”抓取链接”比写”处理数据”效果好
- 给足上下文:Copilot会参考文件中已有的代码风格
- 接受部分建议:如果建议不完全符合需求,可以修改后再让Copilot继续
实战项目三:Cursor + Copilot联手——做一个天气查询工具
项目目标
综合使用两个工具的优势,创建一个命令行天气查询程序。
分工策略
- 用Cursor设计整体架构:通过AI对话确定程序结构和功能模块
- 用Copilot编写具体代码:在VS Code中用Copilot快速实现各个函数
第一步:用Cursor规划架构
在Cursor的AI对话中输入:
`
我想做一个命令行天气查询工具,帮我设计程序架构:
- 功能:输入城市名,显示未来3天的天气预报
- 数据源:使用免费的wttr.in API(不需要注册)
- 要求:有错误处理、支持中文城市名、显示天气图标
请给出程序的模块划分和主要函数设计。
`
Cursor会给出一个清晰的架构方案。
第二步:用Copilot实现代码
在VS Code中,根据Cursor的架构方案,用注释驱动Copilot生成代码:
`python
# 导入requests库
# 写一个函数,获取指定城市的天气数据
# 使用wttr.in的JSON API
# 处理网络错误和无效城市名
# 返回天气数据字典
# 写一个函数,将天气数据格式化输出
# 显示城市名、温度、天气状况
# 使用emoji表示天气(☀️晴、🌧️雨、❄️雪)
# 主程序:循环接收用户输入的城市名
# 输入q退出
`
第三步:完整代码参考
`python
import requests
import json
def get_weather(city):
“””获取城市天气数据”””
try:
url = f”https://wttr.in/{city}?format=j1″
response = requests.get(url, timeout=10)
response.raise_for_status()
return response.json()
except requests.RequestException as e:
return None
def get_weather_icon(code):
“””根据天气代码返回emoji图标”””
code = int(code)
if code == 113:
return “☀️”
elif code in [116, 119, 122]:
return “⛅”
elif code in [176, 263, 266, 293, 296, 299, 302, 305, 308]:
return “🌧️”
elif code in [179, 227, 230, 317, 320, 323, 326, 329, 332, 335, 338]:
return “❄️”
elif code in [200, 386, 389, 392, 395]:
return “⛈️”
elif code in [143, 248, 260]:
return “🌫️”
else:
return “🌤️”
def display_weather(data, city):
“””显示天气预报”””
if not data:
print(“❌ 获取天气数据失败,请检查城市名是否正确”)
return
print(f”n📍 {city} 未来3天天气预报”)
print(“=” * 40)
for day in data.get(‘weather’, []):
date = day[‘date’]
max_temp = day[‘maxtempC’]
min_temp = day[‘mintempC’]
hourly = day[‘hourly’]
# 取中午的天气状况
noon_weather = hourly[4] if len(hourly) > 4 else hourly[0]
desc = noon_weather.get(‘lang_zh’, [{}])[0].get(‘value’, ‘未知’)
icon = get_weather_icon(noon_weather[‘weatherCode’])
print(f”n{icon} {date}”)
print(f” 温度:{min_temp}°C ~ {max_temp}°C”)
print(f” 天气:{desc}”)
def main():
“””主程序”””
print(“🌤️ 天气查询工具”)
print(“输入城市名查询天气,输入 q 退出n”)
while True:
city = input(“请输入城市名:”).strip()
if city.lower() == ‘q’:
print(“👋 再见!”)
break
if not city:
print(“请输入有效的城市名”)
continue
print(f”正在查询 {city} 的天气…”)
data = get_weather(city)
display_weather(data, city)
if __name__ == “__main__”:
main()
`
第四步:运行和测试
`bash
pip install requests
python weather_tool.py
`
测试用例:
- 输入
Beijing或北京查看北京天气 - 输入
Tokyo或东京查看东京天气 - 输入
q退出程序
进阶技巧:让AI编程更高效
技巧一:给AI提供上下文
在Cursor中,按 @ 键可以引用文件、函数或文档。比如:
`
@web_scraper.py 帮我给这个爬虫添加代理支持
`
这样AI会参考你现有的代码,生成更贴合项目风格的代码。
技巧二:用AI学习代码
遇到看不懂的代码?在Cursor中选中代码,按 Ctrl+L 打开聊天,输入:
`
用通俗易懂的中文解释这段代码,像给初学者讲课一样
`
技巧三:批量生成测试代码
写完一个函数后,在Copilot中输入:
`python
# 为上面的函数写单元测试
# 测试正常情况、边界情况、异常情况
`
Copilot会自动生成完整的测试用例。
技巧四:代码重构
在Cursor中选中一段代码,按 Ctrl+K 输入:
`
重构这段代码:提取重复逻辑为函数,添加类型注解,改善变量命名
`
技巧五:生成文档
在Copilot中输入:
`python
# 为这个模块生成详细的docstring,包含功能说明、参数说明、返回值说明和使用示例
`
今日总结
今晚我们完成了3个实战项目:
① 用Cursor搭建记账本——体验了自然语言编程的威力,从需求描述到可运行的程序,全程不需要手写代码
② 用Copilot写爬虫——掌握了注释驱动编程的技巧,让AI根据你的意图自动生成代码
③ 两个工具联手做天气工具——学会了根据工具特点分工协作,发挥各自优势
今日行动项
① 完成至少一个项目:从今晚的3个项目中选一个,亲手做一遍。动手才能真正学会
② 尝试改进项目:在完成的基础上,用AI对话添加新功能。比如给记账本加图表展示,给爬虫加并发抓取
③ 记录学习心得:把使用AI编程工具的感受写下来,哪些地方好用,哪些地方需要改进
🚇 地铁深读:AI编程的正确姿势
这个板块专为地铁通勤设计,每篇5-10分钟。不想深读可以跳过,不影响主线学习。
提示词工程在编程中的应用
用AI编程工具和用ChatGPT聊天有一个共同点:提示词的质量决定了输出的质量。
低效的提示词:
“帮我写一个程序”
高效的提示词:
“用Python写一个命令行程序,功能是:读取data.csv文件(包含姓名、年龄、城市三列),筛选出年龄大于30岁的记录,按城市分组统计人数,结果输出为result.json文件。使用pandas库,添加异常处理。”
高效提示词的要素:
- 明确语言和工具:Python、pandas
- 描述具体功能:读取→筛选→分组→统计→输出
- 指定输入输出格式:CSV输入、JSON输出
- 说明特殊要求:异常处理
AI生成代码的质量控制
AI生成的代码不一定完美,你需要检查以下几点:
① 边界情况
- 空列表、空文件怎么办?
- 用户输入非法字符怎么处理?
- 网络超时、文件不存在如何应对?
② 安全性
- 是否有SQL注入风险?
- 用户输入是否做了验证?
- 敏感信息是否暴露在代码中?
③ 性能
- 大数据量时会不会很慢?
- 是否有不必要的重复计算?
- 内存使用是否合理?
推荐学习路径
如果你想系统提升AI辅助编程能力:
第一周:熟悉工具
- 安装Cursor或Copilot
- 完成5个简单练习(计算器、猜数字、文件整理等)
- 记录每个工具的使用感受
第二周:掌握技巧
- 学习提示词工程基础
- 练习注释驱动编程
- 尝试代码解释和调试功能
第三周:实战项目
- 选择一个真实需求(比如自动化报表、数据清洗)
- 用AI工具从零完成项目
- 记录开发过程中的问题和解决方案
第四周:进阶提升
- 学习代码审查技巧
- 尝试多文件项目管理
- 探索AI工具的高级功能
一个真实的案例
一位做市场分析的朋友,之前每周要花3小时手动整理销售数据。他用Cursor写了一个Python脚本:
`
输入:每周的销售Excel文件
处理:自动清洗数据、计算关键指标、生成图表
输出:一份格式化的分析报告PDF
`
整个开发过程用了2小时,之后每周节省3小时。投入2小时,终身受益。
这就是AI编程工具的魅力——它让”不会编程”不再是借口,让”自动化”触手可及。
下篇预告
明天早上8点:Day40——AI搜索:新一代信息获取
明天下午5点:Day40——晚课 AI搜索实战
明天我们将探索AI如何改变我们获取信息的方式——传统的搜索引擎正在被AI搜索工具颠覆,你将学会如何用AI更高效地找到需要的信息。
发表回复