2017-11-19 3 views
0
from typing import List, Tuple, Dict, TextIO 
def names(file:TextIO) -> None: 
    """ create a list with all the names from the file 
    """ 
    lines = "" 
    firstname = "" 
    lastname = "" 
    name_list = [] 
    file = open(file, 'r') 
    for line in file: 
     line = line.strip() 
     lines += line 
    for i in range(len(lines)): 
     if lines[i] == ",": 
     lastname += lines[i+2] 
     first = i 
     last = i + 3 
     while lines[first].islower() and lines[last].islower(): 
     firstname += lines[first] 
     lastname += lines[last] 
     first -= 1 
     last += 1 
    name_list.append(firstname + " " + lastname) 

immer wieder die name_list ist nicht definiert, wo ging schief?Python - Liste ist nicht definiert

+0

Können Sie Einbuchtung Fehler zu beheben, bevor? (Linie 15) – carlosvin

+0

Entschuldigung. Just fixed – 1346

+0

Ich denke, Sie rufen diese Funktion aus einem Code, wie print (Namen ('yourfile.path.txt')), aber Namen gibt nichts zurück. Ich denke, du musst eine weitere Zeile return name_list hinzufügen. Aber ich rate nur, es wäre einfacher, wenn Sie vollständigen Code hinzufügen, oder zumindest erklären, was Sie erwarten, dass die Funktion zu tun – carlosvin

Antwort

0

Ich habe versucht, Ihren Code und ich habe nicht den gleichen Fehler. Vielleicht überprüfen Sie, ob die Einrückung in Ihrem Code korrekt ist.

Auf der anderen Seite Sie hier ein Problem haben:

if lines[i] == ",": 
    lastname += lines[i+2] 
    first = i 
    last = i + 3 

Sie deklarieren lokale Variablen in einem if Block, werden sie später im Code nicht sichtbar sein, wie in der while Schleife nur danach .

Sie müssen die Variablen in einem Block deklarieren, in dem sie von allen nachfolgenden Blöcken, die sie verwenden, sichtbar sein werden.

mein Vorschlag wäre, sich an der Spitze Ihrer Funktion auf die Variablen hinzufügen:

lines = "" 
firstname = "" 
lastname = "" 
name_list = [] 
lines = 0 # or whatever value it's supposed to start with 
last = 0 # or whatever value it's supposed to start with 
+0

Ich habe gerade versucht auf lokale Shell, da ich es online gemacht habe, aber immer noch das Gleiche. Ich verstehe nur nicht, warum es undefiniert sagt, während ich es im Voraus klar definierte – 1346

+0

https://repl.it/repls/TealEuphoricYellowwhitebutterfly Ich versuchte es auch online, immer noch nicht Ihren Fehler ... – ShadowMitia

Verwandte Themen