ChatGPT最近风头是真的猛,不过它的功能也确实很强大。从表面的聊天到更深入的回答科学问题,再到代码检查,ChatGPT都彰显出了它很强的应答功能,其中代码检查和询问功能就是我们这种小白的福音啊。
虽然之前用的很爽,但是就在今天的代码提问时我发现了一个挺大的问题。
最近有点想将处理基因组大数据的技能先入门了,这样以后做实验有收集到了数据就可以进行各种数据挖掘,而数据挖掘的入门就是python
今天在使用到python的RegEx(可以进行字符串检索的模块)时,我问了ChatGPT有关RegEx模块中findall函数的问题
ChatGPT在关于re.findall函数解释的前半段部分并没有错,re.findall()函数可用于查找字符串中出现的所有模式,并将其作为列表返回,但在它举的例子的结果是错的。
输入
import re
txt = "The quick brown fox jumps over the lazy dog."
matches = re.findall("o.", txt)
print(matches)
返回的结果应该是
即
['ow', 'ox', 'ov', 'og']
但是ChatGPT返回的结果是
['ox', 'ov']
ChatGPT还贴心地解释了re.findall函数'o.'和txt的两个参数大意是这里的'o.'后面可以跟任何字符串作为pattern进行匹配
但是txt = "The quick brown fox jumps over the lazy dog."这里面的brown和dog不是应该也有匹配项ow和og吗
对此ChatGPT的解释是:
There .findall() function returns a list of all non-overlapping matches of the pattern in the string.
即返回字符串中模式的所有非重叠匹配项的列表
对此我直接懵了
对此问题我展开追问
而ChatGPT的回答说的好像有道理,但是就是看不懂,以至于一度让我怀疑自己的智商不太行
ChatGPT的回答大意是:
然而,当模式应用于字符串“brown”时,前两个字符“br”不匹配模式,但接下来的两个字符“ow”匹配模式“o.”,这意味着“ow”是根据模式匹配。但是由于之前的匹配“ox”已经包含了“ow”中的“o”字符,“ow”与之前的匹配重叠并且不被认为是非重叠匹配。因此,“ow”不包含在 re.findall() 的输出中。
还贴心的给出了我想输出'ow'应该怎么做
然后我就不信了,自己去pycharm里面输入了一下,结果返回的是
于是就纠正了一下ChatGPT
于是乎就是ChatGPT的疯狂道歉和输出纠正后的正确答案
综上所述,ChatGPT不是万能的,就算是在它表现还不错的代码领域,辩证对待任何结果。