2016-08-17 8 views
0

Ich bin immer noch nicht zu der Schlussfolgerung gekommen, warum das folgende Stück Python in IDLE funktioniert, aber nicht im Terminal. Jede Hilfe wäre willkommen.Python läuft in IDLE aber nicht Terminal?

print("Hello User!") 

request_list = [''] 

while True: 
    greeting = input('') 

    if greeting.lower() == "hello": 
     print("Who is this?") 
     print("Welcome back " + input() +", what can I do for you?") 
     break 

    elif greeting.lower() != "hello": 
     print("Show some manners!") 

Der Fehler

Traceback (most recent call last): 
File "courtney.py", line 23, in <module> 
greeting = input('') 
File "<string>", line 1, in <module> 
NameError: name 'hello' is not defined 
+1

Ihr Terminal verwendet wahrscheinlich Python 2, weshalb bei der Verwendung von 'input' ein' NameError' ausgelöst wird. Versuchen Sie mit 'raw_input' zu laufen, dem Python 2 Äquivalent zu Python 3' input.' In Python 2 ist 'input' das Äquivalent zu' eval (input()) 'in Python 3 –

+0

@ juanpa.arrivillaga hat wahrscheinlich die beste Schätzung . Ich habe das nur in Python 3 ausgeführt und es schien zu funktionieren. Geben Sie 'python --version' auf dem Terminal ein und prüfen Sie, ob 2. [etwas] statt 3. [etwas] ausgegeben wird. – Cody

Antwort

0

Sie python3 IDLE laufen und das Terminal zu python2 gesetzt.

In Ihrem Computer Umgebungsvariablen, möchten Sie den Pfad zu dem Speicherort Ihrer Python3 Installation statt der Python auf das Bild 2.

Werfen Sie einen Blick ändern, die Sie ändern wollen PATH ist

Environmental Variables

Wenn Sie nicht wollen, Ihre Umgebungsvariablen ändern, so dass Ihr Terminal python2 bleibt verwenden, dann müssen Sie Ihre Eingabe und print-Anweisungen ändern.

der Code unten ist die Implementierung des Codes in Python 2.7:

print "Hello User!" 

request_list = [''] 

while True: 
    greeting = raw_input("What is your name? ") 

    if greeting.lower() == "hello": 
     print "Who is this?" 
     print "Welcome back " + greeting +", what can I do for you?" 
     break 

    elif greeting.lower() != "hello": 
     print "Show some manners!" 
0

Das Problem ist, dass Sie Python 2.x in Ihrem Terminal verwenden. Wenn Sie beide installiert haben, sollten Sie den Befehl 'python3' verwenden können, um Ihren Code anstelle des Befehls 'python' auszuführen.

In Python 3 'Eingabe' kann eine Ganzzahl oder eine Zeichenfolge nehmen. In 'python2' kann 'input' keine Zeichenfolge annehmen. Nur andere Sachen. In Python 2.x sollte 'raw_input' eine Zeichenkette nehmen.

+0

Tatsächlich kann die Eingabe in Python 2.x alles übernehmen, sogar etwas Python-Code (wenn mein Speicher funktioniert richtig). Was zu Sicherheitsproblemen führen kann. –

+0

Ja, Sie haben teilweise Recht. Es war mehr die Idee, den Unterschied zu erklären, aber ich werde es ändern. Aber es kann nicht alles nehmen (keine Strings) –

+0

Nun, die Eingabe kann Strings nehmen, wenn Sie Zitate verwenden x) –

Verwandte Themen