如何使用 ChatGPT 编写 Python 函数
微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩
在这篇文章中,我将分享如何使用 ChatGPT 来帮助我编程的过程。我们将看到它在哪些方面做得好,在哪些方面做得不好。
TLDR:
-
为 ChatGPT 提供大量上下文和清晰的说明。
-
一次只创建一个函数。
-
请 ChatGPT 编写单元测试,然后修复单元测试。
-
使用测试来查找功能失败的地方。
-
请 ChatGPT 修复该功能,如果不能,请让 ChatGPT 尝试以不同的方式解决问题。
-
如有必要,请 ChatGPT 创建 Docstring 和描述性变量名称。
比方说,我想要一个函数来删除字符串开头和结尾的空格,删除重复的空格,并确保每个句子的第一个单词大写。
这个结果实际上是不正确的(至少在两个方面)。第一个错误是string.capitalize()
确保字符串的第一个字母大写,其他字母将变为小写。这不是我想要的。如果一个字母已经是大写的,我希望它保持大写。如果字符串中有多个句子,我希望每个句子的第一个单词都是大写。第二个错误是示例和输出。实际输出将是Hello, world! how are you today?
.
我可以将错误告诉 ChatGPT 并要求修复,但我要改变策略。我更喜欢使用 Regex 的函数。我将打开一个新聊天并重新开始。
这看起来好多了。正则表达式可能难以理解,所以我感谢 ChatGPT 对其进行解释。我认为这个函数仍然无法将以“?”开头的句子的第一个单词大写。或“!”。也许它会以某些我无法通过观察判断的方式失败。我会问 ChatGPT。
ChatGPT 回答是的,但它是错误的。这不仅是错误的,而且在运行该函数之后,我现在知道它根本无法将任何东西大写。
这告诉我,我的要求可能过于雄心勃勃。我会再试一次,在新聊天中添加更多上下文。
这段代码也是错误的。它不会将每个句子开头的单词大写。我怀疑这是lambda
给我们带来麻烦的功能。在新聊天中,我会要求它避免使用该lambda
功能。
这个函数是迄今为止最好的结果,但也是错误的。它不会将字符串中的第一个单词大写。很容易原谅 ChatGPT 这个错误,因为指令可能被认为是模棱两可的,但示例的输出无疑是错误的。让我们暂时离开它。
无论您的编码经验如何,编写单元测试始终是一个好习惯。ChatGPT 擅长于此。
ChatGPT 在这方面没问题。它没有为每个单元测试创建一个函数,并且前两个测试的输入和预期结果不一致。第一个测试期望第一个字母保持小写,第二个测试期望它使第一个字母大写。
它并不完美,但对我们来说是一个良好的开端。让我们看看是否可以提高可读性。
下一步将是修复单元测试,添加我自己的单元测试,并找出此功能失败的地方。当我发现错误时,我会要求 ChatGPT 修复它(或者自己修复)。
这修复了字符串中的第一个元素是字母时的问题,但是当第一个单词的开头有空格时会失败。幸运的是,我们编写了单元测试来捕获这些问题。我可以要求 ChatGPT 解决此问题,但我发现可以通过将行移至s = re.sub(r'\s+', ' ').strip()
函数顶部来解决此问题。
最后,我想整理一下功能。评论应该回答“为什么”,而不是“如何”。
文档字符串非常好。我向 ChatGPT 重申我希望删除评论,但它仍然没有删除它们。我必须自己删除评论。
如果我觉得有点异想天开,我可能会要求 ChatGPT 在 Docstring 方面发挥创意。
在这种情况下,它有点太罗嗦了,所以我会继续原来的。
当我开始写这篇文章时,我没想到 ChatGPT 会在这个任务上遇到这么多麻烦。不过,它确实让我很容易展示“ChatGPT 做得不好的地方”。
TLDR
-
使用清晰的说明制作您的 ChatGPT 提示。您甚至可以包括示例。
-
创建一个独立的函数(更容易测试)。
-
ChatGPT 可以帮助编写单元测试,但您需要确保您有足够且正确的测试。
-
使用单元测试来查找功能失败的地方。请ChatGPT 修复该功能,如果不能,请找到错误并让ChatGPT 以不同的方式解决问题。
-
ChatGPT 可以编写 Docstrings 并重命名变量以更具描述性。您甚至可以要求它建议一个更好的函数名称。
你可能想知道我是否使用 ChatGPT 来帮助我编写这篇博文的非代码部分。我确实要求它校对和改进第一段,但我发现重写不必要地冗长,而且不符合我的写作风格。最后,我没有使用它。
推荐书单
《Python从入门到精通(第2版)》
《Python从入门到精通(第2版)》从初学者角度出发,通过通俗易懂的语言、丰富多彩的实例,详细介绍了使用Python进行程序开发应该掌握的各方面技术。全书共分23章,包括初识Python、Python语言基础、运算符与表达式、流程控制语句、列表和元组、字典和集合、字符串、Python中使用正则表达式、函数、面向对象程序设计、模块、异常处理及程序调试、文件及目录操作、操作数据库、GUI界面编程、Pygame游戏编程、网络爬虫开发、使用进程和线程、网络编程、Web编程、Flask框架、e起去旅行网站、AI图像识别工具等内容。所有知识都结合具体实例进行介绍,涉及的程序代码都给出了详细的注释,读者可轻松领会Python程序开发的精髓,快速提升开发技能。除此之外,该书还附配了243集高清教学微视频及PPT电子教案。
《Python从入门到精通(第2版)》【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《Python从入门到精通(第2版)》在线选购,本书作者:明日科技,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!https://item.jd.com/13284890.html
精彩回顾
《如虎添翼,将ChatGPT和Python结合起来!》
《ChatGPT优化Python代码的小技巧》
《使用ChatGPT提升Python编程效率》
微信搜索关注《Python学研大本营》
访问【IT今日热榜】,发现每日技术热点