【AI】提示词实战:让大模型生成可直接运行的Python代码

部署运行你感兴趣的模型镜像

 

提示词实战:让大模型生成可直接运行的 Python 代码

一、引言

在日常开发和学习中,我们经常需要编写 Python 代码来完成各种任务,比如数据处理、文件操作、爬虫开发等。但编写代码的过程可能会花费较多时间,尤其是面对不熟悉的功能模块时,还需要查阅大量文档。大模型的出现为解决这一问题提供了新的思路,通过设计合理的提示词,我们可以让大模型直接生成可运行的 Python 代码,大幅提高工作效率。本文将通过具体的实战案例,详细讲解如何设计提示词,让大模型生成符合需求且能直接运行的 Python 代码,帮助大家掌握这一实用技能。

二、让大模型生成可运行 Python 代码的提示词基础

2.1 明确代码的核心功能需求

要让大模型生成可运行的 Python 代码,首先要在提示词中清晰说明代码需要实现的核心功能。如果功能描述模糊,大模型生成的代码可能无法满足实际需求,甚至出现逻辑错误。

比如,我们需要生成一个 “计算两个数的加减乘除运算” 的 Python 代码,提示词不能只写 “生成一个 Python 计算代码”,而应该明确描述功能:“请生成一个 Python 代码,实现两个整数的加法、减法、乘法和除法运算,要求用户输入两个整数,代码输出每种运算的结果”。这样的提示词能让大模型准确把握代码的核心功能,减少生成无效代码的概率。

2.2 指定代码的输入输出格式

明确代码的输入输出格式,是确保生成的代码可直接运行的关键。输入格式包括用户输入的数据类型、输入方式(如通过 input 函数手动输入、从文件读取等);输出格式包括结果的展示形式(如打印到控制台、保存到文件等)、输出内容的详细程度。

例如,在生成 “统计文本文件中单词出现次数” 的 Python 代码时,提示词需要指定输入输出格式:“请生成一个 Python 代码,功能是统计指定文本文件(文件路径由用户输入)中每个单词的出现次数。输入格式:用户通过 input 函数输入文本文件的绝对路径;输出格式:将每个单词及其出现次数按‘单词:出现次数’的格式打印到控制台,且忽略大小写,排除‘the’‘a’‘an’等常见停用词”。通过这样的描述,大模型生成的代码能准确处理输入输出,避免因格式不明确导致的运行问题。

2.3 说明依赖的第三方库

Python 代码常常需要依赖第三方库来实现特定功能,比如用 pandas 处理数据、用 requests 发送网络请求、用 matplotlib 绘制图表等。如果提示词中不说明需要使用的第三方库,大模型可能会使用不常用的库,或者遗漏必要的库导入语句,导致代码运行时出现 “ModuleNotFoundError” 错误。

因此,在提示词中要明确说明依赖的第三方库。例如,生成 “用 matplotlib 绘制折线图” 的 Python 代码时,提示词应包含:“请生成一个 Python 代码,使用 matplotlib 库绘制一条包含 5 个数据点的折线图。数据点的 x 轴值为 [1,2,3,4,5],y 轴值为 [10,20,15,25,30],要求给图表添加标题‘简单折线图’、x 轴标签‘x 值’、y 轴标签‘y 值’,并显示网格线。代码中需包含 matplotlib 库的导入语句,且确保代码运行后能弹出图表窗口”。这样大模型会准确导入所需库,避免依赖问题。

三、数据处理场景:提示词实战案例

3.1 案例一:CSV 文件数据读取与基本统计分析

3.1.1 需求描述

需要生成一个 Python 代码,实现读取本地 CSV 文件(文件路径由用户指定),对文件中的数值型列进行基本统计分析,包括计算每列的平均值、最大值、最小值、标准差,并将统计结果保存到新的 CSV 文件中。

3.1.2 提示词设计

“请生成一个可直接运行的 Python 代码,功能如下:

  1. 让用户通过 input 函数输入本地 CSV 文件的绝对路径;
  1. 使用 pandas 库读取该 CSV 文件,确保能正确处理文件编码(若遇到编码错误,尝试使用‘utf-8’或‘gbk’编码);
  1. 筛选出文件中的数值型列(int64、float64 类型);
  1. 对每个数值型列计算以下统计指标:平均值(保留 2 位小数)、最大值、最小值、标准差(保留 2 位小数);
  1. 将统计结果整理成 DataFrame,索引为统计指标,列名为数值型列名;
  1. 让用户通过 input 函数输入新 CSV 文件的保存路径,将统计结果保存到该路径下;
  1. 代码运行过程中,若出现文件不存在、路径错误等异常,需捕获并打印友好的错误提示信息;
  1. 代码中需包含所有必要的库导入语句(如 pandas)。”
3.1.3 生成的代码及运行验证
 

import pandas as pd

import os

def analyze_csv_data():

# 获取用户输入的CSV文件路径

input_path = input("请输入CSV文件的绝对路径:")

# 检查文件是否存在

if not os.path.exists(input_path):

print(f"错误:文件 '{input_path}' 不存在,请检查路径是否正确。")

return

# 尝试读取CSV文件,处理编码问题

try:

df = pd.read_csv(input_path, encoding='utf-8')

except UnicodeDecodeError:

try:

df = pd.read_csv(input_path, encoding='gbk')

except Exception as e:

print(f"读取文件时出现错误:{str(e)},无法识别文件编码。")

return

# 筛选数值型列

numeric_cols = df.select_dtypes(include=['int64', 'float64']).columns

if len(numeric_cols) == 0:

print("该CSV文件中没有数值型列,无法进行统计分析。")

return

# 计算统计指标

stats_data = {}

for col in numeric_cols:

col_data = df[col].dropna() # 去除缺失值

stats_data[col] = {

'平均值': round(col_data.mean(), 2),

'最大值': col_data.max(),

'最小值': col_data.min(),

'标准差': round(col_data.std(), 2)

}

# 整理统计结果为DataFrame

stats_df = pd.DataFrame(stats_data).T # 转置,让列名为统计指标

# 获取保存路径并保存文件

save_path = input("请输入统计结果的保存路径(需包含文件名,如D:/stats_result.csv):")

try:

stats_df.to_csv(save_path, encoding='utf-8-sig')

print(f"统计结果已成功保存到 '{save_path}'。")

except Exception as e:

print(f"保存文件时出现错误:{str(e)},请检查保存路径是否正确。")

# 调用函数执行

if __name__ == "__main__":

analyze_csv_data()

3.1.4 运行验证步骤
  1. 准备一个包含数值型列的 CSV 文件,如包含 “学生姓名”“语文成绩”“数学成绩”“英语成绩” 的文件;
  1. 运行上述代码,输入 CSV 文件的绝对路径(如 “D:/students_scores.csv”);
  1. 代码读取文件后,会自动筛选出 “语文成绩”“数学成绩”“英语成绩” 等数值型列,计算统计指标;
  1. 输入统计结果的保存路径(如 “D:/scores_stats.csv”);
  1. 打开保存的文件,查看统计结果是否正确,同时检查代码运行过程中是否有错误提示。

3.2 案例二:Excel 文件多工作表数据合并

