Python错误“TypeError:类型为'NoneType'的对象没有len()

时间:2017-04-09 18:24:01

标签: python python-3.x

我从这个python代码

收到错误
def read_lines():
    user_entries = []
    contin = True
    while contin == True:
        user_input = input(str("Enter string or just press enter to finish: "))
        user_entries.append(user_input)
        if len(user_input) == 0:
            contin = False
    print(user_entries)

lines = read_lines()
print(lines)
ci = o
contin = True
while contin:
    if ci == len(lines):
        contin = False
    else:
        line = lines(ci, ci + 1)
        ci = ci + 1
        print(ci, line)

然后我得到了这个错误...

Traceback (most recent call last):
  File "test.py", line 8 in <module>
    if ci == len(lines):
Type Error: object of type 'NoneType' has no len()

我不太清楚为什么会收到此错误。当它执行行打印(行)时,它返回None。这可能是问题,但我不确定如何解决它。

3 个答案:

答案 0 :(得分:1)

您的函数read_lines不会返回任何内容

def read_lines():
    user_entries = []
    contin = True
    while contin == True:
        user_input = input(str("Enter string or just press enter to finish: "))
        user_entries.append(user_input)
        if len(user_input) == 0:
            contin = False
    print(user_entries) # this prints user_entries but doesn't return it

在致电return user_entries后向您的函数添加print,您的代码应该有效

答案 1 :(得分:1)

您定义的功能read_lines()不向lines返回任何内容,因此

在您的功能中,在打印后添加返回。

return user_entries

您还需要对代码进行更改,例如line = lines(ci, ci + 1)

lines是一个列表:它不可调用。

ci = 0代替ci = o

请删除拼写错误,错误,然后重试。应该工作。

答案 2 :(得分:0)

我使用python 2.7

执行了此代码

- &gt;函数read_lines()不返回任何一件事。

但在while循环中,而不是使用:

user_input = input(str("Enter string or just press enter to finish: "))

使用:

user_input = raw_input("Enter string or just press enter to finish: ")

所以你不会有下一个错误。 ;)