【问题标题】:Python TypeError: sequence item 0: expected str instance, NoneType foundPython TypeError:序列项0:预期的str实例,找到NoneType
【发布时间】:2017-12-05 20:09:49
【问题描述】:

我从书中复制了这段代码:

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

怎么了?

【问题讨论】:

  • return ''.join(map(getWord, list(frase))) 不在书中。为什么不向我们展示您编写的实际代码?
  • 您没有从getWord 方法返回任何内容。
  • 对于任何感兴趣的人来说,这个错误确实发生在 pg 上。 236 篇 Python 基础:第一个程序 由 Kenneth Lambert 撰写,因此并非由 OP 发起。
  • @DSM,你是怎么找到的?
  • @PadraicCunningham:用谷歌搜索最不可能由初学者编写的代码行(return 行。)

标签: python map


【解决方案1】:

getWord 函数没有显式返回任何内容,因此它隐式返回 None。尝试返回一些东西,例如:

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

【讨论】:

    【解决方案2】:

    问题是您正在尝试将类型为 NoneType 的字符串写入字符串。这是不允许的。

    如果您有兴趣获取 None 值以及您可以做的事情之一是将它们转换为字符串。

    您可以通过列表理解来做到这一点,例如:

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

    但要在这种情况下正确执行,您必须在内部函数上返回一些内容,否则您将拥有与 return None 等价的内容

    【讨论】:

      猜你喜欢
      • 2020-04-28
      • 2017-06-05
      • 1970-01-01
      • 2020-09-29
      • 2021-01-08
      • 2021-05-06
      • 1970-01-01
      • 2019-05-29
      • 2022-10-18
      相关资源
      最近更新 更多