3.2.1 需求描述

生成一个 Python 代码,合并 Excel 文件中所有工作表的数据。要求将每个工作表的名称作为一列添加到数据中,最终将合并后的数据保存到新的 Excel 文件的单个工作表中,且能处理工作表中列名不一致的情况(只保留所有工作表共有的列)。

3.2.2 提示词设计

“请生成一个可直接运行的 Python 代码,实现以下功能:

  1. 提示用户输入需要合并的 Excel 文件绝对路径(支持.xlsx 格式);
  1. 使用 pandas 库读取该 Excel 文件中的所有工作表;
  1. 对于每个工作表,添加一列名为‘工作表名称’,值为当前工作表的名称;
  1. 找出所有工作表共有的列(即每个工作表都存在的列),只保留这些列的数据;
  1. 将所有工作表处理后的数据合并成一个 DataFrame;
  1. 提示用户输入合并后 Excel 文件的保存路径(需包含文件名,如 D:/merged_data.xlsx);
  1. 将合并后的 DataFrame 保存到新 Excel 文件的‘合并结果’工作表中;
  1. 处理可能出现的异常,如文件不存在、Excel 格式错误、无共有的列等,并打印错误提示;
  1. 代码需导入必要的库(如 pandas、openpyxl),且确保保存 Excel 文件时使用 openpyxl 引擎。”
3.2.3 生成的代码及运行验证
 

import pandas as pd

import os

def merge_excel_sheets():

# 获取输入Excel文件路径

input_file = input("请输入需要合并的Excel文件绝对路径(.xlsx格式):")

# 检查文件是否存在及格式是否正确

if not os.path.exists(input_file):

print(f"错误:文件 '{input_file}' 不存在,请检查路径。")

return

if not input_file.endswith('.xlsx'):

print("错误:仅支持.xlsx格式的Excel文件,请选择正确的文件。")

return

# 读取所有工作表

try:

excel_reader = pd.ExcelFile(input_file)

sheet_names = excel_reader.sheet_names

if len(sheet_names) == 0:

print("错误:该Excel文件中没有工作表。")

return

print(f"发现 {len(sheet_names)} 个工作表:{', '.join(sheet_names)}")

except Exception as e:

print(f"读取Excel文件时出错:{str(e)}")

return

# 读取每个工作表数据并添加“工作表名称”列

sheet_dfs = []

for sheet in sheet_names:

try:

df = pd.read_excel(input_file, sheet_name=sheet)

df['工作表名称'] = sheet # 添加工作表名称列

sheet_dfs.append(df)

print(f"成功读取工作表:{sheet},数据行数:{len(df)}")

except Exception as e:

print(f"读取工作表 '{sheet}' 时出错:{str(e)},跳过该工作表。")

if len(sheet_dfs) == 0:

print("错误:没有成功读取到任何工作表数据,无法合并。")

return

# 找出所有工作表共有的列

common_cols = set(sheet_dfs[0].columns)

for df in sheet_dfs[1:]:

common_cols.intersection_update(df.columns)

common_cols = list(common_cols)

if len(common_cols) == 0:

print("错误:所有工作表没有共有的列,无法合并数据。")

return

print(f"所有工作表共有的列:{', '.join(common_cols)}")

# 保留共有的列并合并数据

merged_df = pd.concat([df[common_cols] for df in sheet_dfs], ignore_index=True)

print(f"合并后的数据总行数:{len(merged_df)}")

# 保存合并结果

save_file = input("请输入合并后Excel文件的保存路径(如D:/merged_data.xlsx):")

if not save_file.endswith('.xlsx'):

save_file += '.xlsx' # 自动添加后缀

try:

merged_df.to_excel(save_file, sheet_name='合并结果', index=False, engine='openpyxl')

print(f"合并完成!结果已保存到:{save_file}")

except Exception as e:

print(f"保存文件时出错:{str(e)},请检查保存路径是否有权限。")

# 执行合并函数

if __name__ == "__main__":

merge_excel_sheets()

3.2.4 运行验证步骤
  1. 准备一个包含多个工作表的 Excel 文件,例如有 “2023 年 1 月销售”“2023 年 2 月销售” 两个工作表,均包含 “商品 ID”“销量”“销售额” 列,且可能有其他不同列;
  1. 运行代码,输入该 Excel 文件的绝对路径;
  1. 代码会读取所有工作表,显示工作表名称和数据行数,然后找出共有的列(如 “商品 ID”“销量”“销售额”“工作表名称”);
  1. 输入保存路径,代码将合并后的数据保存到新 Excel 文件;
  1. 打开新文件,查看 “合并结果” 工作表,确认数据是否正确合并,且包含 “工作表名称” 列。

四、文件操作场景:提示词实战案例

4.1 案例一:指定文件夹下所有文件的名称与大小统计

4.1.1 需求描述

生成 Python 代码,统计指定文件夹下所有文件(不包含子文件夹)的名称、后缀名、大小(以 KB 为单位,保留 2 位小数),并将统计结果按文件大小从大到小排序后,保存到 TXT 文件中。

4.1.2 提示词设计

“请生成可直接运行的 Python 代码,功能如下:

  1. 让用户通过 input 函数输入需要统计的文件夹绝对路径;
  1. 遍历该文件夹下的所有文件(不进入子文件夹);
  1. 对每个文件,获取以下信息:文件名称(包含后缀)、文件后缀名(如.txt、.png,若没有后缀则记为‘无后缀’)、文件大小(转换为 KB,1KB=1024 字节,保留 2 位小数);
  1. 将所有文件的统计信息整理成列表,按文件大小从大到小排序(若大小相同,按文件名称字母顺序排序);
  1. 提示用户输入 TXT 文件的保存路径(需包含文件名,如 D:/file_stats.txt);
  1. 将排序后的统计信息写入 TXT 文件,每行格式为‘文件名称:xxx,后缀名:xxx,大小:xxx KB’;
  1. 代码需处理文件夹不存在、权限不足等异常,打印清晰的错误提示;
  1. 不需要导入额外第三方库(使用 Python 内置的 os 模块即可)。”
4.1.3 生成的代码及运行验证
 

import os

def统计文件信息():

# 获取文件夹路径

folder_path = input("请输入需要统计的文件夹绝对路径:")

# 检查文件夹是否存在

if not os.path.exists(folder_path):

print(f"错误:文件夹 '{folder_path}' 不存在,请检查路径。")

return

if not os.path.isdir(folder_path):

print(f"错误:'{folder_path}' 不是一个有效的文件夹路径。")

return

# 遍历文件夹下的文件,收集信息

file_info_list = []

try:

for filename in os.listdir(folder_path):

file_path = os.path.join(folder_path, filename)

# 只处理文件,不处理子文件夹

if os.path.isfile(file_path):

# 获取文件大小(字节转KB)

file_size_bytes = os.path.getsize(file_path)

file_size_kb = round(file_size_bytes / 1024, 2)

# 获取文件后缀名

file_ext = os.path.splitext(filename)[1]

if not file_ext:

file_ext = "无后缀"

else:

file_ext = file_ext.lower() # 后缀名统一小写

# 添加到列表

