Python 类型错误:序列项 0:预期为字符串,找到 NoneType

0 投票
2 回答
13042 浏览
提问于 2025-04-18 16:41

我从一本书上复制了这段代码:

lyst = {'Hi':'Hello'}
def changeWord(sentence):
    def getWord(word):
        lyst.get(word, word)
    return ''.join(map(getWord, sentence.split()))

但是我遇到了这个错误:

Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    cambiaPronome('ciao')
  File "C:\Python33\2.py", line 6, in cambiaPronome
    return ''.join(map(getWord, list(frase)))
TypeError: sequence item 0: expected str instance, NoneType found

这是什么问题呢?

2 个回答

0

问题在于,你试图把一种叫做 NoneType 的类型写入字符串,这样是不允许的。

如果你想把 None 这些值也包含在内,可以考虑把它们转换成字符串。

你可以用一种叫做列表推导式的方法来实现,比如:

return ''.join([str(x) for x in map(getWord, sentence.split())])

不过在这种情况下,要正确处理,你需要在内部函数中返回一些东西,否则就相当于 return None

2

getWord这个函数没有明确地返回任何东西,所以它默认返回的是None。你可以试着让它返回一些东西,比如:

def getWord(word):
    return lyst.get(word, word)

撰写回答