Day39——晚课 AI编程工具实战

作者:

系列教程说明

这是「AI专家养成计划」系列教程的第78篇,共140篇。本系列从零基础出发,每天两篇(早课理论+晚课实践),用70天时间带你全面掌握AI的核心概念与实战技能。晚课以实操为主,手把手教你完成具体任务。

上篇回顾

今天早课我们了解了AI编程工具的全景,掌握了三个核心要点:

  • Cursor是AI原生编辑器:内置强大的AI对话功能,可以直接用自然语言描述需求生成代码
  • GitHub Copilot是编辑器插件:无缝集成到VS Code等编辑器,通过实时代码建议提升编程效率
  • 两者定位不同:Cursor适合编程新手和需要AI对话的场景,Copilot适合有经验的程序员日常使用

今晚,我们不聊概念,直接上手——用Cursor和Copilot完成3个真实项目


实战项目一:用Cursor搭建个人记账本

项目目标

用Cursor的AI对话功能,从零开始创建一个命令行记账程序。你不需要会编程,只需要会打字。

第一步:打开Cursor,创建项目

  1. 打开Cursor编辑器
  2. 点击 File → New File
  3. Ctrl+S(Windows)或 Cmd+S(Mac)保存文件,命名为 accounting.py

第二步:用自然语言描述需求

Ctrl+K(Windows)或 Cmd+K(Mac)打开AI对话框,输入以下内容:

`

帮我写一个Python命令行记账程序,要求:

  1. 可以添加收入和支出记录,每条记录包含:日期、金额、类别、备注
  2. 可以查看所有记录
  3. 可以按月份统计收支情况
  4. 数据保存在本地JSON文件中
  5. 有简单的菜单界面,用数字选择功能

`

第三步:查看生成的代码

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会生成菜单逻辑

`

第四步:运行和调试

  1. Ctrl+Shift+ 打开终端
  2. 输入 python accounting.py 运行程序
  3. 如果报错,选中错误信息,按 Ctrl+K 让Cursor帮你修复

常见问题:如果提示找不到Python,需要先安装Python。在终端输入 python --version 检查是否已安装。

第五步:迭代改进

程序能运行后,继续用AI对话优化它:

`

给记账程序增加以下功能:

  1. 支持删除某条记录
  2. 添加数据导出为CSV的功能
  3. 用不同颜色显示收入(绿色)和支出(红色)

`

关键技巧:每次只提一个改进需求,让Cursor逐步完善。一次提太多需求,生成的代码可能不稳定。


实战项目二:用Copilot写一个网页爬虫

项目目标

用GitHub Copilot的代码建议功能,写一个自动抓取网页标题和链接的Python脚本。

前置准备

  • 已安装VS Code和GitHub Copilot插件
  • 已安装Python

第一步:创建项目文件

  1. 在VS Code中新建文件,保存为 web_scraper.py
  2. 确保文件右下角显示的语言是 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对话中输入:

`

我想做一个命令行天气查询工具,帮我设计程序架构:

  1. 功能:输入城市名,显示未来3天的天气预报
  2. 数据源:使用免费的wttr.in API(不需要注册)
  3. 要求:有错误处理、支持中文城市名、显示天气图标

请给出程序的模块划分和主要函数设计。

`

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库,添加异常处理。”

高效提示词的要素:

  1. 明确语言和工具:Python、pandas
  2. 描述具体功能:读取→筛选→分组→统计→输出
  3. 指定输入输出格式:CSV输入、JSON输出
  4. 说明特殊要求:异常处理

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更高效地找到需要的信息。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注