目录
一、比赛缘起
最近,ChatGPT被送上热搜,其强大的写代码功能让无数程序员面临失业的风险,为了验证ChatGPT写代码的能力,我准备和它进行一次比赛。
以下是我手头刚处理完的一个小项目,我试着让ChatGPT来处理。
二、比赛题目
遍历文件夹下面的所有xlsx文件,遍历每个xlsx文件中的工作表,遍历工作表中的每一个单元格,查找单元格中含有"张三"的文件,并打印出名字。并把文件复制到aa文件夹下。
经过大约半个小时,数次调试,我写出了以下代码。
import openpyxlimport os
import shutil
files = [file for file in os.listdir(os.curdir) if file.endswith("xlsx")]
for file in files:
wb = openpyxl.load_workbook(file)
#shts = wb.worksheets
for sht in wb:
for col in sht.columns:
for row in col:
if row.value !=None:
if "张三" in row.value:
print(file)
shutil.copy(file,os.path.join("aa",file))
而我向ChatGPT提问不到3秒钟,它就给出了如下的解法:
ChatGPT截图
详细代码:
import osimport shutil
import openpyxl
# Set the path to the directory that contains the xlsx files
path = /path/to/directory
# Set the destination directory for the copied files
destination = /path/to/aa/directory
# Iterate through the files in the directory
for filename in os.listdir(path):
# Check if the file is an xlsx file
if filename.endswith(.xlsx):
# Load the workbook
wb = openpyxl.load_workbook(os.path.join(path, filename))
# Iterate through the worksheets in the workbook
for sheet in wb:
# Iterate through the cells in the worksheet
for row in sheet.rows:
for cell in row:
# Check if the cell value is "张三"
if cell.value == "张三":
# Print the name
print("Found 张三 in file:", filename)
# Copy the file to the destination directory
shutil.copy(os.path.join(path, filename), destination)
break
经测试以上代码可用。相比我的代码,ChatGPT的代码写的速度更快,而且还有注释和文字解释,非常的详细。
三、比赛结果
我在代码写作速度、代码准确度、清晰度上低于ChatGPT,但是我在获取当前目录下文件时用了列表推导式,比ChatGPT更加灵活和简洁。整体上,其编程能力要高于我个人。
四、比赛总结
ChatGPT是编程者的福音,可以帮我们实现一些常见功能的代码,甚至可以编写小游戏,可谓编程高手。ChatGPT的代码编写速度更快,注释更清晰, 理解更方便,而且没有冗余代码。比如遍历工作表可以直接写成for sheets in workbook: 而我则先获得sheets,再遍历sheets,相比之下我的代码不够简洁。可以多向ChatGPT学习编程思维和代码,但不能完全依赖它,毕竟我们不能总是靠它来写代码。它可以给我们提供建议和思路,但是永远也不可能取代我们。加强英语学习,因为我发现,它的回复现在英文越来越多,可能后台有所限制,如果英文水平有限,那对于它的理解就会不够透彻。
未来,即使ChatGPT开启收费,我想很多人也会为其提供的高质量服务而付费的。
关注我一个喜欢翻译和Python编程的文科生,带给你不一样的学习体验。