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

# 读取CSV数据(假设数据文件为sales_data.csv)
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')

    # 设置x轴刻度
    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]

# 进一步优化:空间复杂度从O(n)降至O(1)
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

# 测试代码(n=50瞬间出结果)
print(fibonacci_best(10)) # 输出:55
print(fibonacci_best(50)) # 输出:12586269025
<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文档后的完整代码

""" 用户管理API服务 功能:提供用户列表查询、单个用户查询的RESTful API接口 技术栈:Flask 2.0+ 作者:AI编程助手 日期:2026-01 """
from flask import Flask, request, jsonify

# 初始化Flask应用
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():
    """ 查询用户列表接口 --- 请求方式:GET 请求参数: role (str, 可选): 用户角色,取值为 'admin' 或 'user' status (str, 可选): 用户状态,取值为 'active' 或 'inactive' 返回结果: code (int): 响应码,200表示成功 data (list): 用户列表,每个元素包含id、username、role、status字段 msg (str): 响应信息 示例: 请求:/api/users?role=user&status=active 响应:{"code":200,"data":[{"id":2,"username":"user1","role":"user","status":"active"}],"msg":"success"} """
    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):
    """ 查询单个用户接口 --- 请求方式:GET 路径参数: user_id (int, 必选): 用户ID 返回结果: code (int): 响应码,200表示成功,404表示用户不存在 data (dict): 用户详情(存在时)或None(不存在时) msg (str): 响应信息 示例: 请求:/api/users/2 响应:{"code":200,"data":{"id":2,"username":"user1","role":"user","status":"active"},"msg":"success"} """
    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分“函数注释+整体文档”两部分生成,既详细又不冗余。