簡體   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