繁体   English   中英

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

[英]Python error "TypeError: object of type 'NoneType' has no len()

我从这个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()

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

您的函数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

在调用print之后,将return user_entries添加到您的函数中,您的代码应该可以正常工作

您定义的函数read_lines()不会向lines返回任何内容,因此它为None

在您的函数中添加打印后的返回。

return user_entries

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

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

ci = 0而不是ci = o

请清除输入错误,错误,然后重试。 应该管用。

我已经使用python 2.7执行了此代码

->函数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: ")

这样您就不会有下一个错误。 ;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM