2017-04-09 8 views
0

ich einen Fehler von diesem Python-Code bekommenPython Fehler „Typeerror: Objekt vom Typ 'NoneType' hat keine len()

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) 

ich dann diesen Fehler ...

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() 

Ich bin nicht ganz sicher, warum ich diesen Fehler bekomme.Wenn es den Zeilenausdruck (Zeilen) ausführt, gibt es keine. Das ist wahrscheinlich das Problem, aber ich bin mir nicht sicher, wie es zu beheben.

+0

die von dir definierte Funktion 'read_lines()' gibt nichts zurück zu 'lines', also ist es ** None **. – bhansa

+0

Vergessen Sie nicht, eine der Antworten als [beantwortet] zu markieren (https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjf__iKnpnTAhXky4MKHeloBR8QFggMAA&url=https%3A% 2F% 2Fmeta.stackexchange.com% 2Fequestions% 2F5234% 2Fhow-akzeptiert-eine-Antwort-Arbeit & usg = AFQjCNE2e2orpogybVZU_sdJD6evWbT5Fw & bvm = bv.152174688, d.amc & cad = rja) – bhansa

Antwort

1

Die Funktion Sie read_lines() Rückkehr nichts zu lines so ist es Keine definiert arbeiten.

In Ihrer Funktion fügen Sie nach dem Drucken zurück.

return user_entries 

Auch müssen Sie Änderungen in Ihrem Code tun wie line = lines(ci, ci + 1)

lines eine Liste ist: es ist nicht aufrufbar ist.

ci = 0 statt ci = o

Bitte entfernen Sie die Fehler, Fehler und versuchen Sie es erneut. Sollte arbeiten.

1

Ihre Funktion read_lines nicht alles zurückgeben

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 

eine return user_entries auf Ihre Funktion hinzufügen nach dem Aufruf von print und Ihr Code sollte

0

ich diesen Code ausgeführt haben mit Python 2.7

-> Funktion read_lines() gibt nichts zurück, das ist eine Sache.

aber innerhalb der while-Schleife anstelle der Verwendung:

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

Verwendung:

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

So werden Sie nicht nächste Fehler haben. ;)

Verwandte Themen