2016-07-03 22 views
-3

Hier habe ich eine Funktion definiert, die eine Liste mit dem Argument "Nummer in der Liste" erstellt. Ich kann die Funktion verwenden, aber wenn ich versuche, die Liste zu drucken, heißt es, dass die Variable nicht definiert ist. Jedes Mal, wenn ich versuche, die deklarierten Variablen aus der definierten Funktion herauszunehmen, teilt es mir die lokale Variable "i" mit, auf die vor der Zuweisung verwiesen wird. Kann mir jemand helfen, dass dieser Code funktioniert? Vielen Dank! Was ist falsch an meinem Code? Name ist nicht definiert?

def create_list(number_in_list): 
    i = 0 
    numbers = [] 
    while i < number_in_list: 
     numbers.append(i) 
     i += 1 


print "How many numbers do you want in your list?" 
value = int(raw_input("> ")) 
create_list(value) 


print "The numbers: " 
print numbers 
for num in numbers: 
    print num 
+2

einrücken richtig einrücken der Funktionskörper – Li357

+0

Erstens, können Sie Ihren Einzug in der Frage beheben? Es ist nicht leicht zu sagen, wo es ist. Wenn Sie in Ihrer create_list 'numbers' erstellen, befindet es sich nicht im selben Namespace/scope. und ist außerhalb der Funktion nicht zugänglich. –

+1

Python hängt von korrekter Einrückung ab. Die meisten anderen Sprachen nicht. Die meisten anderen Sprachen werden nur unlesbar, wenn Sie nicht einrücken. –

Antwort

3

Ihre numbers Variable existiert nur in der Funktion create_list. Sie müssen diese Variable zurückzukehren, und den Rückgabewert in Ihrem Aufruf Code verwenden:

So:

def create_list(number_in_list): 
    i = 0 
    numbers = [] 
    while i < number_in_list: 
     numbers.append(i) 
     i += 1 
    return numbers  # <---- 

Und in Ihrem Haupt-Code:

numbers = create_list(value) 
+2

Ahh .. warum habe ich nicht daran gedacht? -_- Brillante Antwort. Vielen Dank! – Mangohero1