file_info_list.append({

'name': filename,

'ext': file_ext,

'size_kb': file_size_kb

})

except PermissionError:

print(f"错误:没有访问文件夹 '{folder_path}' 的权限,请检查权限设置。")

return

except Exception as e:

print(f"遍历文件夹时出现错误:{str(e)}")

return

if len(file_info_list) == 0:

print("该文件夹下没有文件。")

return

# 按文件大小排序(从大到小),大小相同按名称排序

file_info_list.sort(key=lambda x: (-x['size_kb'], x['name']))

# 获取保存路径并写入TXT

save_path = input("请输入TXT文件的保存路径(如D:/file_stats.txt):")

if not save_path.endswith('.txt'):

save_path += '.txt'

try:

with open(save_path, 'w', encoding='utf-8') as f:

f.write(f"文件夹 '{folder_path}' 的文件统计结果(共 {len(file_info_list)} 个文件)\n")

f.write("="*50 + "\n</doubaocanvas>

for info in file_info_list:

line = f"文件名称:{info ['name']},后缀名:{info ['ext']},大小:{info ['size_kb']} KB\n"

f.write (line)

print (f"文件统计结果已保存到:{save_path}")

except Exception as e:

print (f"保存 TXT 文件时出错:{str (e)},请检查保存路径是否可写。")

执行统计函数

if name == "main":

统计文件信息 ()

 

#### 4.1.4 运行验证步骤

1. 选择一个包含多个文件(如文档、图片、压缩包)的文件夹,记录其绝对路径;

2. 运行代码,输入该文件夹的绝对路径;

3. 代码会遍历文件夹下的文件,排除子文件夹,收集每个文件的名称、后缀和大小;

4. 输入TXT保存路径(如“D:/doc_folder_stats.txt”);

5. 打开保存的TXT文件,检查内容是否符合“文件名称:xxx,后缀名:xxx,大小:xxx KB”格式,且是否按大小从大到小排序。

### 4.2 案例二:批量重命名指定文件夹下的图片文件

#### 4.2.1 需求描述

生成Python代码,批量重命名指定文件夹下的所有图片文件(支持.jpg、.png、.jpeg格式)。命名规则为“图片_序号”(序号从1开始递增),例如“图片_1.jpg”“图片_2.png”,且重命名过程中保持原文件的后缀格式不变。

#### 4.2.2 提示词设计

“请生成可直接运行的Python代码,功能如下:

1. 提示用户输入图片所在文件夹的绝对路径;

2. 筛选该文件夹下后缀为.jpg、.png、.jpeg的文件(不区分大小写,如.JPG也视为有效格式);

3. 按文件创建时间(最早创建的排最前)对筛选出的图片文件排序;

4. 按“图片_序号.原后缀”的格式批量重命名,序号从1开始递增(如原文件为“photo.png”,排序后为1,则重命名为“图片_1.png”);

5. 重命名过程中,打印每个文件的“原名称→新名称”对应关系;

6. 处理可能的异常,如文件夹不存在、无符合条件的图片文件、文件重命名失败等,并打印错误提示;

7. 仅使用Python内置的os模块,无需导入第三方库。”

#### 4.2.3 生成的代码及运行验证

```python

import os

from datetime import datetime

def batch_rename_images():

# 获取图片文件夹路径

folder_path = input("请输入图片所在文件夹的绝对路径:")

# 检查文件夹是否存在

if not os.path.exists(folder_path):

print(f"错误:文件夹 '{folder_path}' 不存在,请检查路径。")

return

if not os.path.isdir(folder_path):

print(f"错误:'{folder_path}' 不是有效的文件夹路径。")

return

# 筛选图片文件(支持.jpg/.png/.jpeg,不区分大小写)

image_extensions = ('.jpg', '.png', '.jpeg', '.JPG', '.PNG', '.JPEG')

image_files = []

for filename in os.listdir(folder_path):

file_path = os.path.join(folder_path, filename)

if os.path.isfile(file_path) and filename.endswith(image_extensions):

# 获取文件创建时间(Windows用st_ctime,Linux用st_mtime,这里兼容处理)

create_time = os.path.getctime(file_path)

image_files.append((file_path, filename, create_time))

if len(image_files) == 0:

print("该文件夹下没有找到.jpg、.png、.jpeg格式的图片文件。")

return

# 按创建时间排序(最早创建在前)

image_files.sort(key=lambda x: x[2])

# 批量重命名

rename_count = 0

for idx, (file_path, old_name, _) in enumerate(image_files, start=1):

# 获取原文件后缀

old_ext = os.path.splitext(old_name)[1].lower() # 统一后缀为小写(如.JPG→.jpg)

# 构建新名称

new_name = f"图片_{idx}{old_ext}"

new_path = os.path.join(folder_path, new_name)

# 避免新名称与现有文件冲突

if os.path.exists(new_path):

print(f"警告:新名称 '{new_name}' 已存在,跳过文件 '{old_name}'。")

continue

# 执行重命名

try:

os.rename(file_path, new_path)

print(f"成功重命名:{old_name} → {new_name}")

rename_count += 1

except Exception as e:

print(f"重命名 '{old_name}' 时出错:{str(e)},跳过该文件。")

print(f"\n批量重命名完成!共处理 {len(image_files)} 个图片文件,成功重命名 {rename_count} 个。")

# 执行批量重命名函数

if __name__ == "__main__":

batch_rename_images()

4.2.4 运行验证步骤
  1. 准备一个包含多个图片文件(混合.jpg、.png 格式,且名称不规则)的文件夹;
  1. 运行代码,输入该文件夹的绝对路径;
  1. 代码会筛选出图片文件,按创建时间排序,并打印 “原名称→新名称” 的对应关系;
  1. 重命名完成后,打开文件夹,检查图片文件是否按 “图片_1.jpg”“图片_2.png” 的格式命名;
  1. 确认无重复名称,且原文件的后缀格式保持正确(如.png 文件仍为.png 后缀)。

五、网络请求场景:提示词实战案例

5.1 案例一:调用公开 API 接口获取数据并解析

5.1.1 需求描述

生成 Python 代码,调用公开的 “天气 API 接口”(以高德地图天气 API 为例,需用户自行提供 API 密钥),根据用户输入的城市名称,获取该城市的实时天气数据(包括温度、天气状况、风力、湿度),并将解析后的结果以清晰的格式打印到控制台。

5.1.2 提示词设计

“请生成可直接运行的 Python 代码,功能如下:

  1. 提示用户输入高德地图天气 API 的密钥(提示:密钥可在高德开放平台申请,免费版足够使用);
  1. 提示用户输入需要查询天气的城市名称(如 “北京”“上海”);
  1. 使用 requests 库发送 GET 请求到高德天气 API(接口地址:https://restapi.amap.com/v3/weather/weatherInfo?key=密钥 & city = 城市名称 & extensions=base);
  1. 解析 API 返回的 JSON 数据,提取实时天气信息:城市名称、温度(temp)、天气状况(weather)、风力(windpower)、湿度(humidity);
  1. 按以下格式打印结果:

城市:xxx

实时温度:xxx℃

天气状况:xxx

风力:xxx 级

湿度:xxx%

  1. 处理可能的异常:API 密钥错误、城市名称无效、网络连接失败、API 返回数据格式错误等,并打印友好的错误提示;
  1. 代码中需导入 requests 库,并在开头添加注释,说明 API 密钥的申请方式。”
5.1.3 生成的代码及运行验证
 

# 说明:高德天气API密钥申请方式:

# 1. 访问高德开放平台(https://lbs.amap.com/),注册并登录账号;

# 2. 进入“控制台→应用管理→创建应用”,填写应用名称(如“天气查询”);

# 3. 在应用下添加“Web服务”类型的Key,获取API密钥后使用。

import requests

import json

def get_city_weather():

# 获取API密钥

api_key = input("请输入你的高德地图天气API密钥:").strip()

if not api_key:

print("错误:API密钥不能为空,请重新输入。")

return

# 获取城市名称

city_name = input("请输入需要查询天气的城市名称(如“北京”):").strip()

if not city_name:

print("错误:城市名称不能为空,请重新输入。")

return

# 构建API请求地址

base_url = "https://restapi.amap.com/v3/weather/weatherInfo"

params = {

"key": api_key,

"city": city_name,

"extensions": "base" # extensions=base表示获取实时天气

}

# 发送请求并解析数据

try:

print(f"\n正在查询 {city_name} 的实时天气...")

response = requests.get(base_url, params=params, timeout=10)

response.raise_for_status() # 若状态码非200,抛出HTTPError

# 解析JSON数据

weather_data = response.json()

# 检查API返回状态

status = weather_data.get("status")

if status != "1":

error_msg = weather_data.get("info", "未知错误")

print(f"查询失败:{error_msg}(错误码:{weather_data.get('infocode')})")

return

# 提取天气信息(实时天气在lives列表的第一个元素中)

lives = weather_data.get("lives", [])

if not lives:

print(f"查询失败:未获取到 {city_name} 的天气数据,请检查城市名称是否正确。")

return

realtime_weather = lives[0]

# 提取需要的字段

city = realtime_weather.get("city", "未知城市")

temp = realtime_weather.get("temp", "未知")

weather = realtime_weather.get("weather", "未知")

windpower = realtime_weather.get("windpower", "未知")

humidity = realtime_weather.get("humidity", "未知")

# 打印结果

print("\n" + "="*30)

print(f"城市:{city}")

print(f"实时温度:{temp}℃")

print(f"天气状况:{weather}")

print(f"风力:{windpower}级")

print(f"湿度:{humidity}%")

print("="*30)

except requests.exceptions.Timeout:

print("错误:网络请求超时,请检查网络连接后重试。")

except requests.exceptions.ConnectionError:

print("错误:网络连接失败,请检查网络设置后重试。")

except requests.exceptions.HTTPError as e:

print(f"错误:HTTP请求失败,状态码:{e.response.status_code}")

except json.JSONDecodeError:

print("错误:API返回数据格式错误,无法解析天气信息。")

except Exception as e:

print(f"查询过程中出现未知错误:{str(e)}")

# 执行天气查询函数

if __name__ == "__main__":

get_city_weather()

5.1.4 运行验证步骤
  1. 按代码开头的说明,在高德开放平台申请 API 密钥;
  1. 运行代码,输入申请到的 API 密钥;
  1. 输入需要查询的城市名称(如 “广州”);
  1. 等待代码发送请求并解析数据,查看控制台是否按指定格式打印天气信息;
  1. 测试异常情况(如输入错误的 API 密钥、不存在的城市名称、断开网络),检查错误提示是否清晰。

5.2 案例二:简单网页内容爬取(提取新闻标题与链接)

5.2.1 需求描述

生成 Python 代码,爬取指定新闻网站(以 “澎湃新闻” 科技板块为例,URL:https://www.thepaper.cn/channel_25950)的前 10 条新闻标题及对应的新闻链接,将结果保存到 TXT 文件中,每条新闻占一行,格式为 “新闻标题:xxx,新闻链接:xxx”。

5.2.2 提示词设计

“请生成可直接运行的 Python 代码,功能如下:

  1. 使用 requests 库获取澎湃新闻科技板块页面(URL:https://www.thepaper.cn/channel_25950)的 HTML 内容;
  1. 使用 BeautifulSoup 库解析 HTML,提取页面中前 10 条新闻的标题和对应的新闻链接;

(提示:通过浏览器 “检查” 功能查看新闻标题的 HTML 标签,澎湃新闻科技板块新闻标题通常在 class 为 “news_title” 的标签中,链接为标签的 href 属性);

  1. 提示用户输入 TXT 文件的保存路径(如 “D:/thepaper_tech_news.txt”);
  1. 将提取的新闻标题和链接写入 TXT 文件,每条新闻格式为 “新闻标题:xxx,新闻链接:xxx”,且每条新闻单独占一行;
  1. 处理可能的异常:网络连接失败、页面解析错误、无新闻数据提取、文件保存失败等,并打印错误提示;
  1. 代码中需导入 requests 和 bs4 库(from bs4 import BeautifulSoup),并添加注释说明各步骤功能。”
5.2.3 生成的代码及运行验证
 

import requests

from bs4 import BeautifulSoup

import os

def crawl_tech_news():

# 目标网页URL(澎湃新闻科技板块)

news_url = "https://www.thepaper.cn/channel_25950"

# 请求头(模拟浏览器访问,避免被网站拦截)

headers = {

"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"

}

try:

# 步骤1:获取网页HTML内容

print("正在获取澎湃新闻科技板块页面...")

response = requests.get(news_url, headers=headers, timeout=15)

response.raise_for_status() # 状态码非200时抛出异常

response.encoding = response.apparent_encoding # 自动识别编码,避免乱码

html_content = response.text

print("页面获取成功,开始解析新闻数据...")

# 步骤2:解析HTML,提取新闻标题和链接

soup = BeautifulSoup(html_content, "html.parser")

# 查找所有class为"news_title"的<a>标签(新闻标题和链接所在标签)

news_tags = soup.find_all("a", class_="news_title")

if not news_tags:

print("错误:未找到新闻数据,可能是网页结构变化或访问被拦截。")

return

# 取前10条新闻

news_count = min(10, len(news_tags))

news_list = []

for i in range(news_count):

tag = news_tags[i]

# 提取新闻标题(strip()去除前后空格)

news_title = tag.get_text(strip=True)

# 提取新闻链接(处理相对链接,转为完整URL)

news_href = tag.get("href", "")

if news_href.startswith("/"): # 相对链接(如"/newsDetail_forward_123456")

news_href = "https://www.thepaper.cn" + news_href

news_list.append((news_title, news_href))

# 步骤3:获取保存路径并写入TXT

save_path = input("请输入TXT文件的保存路径(如D:/thepaper_tech_news.txt):").strip()

if not save_path:

print("错误:保存路径不能为空,请重新输入。")

return

if not save_path.endswith(".txt"):

save_path += ".txt"

with open(save_path, "w", encoding="utf-8") as f:

f.write(f"澎湃新闻科技板块前{news_count}条新闻(爬取时间:{pd.Timestamp.now().strftime('%Y-%m-%d %H:%M:%S')})\n")

f.write("="*80 + "\n")

for idx, (title, href) in enumerate(news_list, start=1):

f.write(f"{idx}. 新闻标题:{title},新闻链接:{href}\n")

print(f"\n爬取完成!共提取 {news_count} 条新闻,结果已保存到:{save_path}")

except requests.exceptions.Timeout:

print("错误:网络请求超时,请检查网络连接后重试。")

except requests.exceptions.ConnectionError:

print("错误:网络连接失败,无法访问目标网页。")

except requests.exceptions.HTTPError as e:

print(f"错误:访问网页失败,状态码:{e.response.status_code}(可能是网站拒绝访问)。")

except Exception as e:</doubaocanvas>

print (f"爬取过程中出现未知错误:{str (e)}")

执行新闻爬取函数

if name == "main":

导入 pandas 库(用于时间格式化,之前代码中遗漏导入)

import pandas as pd

crawl_tech_news()

 

#### 5.2.4 运行验证步骤

1. 确保已安装requests和bs4库(若未安装,在命令行执行“pip install requests beautifulsoup4 pandas”);

2. 运行代码,等待代码获取澎湃新闻科技板块页面并解析;

3. 输入TXT文件保存路径(如“D:/tech_news.txt”);

4. 打开保存的TXT文件,检查是否包含前10条新闻的标题和完整链接,格式是否符合“序号. 新闻标题:xxx,新闻链接:xxx”;

5. 测试异常情况(如断开网络、修改目标URL为无效地址),确认错误提示是否准确。

## 六、代码调试与优化:让生成的Python代码更可靠

### 6.1 常见错误排查与提示词补充技巧

#### 6.1.1 模块导入错误

当大模型生成的代码运行时出现“ModuleNotFoundError”,通常是因为代码中使用了第三方库,但提示词未明确说明需导入该库,或未提醒用户安装。

**解决技巧**:在提示词中明确要求“包含所有必要的库导入语句”,并补充“若使用第三方库,需在代码开头添加注释,说明库的安装命令”。例如,生成数据分析相关代码时,提示词可加入:“代码中需导入pandas和numpy库,并在开头添加注释‘# 安装依赖库:pip install pandas numpy’”。

#### 6.1.2 路径处理错误

代码中涉及文件或文件夹操作时,常出现“FileNotFoundError”,原因是路径格式不规范(如Windows系统路径使用“\”未转义,或相对路径与运行目录不匹配)。

**解决技巧**:在提示词中要求“处理路径时使用os.path模块的函数(如os.path.join、os.path.abspath),避免硬编码路径分隔符”,并提示“若涉及用户输入路径,需检查路径是否存在”。例如,文件操作相关提示词可加入:“使用os.path.join拼接文件路径,确保在Windows和Linux系统下都能正常运行;用户输入路径后,需用os.path.exists验证路径有效性”。

#### 6.1.3 数据类型不匹配

大模型生成的代码可能忽略数据类型转换,导致运行时出现“TypeError”(如将字符串直接用于数值计算)。

**解决技巧**:在提示词中明确数据类型要求,例如“用户输入的数值需转换为int类型后再进行计算,转换前需判断输入是否为有效数字,若不是则提示用户重新输入”。

### 6.2 代码可读性优化的提示词设计

#### 6.2.1 要求添加注释

清晰的注释能让代码更易理解和维护。在提示词中加入“代码需包含三类注释:1. 函数功能注释(说明函数作用、参数和返回值);2. 关键步骤注释(如‘# 筛选数值型列并计算统计指标’);3. 复杂逻辑注释(如‘# 处理Excel文件编码问题,优先尝试utf-8,失败则用gbk’)”。

例如,生成文件统计代码时,大模型会在函数定义处添加:

```python

def 统计文件信息():

"""

统计指定文件夹下所有文件的名称、后缀名和大小,并保存到TXT文件

参数:无(通过用户输入获取文件夹路径和保存路径)

返回值:无(直接打印结果和错误提示)

"""

6.2.2 规范代码格式

要求大模型生成的代码符合 Python PEP8 规范(如缩进用 4 个空格、变量名用小写下划线格式),提示词可加入:“代码需遵循 PEP8 规范,变量名使用小写下划线格式(如 file_path 而非 FilePath),函数名使用小写下划线格式,缩进统一用 4 个空格,每行代码长度不超过 120 字符”。

6.3 代码复用性提升的提示词策略

6.3.1 要求封装为函数

将核心功能封装为函数,能让代码更易复用。提示词中可明确 “将核心逻辑封装为独立函数,函数参数和返回值需清晰定义,主程序通过调用函数执行”。例如,生成天气查询代码时,大模型会将查询逻辑封装为get_city_weather()函数,而非直接写在主程序中。

6.3.2 支持参数配置

对于需要灵活调整的功能,提示词可要求 “代码支持通过参数配置关键参数”。例如,生成数据可视化代码时,提示词可加入:“将图表标题、x 轴标签、y 轴标签设为函数参数,用户调用函数时可自定义这些内容,默认值分别为‘数据图表’‘X 轴’‘Y 轴’”。

示例代码片段:

 

def draw_line_chart(x_data, y_data, title="数据图表", x_label="X轴", y_label="Y轴"):

"""

绘制折线图

参数:

x_data: 列表,x轴数据

y_data: 列表,y轴数据

title: 字符串,图表标题(默认:数据图表)

x_label: 字符串,x轴标签(默认:X轴)

y_label: 字符串,y轴标签(默认:Y轴)

返回值:无

"""

import matplotlib.pyplot as plt

plt.plot(x_data, y_data)

plt.title(title)

plt.xlabel(x_label)

plt.ylabel(y_label)

plt.show()

# 调用示例

draw_line_chart([1,2,3,4,5], [10,20,15,25,30], title="月度销量趋势", x_label="月份", y_label="销量")

七、实战总结与提示词模板

7.1 不同场景的提示词核心要素

7.1.1 数据处理场景

核心要素:1. 数据来源(如 CSV/Excel 文件、用户输入);2. 处理逻辑(如筛选、统计、合并);3. 输出格式(如保存为文件、打印到控制台);4. 异常处理(如文件不存在、数据缺失)。

模板:“请生成可直接运行的 Python 代码,功能:[描述数据处理需求,如‘读取 Excel 文件并合并多工作表数据’]。要求:1. 数据来源:[说明数据位置,如‘用户输入 Excel 文件路径’];2. 处理逻辑:[详细步骤,如‘筛选数值型列,计算平均值和标准差’];3. 输出格式:[如‘保存到新 CSV 文件,路径由用户输入’];4. 异常处理:[如‘处理文件不存在、编码错误’];5. 包含库导入语句和安装命令,添加关键步骤注释。”

7.1.2 文件操作场景

核心要素:1. 操作对象(如文件 / 文件夹路径);2. 操作类型(如统计、重命名、复制);3. 规则定义(如重命名格式、筛选条件);4. 结果保存(如 TXT 文件、原文件夹覆盖)。

模板:“请生成可直接运行的 Python 代码,功能:[描述文件操作需求,如‘批量重命名文件夹下的图片文件’]。要求:1. 操作对象:[如‘用户输入图片文件夹路径’];2. 操作规则:[如‘按 “图片_序号。原后缀” 命名,序号从 1 开始’];3. 结果处理:[如‘打印重命名日志,跳过已存在的新名称文件’];4. 异常处理:[如‘检查文件夹是否存在、无符合条件文件’];5. 仅使用 Python 内置模块,添加函数注释和步骤说明。”

7.1.3 网络请求场景

核心要素:1. 目标地址(如 API 接口 URL、网页链接);2. 请求方式(如 GET/POST);3. 数据解析(如 JSON 提取、HTML 标签筛选);4. 结果保存(如 TXT 文件、变量返回)。

模板:“请生成可直接运行的 Python 代码,功能:[描述网络请求需求,如‘调用天气 API 获取实时天气’]。要求:1. 目标地址:[如‘高德天气 API:https://restapi.amap.com/v3/weather/weatherInfo’];2. 请求参数:[如‘API 密钥和城市名称由用户输入’];3. 数据解析:[如‘提取温度、天气状况、湿度字段’];4. 结果输出:[如‘按指定格式打印到控制台’];5. 异常处理:[如‘网络超时、API 返回错误’];6. 包含库导入语句和依赖安装命令,添加 API 使用说明注释。”

7.2 提升代码生成效率的额外提示

7.2.1 明确技术栈限制

若对代码使用的库或 Python 版本有要求,需在提示词中明确。例如:“代码需兼容 Python 3.8 及以上版本,仅使用 requests 和内置模块,不允许使用 scrapy 等框架”。

7.2.2 加入示例数据

当需求较复杂时,在提示词中加入示例数据能帮助大模型更准确理解。例如,生成数据排序代码时,提示词可加入:“示例数据:[15,8,23,4,9],代码需对该列表进行升序排序并打印结果”。

7.2.3 分步骤描述需求

对于多步骤任务,按顺序描述需求能减少大模型遗漏步骤的概率。例如,生成 “数据读取→清洗→分析→可视化” 的代码时,提示词可按 “第一步:读取 CSV 文件;第二步:删除缺失值;第三步:计算各列平均值;第四步:用 matplotlib 绘制柱状图” 的顺序编写。

八、实际应用场景扩展

8.1 自动化办公:生成 Excel 报表自动化代码

8.1.1 需求描述

生成 Python 代码,从 CSV 文件读取销售数据(包含 “日期”“产品名称”“销售额”“销量” 字段),按 “产品名称” 分组计算总销售额和总销量,生成带表头样式的 Excel 报表(表头背景色为浅蓝色,字体加粗),并保存到指定路径。

8.1.2 提示词设计

“请生成可直接运行的 Python 代码,功能如下:

  1. 提示用户输入 CSV 销售数据文件路径(字段:日期、产品名称、销售额、销量);
  1. 使用 pandas 读取 CSV 文件,删除‘销售额’和‘销量’字段中的缺失值;
  1. 按‘产品名称’分组,计算每组的‘总销售额’(求和)和‘总销量’(求和);
  1. 使用 openpyxl 库设置 Excel 报表样式:表头(产品名称、总销售额、总销量)背景色为 #E6F3FF,字体加粗,列宽自适应内容;
  1. 提示用户输入 Excel 报表保存路径,将分组结果保存到该路径;
  1. 处理可能的异常:文件不存在、字段缺失、权限不足;
  1. 代码开头添加注释,说明依赖库安装命令(pip install pandas openpyxl),并添加关键步骤注释。”
8.1.3 生成的代码示例
 

# 安装依赖库:pip install pandas openpyxl

import pandas as pd

from openpyxl.styles import PatternFill, Font

from openpyxl.utils.dataframe import dataframe_to_rows

import os

def generate_sales_report():

"""

从CSV销售数据生成带样式的Excel报表

功能:读取数据→清洗→分组统计→生成样式化Excel

"""

# 1. 获取CSV文件路径

csv_path = input("请输入CSV销售数据文件路径:").strip()

if not os.path.exists(csv_path) or not csv_path.endswith('.csv'):

print("错误:请输入有效的CSV文件路径。")

return

# 2. 读取并清洗数据

try:

df = pd.read_csv(csv_path, encoding='utf-8')

# 检查必要字段是否存在

required_cols = ['产品名称', '销售额', '销量']

if not all(col in df.columns for col in required_cols):

print(f"错误:CSV文件缺少必要字段,需包含{required_cols}。")

return

# 删除缺失值

df_clean = df.dropna(subset=['销售额', '销量'])

print(f"成功读取数据,清洗后剩余 {len(df_clean)} 行。")

except Exception as e:

print(f"读取CSV文件出错:{str(e)}")

return

# 3. 按产品分组统计

sales_summary = df_clean.groupby('产品名称').agg(

总销售额=('销售额', 'sum'),

总销量=('销量', 'sum')

).reset_index()

print("分组统计完成,准备生成Excel报表...")

# 4. 生成带样式的Excel

save_path = input("请输入Excel报表保存路径(如D:/sales_report.xlsx):").strip()

if not save_path.endswith('.xlsx'):

save_path += '.xlsx'

try:

# 创建Excel写入器

with pd.ExcelWriter(save_path, engine='openpyxl') as writer:

sales_summary.to_excel(writer, sheet_name='销售汇总', index=False)

# 获取工作表对象

ws = writer.sheets['销售汇总']

# 设置表头样式(背景色#E6F3FF,字体加粗)

header_fill = PatternFill(start_color='E6F3FF', end_color='E6F3FF', fill_type='solid')

header_font = Font(bold=True)

for cell in ws[1]: # 表头在第1行

cell.fill = header_fill

cell.font = header_font

# 自适应列宽

for column in ws.columns:

max_length = 0

column_letter = column[0].column_letter # 获取列字母(如A、B)

for cell in column:

try:

if len(str(cell.value)) > max_length:

max_length = len(str(cell.value))

except:

pass

adjusted_width = min(max_length + 2, 20) # 限制最大宽度为20

ws.column_dimensions[column_letter].width = adjusted_width

print(f"Excel报表已保存到:{save_path}")

except Exception as e:

print(f"生成Excel报表出错:{str(e)}")

# 执行函数

if __name__ == "__main__":

generate_sales_report()

8.2 机器学习:生成数据预处理基础代码

8.2.1 需求描述

生成 Python 代码,读取鸢尾花数据集(从 sklearn 库加载),对特征数据(萼片长度、萼片宽度、花瓣长度、花瓣宽度)进行预处理:1. 标准化(均值为 0,标准差为 1);2. 划分训练集和测试集(测试集占比 30%,随机种子设为 42);3. 打印预处理后的训练集和测试集形状,以及标准化后的特征均值和标准差。

8.2.2 提示词设计

“请生成可直接运行的 Python 代码,功能如下:

  1. 从 sklearn.datasets 加载鸢尾花数据集,提取特征数据(X)和标签(y);
  1. 使用 sklearn.preprocessing.StandardScaler 对特征数据 X 进行标准化;
  1. 使用 sklearn.model_selection.train_test_split 划分训练集(X_train, y_train)和测试集(X_test, y_test),测试集占比 30%,random_state=42;
  1. 打印以下信息:(1)原始数据形状、训练集形状、测试集形状;(2)标准化后训练集各特征的均值(保留 2 位小数)和标准差(保留 2 位小数);
  1. 处理可能的导入错误(如 sklearn 未安装),代码开头添加依赖安装命令(pip install scikit-learn);
  1. 添加函数注释和关键步骤说明,变量名符合 PEP8 规范。”
8.2.3 生成的代码示例
 

# 安装依赖库:pip install scikit-learn pandas

from sklearn.datasets import load_iris

from sklearn.preprocessing import StandardScaler

from sklearn.model_selection import train_test_split

import pandas as pd

def iris_data_preprocessing():

"""

鸢尾花数据集预处理:加载数据→标准化→划分训练测试集

返回:X_train_scaled, X_test_scaled, y_train, y_test(标准化后的训练测试集和标签)

"""

# 1. 加载鸢尾花数据集

try:

iris = load_iris()

X = iris.data # 特征数据(4个特征)

y = iris.target # 标签

feature_names = iris.feature_names # 特征名称

print(f"成功加载鸢尾花数据集:原始数据形状 X={X.shape}, y={y.shape}")

except ImportError:

print("</doubaocanvas>

错误:未安装 scikit-learn 库,请先执行命令 “pip install scikit-learn” 安装依赖。

return None, None, None, None

except Exception as e:

print (f"加载数据集时出错:{str (e)}")

return None, None, None, None

2. 划分训练集和测试集(先划分再标准化,避免数据泄露)

X_train, X_test, y_train, y_test = train_test_split (

X, y, test_size=0.3, random_state=42, stratify=y # stratify=y 保证标签分布一致

)

print (f"数据集划分完成:训练集 X_train={X_train.shape}, 测试集 X_test={X_test.shape}")

3. 对特征数据进行标准化(仅用训练集拟合 scaler,避免测试集信息泄露)

scaler = StandardScaler ()

X_train_scaled = scaler.fit_transform (X_train) # 训练集:拟合 + 转换

X_test_scaled = scaler.transform (X_test) # 测试集:仅转换

4. 打印标准化后的统计信息

print ("\n 标准化后训练集各特征的统计信息:")

将标准化后的训练集转为 DataFrame,方便查看

X_train_scaled_df = pd.DataFrame(X_train_scaled, columns=feature_names)

计算均值和标准差并保留 2 位小数

mean_stats = X_train_scaled_df.mean().round(2)

std_stats = X_train_scaled_df.std().round(2)

合并并打印

stats_df = pd.DataFrame ({"均值": mean_stats, "标准差": std_stats})

print (stats_df)

return X_train_scaled, X_test_scaled, y_train, y_test

执行预处理函数并验证结果

if name == "main":

X_train_scaled, X_test_scaled, y_train, y_test = iris_data_preprocessing ()

if X_train_scaled is not None:

print (f"\n 预处理完成!可直接用于模型训练:")

print (f"标准化训练集形状:{X_train_scaled.shape},训练集标签形状:{y_train.shape}")

print (f"标准化测试集形状:{X_test_scaled.shape},测试集标签形状:{y_test.shape}")

 

#### 8.2.4 运行验证步骤

1. 安装依赖库:在命令行执行“pip install scikit-learn pandas”;

2. 运行代码,观察控制台输出,确认是否成功加载数据集(原始数据形状应为X=(150,4),y=(150,));

3. 检查数据集划分结果,训练集形状应为X_train=(105,4),测试集X_test=(45,4);

4. 查看标准化后的统计信息,各特征的均值应接近0(如-0.1~0.1之间),标准差应接近1(如0.9~1.1之间);

5. 确认代码无报错,且返回的预处理后数据可直接用于后续模型训练(如逻辑回归、决策树等)。

### 8.3 自动化测试:生成简单接口测试代码

#### 8.3.1 需求描述

生成Python代码,对公开的“JSONPlaceholder”接口(https://jsonplaceholder.typicode.com/posts/1)进行自动化测试。测试内容包括:1. 发送GET请求,检查响应状态码是否为200;2. 检查响应数据格式是否为JSON;3. 验证响应数据中关键字段(如“userId”“id”“title”“body”)是否存在;4. 打印测试结果(通过/失败)和详细日志。

#### 8.3.2 提示词设计

“请生成可直接运行的Python代码,功能如下:

1. 使用requests库发送GET请求到接口:https://jsonplaceholder.typicode.com/posts/1;

2. 设计3个测试用例:

(1)测试用例1:检查响应状态码是否等于200;

(2)测试用例2:检查响应的Content-Type是否包含“application/json”(确认是JSON格式);

(3)测试用例3:检查响应JSON数据中是否包含“userId”“id”“title”“body”4个字段;

3. 对每个测试用例,打印“测试用例X:[通过/失败],原因:XXX”;

4. 统计总测试用例数、通过数和失败数,最后打印测试总结(如“测试完成:共3个用例,通过2个,失败1个”);

5. 处理网络超时、请求失败等异常,异常时标记对应测试用例为失败,并打印异常原因;

6. 代码开头添加依赖安装命令(pip install requests),添加函数注释和测试步骤说明。”

#### 8.3.3 生成的代码示例

```python

# 安装依赖库:pip install requests

import requests

def test_jsonplaceholder_api():

"""

测试JSONPlaceholder接口(GET /posts/1)的可用性和数据正确性

包含3个测试用例,输出详细测试结果和总结

"""

api_url = "https://jsonplaceholder.typicode.com/posts/1"

test_cases = [] # 存储测试用例结果,每个元素为(用例名,是否通过,原因)

print(f"开始测试接口:{api_url}\n")

# 发送请求并获取响应(提前处理请求异常,避免后续用例中断)

try:

response = requests.get(api_url, timeout=10)

response.raise_for_status() # 若状态码非200,抛出HTTPError

print(f"请求接口成功,响应状态码:{response.status_code}\n")

except requests.exceptions.Timeout:

print("请求接口失败:网络超时(超过10秒)\n")

# 所有测试用例均失败

test_cases.append(("检查响应状态码", False, "请求超时,未获取到响应"))

test_cases.append(("检查JSON格式", False, "请求超时,未获取到响应"))

test_cases.append(("检查关键字段", False, "请求超时,未获取到响应"))

response = None # 标记响应为空,避免后续代码报错

except Exception as e:

print(f"请求接口失败:{str(e)}\n")

test_cases.append(("检查响应状态码", False, f"请求失败:{str(e)}"))

test_cases.append(("检查JSON格式", False, f"请求失败:{str(e)}"))

test_cases.append(("检查关键字段", False, f"请求失败:{str(e)}"))

response = None

# 若请求成功,执行3个测试用例

if response is not None:

# 测试用例1:检查响应状态码是否为200

case1_name = "检查响应状态码"

try:

if response.status_code == 200:

test_cases.append((case1_name, True, f"状态码为200,符合预期"))

else:

test_cases.append((case1_name, False, f"状态码为{response.status_code},预期200"))

except Exception as e:

test_cases.append((case1_name, False, f"执行失败:{str(e)}"))

# 测试用例2:检查响应是否为JSON格式

case2_name = "检查JSON格式"

try:

content_type = response.headers.get("Content-Type", "")

if "application/json" in content_type:

# 尝试解析JSON,进一步确认格式正确

response.json()

test_cases.append((case2_name, True, f"Content-Type包含application/json,且可正常解析JSON"))

else:

test_cases.append((case2_name, False, f"Content-Type为{content_type},预期包含application/json"))

except ValueError: # JSON解析失败

test_cases.append((case2_name, False, "Content-Type显示为JSON,但解析失败(格式错误)"))

except Exception as e:

test_cases.append((case2_name, False, f"执行失败:{str(e)}"))

# 测试用例3:检查关键字段是否存在

case3_name = "检查关键字段"

try:

response_data = response.json()

required_fields = ["userId", "id", "title", "body"]

missing_fields = [field for field in required_fields if field not in response_data]

if not missing_fields:

test_cases.append((case3_name, True, f"包含所有关键字段:{required_fields}"))

else:

test_cases.append((case3_name, False, f"缺失关键字段:{missing_fields}"))

except Exception as e:

test_cases.append((case3_name, False, f"执行失败:{str(e)}"))

# 打印所有测试用例结果

print("="*50)

print("测试用例结果详情:")

print("="*50)

for idx, (case_name, passed, reason) in enumerate(test_cases, start=1):

status = "通过" if passed else "失败"

print(f"测试用例{idx}:{case_name} → {status},原因:{reason}")

# 统计并打印测试总结

total = len(test_cases)

passed_count = sum(1 for _, passed, _ in test_cases if passed)

failed_count = total - passed_count

print("\n" + "="*50)

print(f"测试总结:共{total}个用例,通过{passed_count}个,失败{failed_count}个")

print("="*50)

# 执行接口测试

if __name__ == "__main__":

test_jsonplaceholder_api()

8.3.4 运行验证步骤
  1. 安装依赖库:命令行执行 “pip install requests”;
  1. 运行代码,观察控制台输出,确认是否成功发送请求(正常情况下请求应成功);
  1. 检查 3 个测试用例结果:
    • 测试用例 1:应显示 “通过”,原因 “状态码为 200,符合预期”;
    • 测试用例 2:应显示 “通过”,原因 “Content-Type 包含 application/json,且可正常解析 JSON”;
    • 测试用例 3:应显示 “通过”,原因 “包含所有关键字段:['userId', 'id', 'title', 'body']”;
  1. 测试异常场景:修改接口 URL 为 “https://jsonplaceholder.typicode.com/posts/99999”(不存在的资源),重新运行,确认测试用例 1 会失败(状态码 404),其他用例根据实际响应结果判断;
  1. 确认测试总结统计正确,日志清晰易懂。

九、常见问题与解决方案

9.1 大模型生成的代码无法运行怎么办?

9.1.1 检查依赖库是否安装

若运行时出现 “ModuleNotFoundError: No module named 'xxx'”,首先检查是否安装了代码中使用的第三方库。解决方案:

  1. 查看代码开头的注释,找到对应的安装命令(如 “pip install pandas requests”);
  1. 在命令行执行安装命令,确保安装成功;
  1. 若安装后仍报错,检查 Python 环境是否正确(如虚拟环境未激活,导致库安装到全局环境)。
9.1.2 排查路径与文件问题

若出现 “FileNotFoundError: [Errno 2] No such file or directory: 'xxx'”,解决方案:

  1. 确认输入的文件 / 文件夹路径是否正确(绝对路径需包含完整盘符,如 “D:/data.csv”,而非 “data.csv”);
  1. 检查路径中的特殊字符(如空格、中文)是否导致识别错误,可尝试将文件移到无特殊字符的路径下(如 “D:/test/data.csv”);
  1. 代码中若使用相对路径,确认代码运行目录与文件所在目录一致(可通过 “print (os.getcwd ())” 查看当前运行目录)。
9.1.3 处理数据格式错误

若出现 “ValueError: could not convert string to float: 'xxx'”(数据类型转换错误),解决方案:

  1. 检查输入数据的格式,确认是否包含非数值字符(如文本文件中的字母、符号);
  1. 在提示词中补充 “对输入数据进行合法性校验,如遇到非数值字符需提示用户并跳过”;
  1. 若代码已生成,手动添加数据校验逻辑(如使用 “try-except” 捕获转换错误)。

9.2 如何让大模型生成更贴合实际需求的代码?

9.2.1 补充业务场景细节

模糊的需求会导致代码通用性强但实用性低。例如,仅说 “生成数据统计代码”,不如补充 “用于电商销售数据统计,需按日期分组计算每日销售额,排除退款订单,结果保存为 Excel 并添加数据透视表”。补充业务细节后,大模型生成的代码会更贴合实际工作流。

9.2.2 明确代码运行环境

不同环境对代码有不同要求。例如,提示词中加入 “代码需运行在 Python 3.7 环境,且只能使用公司内网允许的库(pandas、openpyxl),不能使用 requests 等网络相关库”,大模型会避免使用不兼容的语法或库,减少后续修改成本。

9.2.3 提供示例输入输出

对于复杂需求,提供示例输入输出能让大模型更准确理解逻辑。例如,生成 “用户登录验证代码” 时,提示词可加入 “示例输入:用户名 ='admin',密码 ='123456' → 输出:' 登录成功 ';示例输入:用户名 ='admin',密码 ='wrong' → 输出:' 密码错误 '”,大模型会参考示例逻辑生成代码。

9.3 生成的代码存在安全风险怎么办?

9.3.1 避免直接处理用户输入的危险操作

若代码涉及文件写入、命令执行等操作,大模型可能未考虑安全风险(如用户输入恶意路径导致文件覆盖)。解决方案:

  1. 提示词中加入 “对用户输入的路径进行校验,禁止输入根目录(如 '/' 或 'C:/')或包含 '../' 的路径(防止路径遍历攻击)”;
  1. 生成代码后,检查是否有直接使用用户输入执行命令(如 “os.system (user_input)”)的逻辑,替换为安全的方式(如使用 “subprocess.run” 并指定参数列表)。
9.3.2 网络请求需添加安全校验

若代码涉及网络请求,需避免泄露敏感信息。提示词中加入 “API 密钥需从环境变量读取,不能硬编码在代码中;发送 HTTPS 请求时需验证 SSL 证书,禁止跳过证书校验(如 requests 的 verify=False)”,减少密钥泄露和中间人攻击风险。

9.3.3 数据处理需保护隐私

若代码处理用户隐私数据(如手机号、身份证号),提示词中加入 “对输出的隐私数据进行脱敏处理(如手机号显示为 '138****5678',身份证号显示为 '110101********1234')”,避免数据泄露合规风险。

您可能感兴趣的与本文相关的镜像

Seed-Coder-8B-Base

Seed-Coder-8B-Base

文本生成
Seed-Coder

Seed-Coder是一个功能强大、透明、参数高效的 8B 级开源代码模型系列,包括基础变体、指导变体和推理变体,由字节团队开源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值