2016-07-26 8 views
0

Ich habe vor kurzem ein Text-Adventure-Spiel erstellt, aber fast sofort in ein Problem mit der Eingabe geriet. Es gibt mir Fehlermeldungen, wenn ich Zeichenfolgen anstelle von Ganzzahlen verwende. Es gibt wahrscheinlich einen offensichtlichen Grund dafür, dass dies passiert und ich sehe es einfach nicht.Wenn Input gleich String ist (etwas) funktioniert nicht Python 3

Hier ist ein Beispiel:

b = input("Do you like video games? y/n") 
    if b == "y": 
     print("Good For You!") 
    if b == "n": 
     print("What!? (Just joking)") 

ich viel recherchiert habe und dies scheint für die meisten anderen Menschen zu arbeiten. Aber wenn ich es benutze ich diese Fehlermeldung erhalten:

Do you like video games? y/ny 
    Traceback (most recent call last): 
     File "/home/ubuntu/workspace/Test.py", line 1, in <module> 
     b = input("Do you like video games? y/n") 
     File "<string>", line 1, in <module> 
    NameError: name 'y' is not defined 

Wie Sie sehen können, heißt es, dass y nicht definiert ist. Ich bin in Ordnung mit grundlegenden Python-Programmierung, aber ich bin schrecklich beim Lesen von Fehlermeldungen. Es wäre toll, wenn ihr mir eine Antwort geben könnt. Vielen Dank!

+2

Du bist nicht auf Python 3, wie Sie denken, Sie sind. – user2357112

+0

Sind Sie sicher, dass Sie Python 3 verwenden? Für mich erscheint dieser Fehler nur, wenn ich Ihren Code in Python 2 ausführen. – xgord

+0

Wenn Sie versuchen, Ihren Code auf Linux auszuführen, stellen Sie sicher, dass Sie 'python3 Test.py' verwenden, um es vom Terminal auszuführen – DShade

Antwort

0

Dieser Fehler aus der Verwendung der input Funktion ist typisch für Python 2 und Python nicht 3. Ich vermute, Sie verwenden eigentlich Python 2.

Um zu ermitteln, welche Version von Python ausgeführt, wenn Sie den python Befehl verwenden:

$ python --version 
# example output: Python 2.7.3 

Um sicherzustellen, dass Sie führen Ihr Skript mit python 3, tun:

$ python3 scriptname.py 


Python 2

In Python 2, Benutzereingaben zu erhalten, müssen Sie tatsächlich die Funktion raw_input, verwenden, da die input Funktion versucht, die Eingabe des Benutzers zu bewerten, als ob es Python-Code war. So

, wenn die Benutzereingaben 'y', die input Funktion versucht dann den Ausdrucky zu bewerten, die in diesem Fall bedeuten würde, die Variable namens y, die nicht existiert.

Also für Python 2, sollte Ihr Code wie folgt aussehen:

b = raw_input("Do you like video games? y/n") 
# etc 


Python 3

In Python 3, die input Funktion nimmt den Platz von raw_input, so dass Ihr Code würde arbeiten wie es ist.

0

Sie verwenden tatsächlich Python 2, nicht 3 leider. Da Sie input() in Python verwenden, evaluiert input() tatsächlich den Ausdruck, anstelle von Python 3 entspricht für Python 2 raw_input(). input() In diesem Fall konnte eine Variable mit dem Namen y (der Eingang) nicht gefunden werden und der Fehler wurde ausgelöst.

Ändern Sie einfach Ihre Python-Version von 2.x zu 3.x und Sie sollten in Ordnung sein.Wenn Sie mit Python 2 obwohl kleben, verwenden raw_input() statt:

b = raw_input("Do you like video games? y/n")