ChatGPT真的能提升生产力吗?【AI版】
无意间的刷到的视频
晚上在家刷视频,突然看到一个在讲关于AI编程的视频,心里疑问:真的假的,这么厉害的吗?于是我看完他的讲解和操作,他这个视频中确实用ChatGPT实现了他所提出的要求,编写了一段代码,当然,up主要求用的Python编写的,我不知道用C++或者Java行不行得通,接下来我就亲自使用以下ChatGPT,验验货。
一、提需求
我需要将给定文件夹中的所有Excel表数据,汇总到一个给定的Excel表中,请按照以下要求,
编写Python:
一、每个分表中有两个sheet,第一个是班级基本信息,第二个是班级学生成绩排名;
二、班级基本信息sheet中,班级编号、教师姓名、班级人数、班长,教师姓名;
三、班级成绩排名sheet中,第一列是序号、第二列是学号、第三列是学生姓名、第四列是成绩;
四、总表只需要一个sheet,并且需将列设置为序号、班级编号、教师姓名、班级人数、班长、学号、学生姓名、成绩;
五、班级编号、教师姓名、班级人数,必须要和每个学生的成绩信息一一对应;
六、做一个程序运行进度条,表示已复制到的学生条目数。
二、ChatGPT用Python编写代码
下面是使用GPT的截图:
生成代码如下:
import os
import openpyxl
from tqdm import tqdm
# 定义常量
BASE_DIR = 'path/to/folder' # 文件夹路径
OUTPUT_FILE = 'path/to/output.xlsx' # 输出文件路径
SHEET_NAMES = ['基本信息', '成绩排名'] # sheet名称
HEADER_ROWS = [1, 1] # 表头所在行数
HEADER_COLS = [1, 1] # 表头所在列数
CLASS_INFO_COLS = [1, 2, 3, 4, 2] # 班级基本信息所在列数
RANK_COLS = [1, 2, 3, 4] # 成绩排名所在列数
# 初始化输出文件
output_wb = openpyxl.Workbook()
output_ws = output_wb.active
output_ws.append(['序号', '班级编号', '教师姓名', '班级人数', '班长', '学号', '学生姓名', '成绩'])
# 遍历文件夹中的Excel文件
for filename in tqdm(os.listdir(BASE_DIR)):
if not filename.endswith('.xlsx'):
continue
# 打开文件
filepath = os.path.join(BASE_DIR, filename)
wb = openpyxl.load_workbook(filepath)
# 遍历sheet
for i, sheet_name in enumerate(SHEET_NAMES):
ws = wb[sheet_name]
# 获取表头
header_row = HEADER_ROWS[i]
header_col = HEADER_COLS[i]
header = [cell.value for cell in ws[header_row] if cell.value]
# 获取班级基本信息
if sheet_name == '基本信息':
class_info = [ws.cell(row=header_row+1, column=col).value for col in CLASS_INFO_COLS]
# 获取成绩排名
elif sheet_name == '成绩排名':
for row in range(header_row+1, ws.max_row+1):
rank = [ws.cell(row=row, column=col).value for col in RANK_COLS]
output_ws.append([output_ws.max_row, *class_info, *rank])
wb.close()
# 保存输出文件
output_wb.save(OUTPUT_FILE)
这还不是最厉害的
三、意外的解释
更令人惊讶的是还会对代码进行解释,这就不得了了。接下来看看GPT对它所生成代码的解释:
解释一下代码的主要部分:
- 第1行导入了必要的模块,其中os用于文件操作,openpyxl用于读写Excel文件,tqdm用于显示进度条。
- 第5-9行定义了常量,包括文件夹路径、输出文件路径、sheet名称等。
- 第12-19行初始化输出文件,创建一个新的Excel文件,并在第一个sheet中添加表头。
- 第22-42行遍历文件夹中的Excel文件,打开每个文件并遍历其中的sheet。
- 第25-27行判断当前sheet是班级基本信息还是成绩排名,分别获取表头和班级基本信息。
- 第30-37行在成绩排名sheet中遍历每一行,获取学生的成绩信息,并将班级基本信息和成绩信息合并到输出文件中。
- 第40-41行关闭当前文件。
- 第44-46行保存输出文件。
其中使用了tqdm模块来显示进度条,可以让程序更加友好。如果没有安装该模块,可以使用以下命令进行安装:
pip install tqdm
这个效果非常不错了,如果运行上述代码有误,还可以复制错误提示让GPT分析并解决问题,可以说是保姆级别的开发助手了。
四、ChatGPT改用Java编写代码
本来到这里视频里up主就结束的,我又想了一下,能否用Java语言实现出来,于是就开始给GPT命令,很简单,只需把需求描述里的Python改为Java即可:
生成代码如下:
import java.io.File;
import java.io.IOException;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class ExcelMerger {
public static final String BASE_DIR = "path/to/folder"; // 文件夹路径
public static final String OUTPUT_FILE = "path/to/output.xlsx"; // 输出文件路径
public static final String[] SHEET_NAMES = {
"基本信息", "成绩排名"}; // sheet名称
public static final int[] HEADER_ROWS = {
0, 0}; // 表头所在行数
public static final int[] HEADER_COLS = {
0,<