猿问

“NoneType”类型的对象没有用于正则表达式的 len()

对于以下问题:使用正则表达式查找以下字符串中所有名称的列表。我写了这段代码:


import re

def names():

    simple_string = """Amy is 5 years old, and her sister Mary is 2 years old. 

    Ruth and Peter, their parents, have 3 kids."""

    names= re.findall("[A-Z][a-z]*", simple_string)

    print(names)

    print(len(names))

names()

它给出了这样的正确输出: **['Amy', 'Mary', 'Ruth', 'Peter'] , 4** 但是,当我使用这个时: **assert len(names()) == 4, "There are four names in the simple_string"** 它给了我这个错误: **object of type 'NoneType' has no len()** 我不知道函数名称中的错误在哪里,有人可以帮忙吗?注意:我无法更改断言函数,它在问题内。



翻过高山走不出你
浏览 118回答 3
3回答

偶然的你

names()不返回任何内容,因此len()不起作用。尝试添加 return(names). 我还会避免在函数内部使用函数名称作为变量名称。

蛊毒传说

当您打印names()to的输出时sys.stdout,您不会返回其中变量的值names,这意味着函数本身返回None。添加return names到函数的末尾以使其他代码正常工作。

侃侃尔雅

您调用len(names())此函数是询问名称函数返回的长度。它不返回任何内容,因此您会收到 NoneType 错误消息。
随时随地看视频慕课网APP

相关分类

Python
我要回答