2016-10-07 6 views
2

Mein Code definiert ist sehr einfach, da ich Python lernen binNameerror: name ‚‘ ist nicht

num_array = [] 

while True: 
    num = input('Enter a number: ') 
    if num == 'done': break 

    try: 
     val = int(num) 
    except: 
     print ('Enter a number!') 
     continue 

    num_array.append(val) 

print (max(num_array)) 
print (min(num_array)) 

ich folgende Fehlermeldung erhalten. Ich habe einen ähnlichen Fehler in Stack Overflow gefunden, aber ich konnte keine Hilfe bekommen.

bash-3.2$ python practise3.py 
Enter a number: 3 
Enter a number: 4 
Enter a number: 5 
Enter a number: 6 
Enter a number: done 
Traceback (most recent call last): 
    File "practise3.py", line 5, in <module> 
    num = input('Enter a number: ') 
    File "<string>", line 1, in <module> 
NameError: name 'done' is not defined 
bash-3.2$ 
+0

Python 2 oder Python 3? – khelwood

+1

Verwenden Sie 'raw_input' anstelle von' input'. – RemcoGerlich

+0

python3 sollte funktionieren, Python2 verwenden raw_input – Andres

Antwort

2

Sie Problem ist, dass Ihr input() verwenden, wenn Sie raw_input() verwendet werden soll:

num_array = [] 

while True: 
    num = raw_input('Enter a number: ') #use raw_input instead of input 
    if num == 'done': break 

    try: 
     val = int(num) 
    except: 
     print ('Enter a number!') 
     continue 

    num_array.append(val) 

print (max(num_array)) 
print (min(num_array)) 

In Python 2.x input() erste nimmt Eingang, und ruft dann implizit eval() am Eingang. raw_input() bekommt einfach die Eingabe und ruft nicht hinter den Kulissen eval() auf.

+0

Aber ich benutze Python 3.x –

+1

@AmitKumar bist du sicher? [überprüfe deine Version] (http://stackoverflow.com/questions/1093322/how-do-i-check-what-version-of-python-is-running-my-script) –

1

In Python 2 wertet input die Eingabe wie Python-Code aus.

Wenn Sie etwas wie 1+1 eingeben würden, würde der input Aufruf 2 zurückgeben. Wenn Sie also das Wort done übergeben, versucht Python, nach einer Variablen namens done zu suchen, die fehlschlägt.

Die bevorzugte Art und Weise des Eingangs 2 in Python zu tun ist durch raw_input mit:

num = raw_input('Enter a number: ') 

raw_input nicht um die Eingabe zu bewerten nicht versuchen.

In Python 3 wurde die unsichere input entfernt und input jetzt tut, was raw_input in Python tat 2.

Verwandte Themen