AI编程核心实操案例
<案例一:AI生成Python数据可视化代码
1. 需求描述(向AI输入的提示词)
用Python的matplotlib库,读取CSV文件中的销售数据(包含日期、产品类别、销售额字段),生成一个双轴图表:
① 主坐标轴:柱状图展示每月各产品类别的销售额;
② 次坐标轴:折线图展示每月总销售额趋势;
③ 图表需添加标题、坐标轴标签、图例,设置中文显示,样式美观。
2. AI生成的完整代码
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
def load_sales_data(file_path):
df = pd.read_csv(file_path)
df['日期'] = pd.to_datetime(df['日期']).dt.to_period('M')
return df
def plot_sales_analysis(df):
sales_pivot = df.pivot_table(
values='销售额',
index='日期',
columns='产品类别',
aggfunc='sum'
).fillna(0)
total_sales = sales_pivot.sum(axis=1)
fig, ax1 = plt.subplots(figsize=(14, 8))
x = np.arange(len(sales_pivot.index))
width = 0.2
colors = ['#165DFF', '#36CFFB', '#722ED1', '#F7BA1E']
for i, category in enumerate(sales_pivot.columns):
ax1.bar(
x + i*width - width*(len(sales_pivot.columns)-1)/2,
sales_pivot[category],
width=width,
label=category,
color=colors[i % len(colors)]
)
ax2 = ax1.twinx()
ax2.plot(x, total_sales, color='#F53F3F', linewidth=3, marker='o', markersize=6, label='总销售额')
ax1.set_title('月度产品销售额分析与总趋势', fontsize=20, fontweight='bold', pad=20)
ax1.set_xlabel('月份', fontsize=16, fontweight='500')
ax1.set_ylabel('产品类别销售额(万元)', fontsize=16, fontweight='500', color='#165DFF')
ax2.set_ylabel('总销售额(万元)', fontsize=16, fontweight='500', color='#F53F3F')
ax1.set_xticks(x)
ax1.set_xticklabels(sales_pivot.index, rotation=45)
lines1, labels1 = ax1.get_legend_handles_labels()
lines2, labels2 = ax2.get_legend_handles_labels()
ax1.legend(lines1 + lines2, labels1 + labels2, loc='upper left', fontsize=12)
plt.tight_layout()
plt.savefig('sales_analysis.png', dpi=300, bbox_inches='tight')
plt.show()
if __name__ == '__main__':
sales_df = load_sales_data('sales_data.csv')
plot_sales_analysis(sales_df)
<AI编程技巧
1. 提示词需明确“工具(matplotlib)+ 数据格式(CSV字段)+ 图表类型(双轴图)+ 样式要求(中文、图例)”,AI生成准确率更高;
2. 生成代码后,可让AI补充“数据模拟函数”(如无实际CSV文件时),直接运行测试;
3. 若对样式不满意,可输入“将图表颜色改为科技蓝系,优化标题字体”,AI会自动修改代码。
<案例二:AI修复Python代码逻辑bug
1. 有bug的原始代码(计算斐波那契数列第n项)
def fibonacci(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibonacci(n) + fibonacci(n-1)
print(fibonacci(10))
print(fibonacci(50))
问题描述:运行fibonacci(10)可得到结果,但运行fibonacci(50)时,程序卡顿严重,长时间无响应。
2. AI分析的bug原因
① 递归实现存在大量重复计算(如计算fib(5)需重复计算fib(3)、fib(2)多次);
② 时间复杂度为O(2ⁿ),当n≥30时,计算效率极低,n=50时几乎无法完成。
3. AI提供的修复方案(动态规划优化)
def fibonacci_optimized(n):
if n < 0:
raise ValueError("n必须为非负整数")
elif n == 0:
return 0
elif n == 1:
return 1
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i-1] + dp[i-2]
return dp[n]
def fibonacci_best(n):
if n < 0:
raise ValueError("n必须为非负整数")
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b if n != 0 else a
print(fibonacci_best(10))
print(fibonacci_best(50))
<AI修复技巧
1. 向AI提交有bug的代码时,需补充“运行现象(如卡顿、报错信息)+ 预期效果”,AI能更快定位问题;
2. 可要求AI提供“多种修复方案”并对比优缺点(如递归→动态规划→空间优化版);
3. 修复后让AI生成测试用例,验证代码正确性(如测试n=0、1、10、50等边界值)。
<案例三:AI自动生成API文档与代码注释
1. 无注释的原始代码(用户管理接口)
from flask import Flask, request, jsonify
app = Flask(__name__)
users = [
{'id': 1, 'username': 'admin', 'role': 'admin', 'status': 'active'},
{'id': 2, 'username': 'user1', 'role': 'user', 'status': 'active'}
]
@app.route('/api/users', methods=['GET'])
def get_users():
role = request.args.get('role')
status = request.args.get('status')
result = users
if role:
result = [u for u in result if u['role'] == role]
if status:
result = [u for u in result if u['status'] == status]
return jsonify({'code': 200, 'data': result, 'msg': 'success'})
@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
for user in users:
if user['id'] == user_id:
return jsonify({'code': 200, 'data': user, 'msg': 'success'})
return jsonify({'code': 404, 'data': None, 'msg': 'user not found'})
if __name__ == '__main__':
app.run(debug=True)
2. AI生成注释与API文档后的完整代码
from flask import Flask, request, jsonify
app = Flask(__name__)
users = [
{'id': 1, 'username': 'admin', 'role': 'admin', 'status': 'active'},
{'id': 2, 'username': 'user1', 'role': 'user', 'status': 'active'}
]
@app.route('/api/users', methods=['GET'])
def get_users():
role = request.args.get('role')
status = request.args.get('status')
result = users
if role:
result = [u for u in result if u['role'] == role]
if status:
result = [u for u in result if u['status'] == status]
return jsonify({'code': 200, 'data': result, 'msg': 'success'})
@app.route('/api/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
for user in users:
if user['id'] == user_id:
return jsonify({'code': 200, 'data': user, 'msg': 'success'})
return jsonify({'code': 404, 'data': None, 'msg': 'user not found'})
if __name__ == '__main__':
app.run(debug=True)
AI文档生成技巧
1. 要求AI按“标准化格式”生成文档(如包含请求参数、返回结果、示例),便于团队协作;
2. 可指定文档风格(如Markdown、reStructuredText),适配不同的文档生成工具(如Sphinx);
3. 对于复杂代码,让AI分“函数注释+整体文档”两部分生成,既详细又不冗余。