2016-04-04 5 views
0

Ich bin neu in Python und machte ein kurzes Skript, um sie auszuprobieren, dabei stieß ich auf Fehler und ich hatte nie für die besondere Situation zuvor, als ich versuchen uN als str durch den Benutzer eingegeben zu definieren, die ich erhalten:"NameError: Name ist nicht definiert" für Benutzereingabe

Traceback (most recent call last): 
    File "/home/pi/Desktop/Scripts/classTest/classTest1.py", line 14, in <module> 
uN = input(str("Username")) 
    File "<string>", line 1, in <module> 
NameError: name 'ben' is not defined 

der Code ist wie folgt:

class user: 
    def __init__(self, usrName, pWord): 
     self.usrName = usrName 
     self.pWord = pWord 

    def createUsrPw(self): 
     f = open("usrName.txt", "a") 
     f.write(self.usrName) 
     f.write(" ") 
     f.write(self.pWord) 
     f.write("\n") 
     f.close() 

uN = input(str("Username")) 
pW = input(str("Password")) 

usr1 = user(uN, pW) 

usr1.createUsrPw() 

ich die x = input(str()) Syntax viel vor und hatte verwendet haben nie diesen Fehler, und Der Fehler geht zurück auf Zeile 1, also uN = input(str("Username")) wird immer noch als Teil der Klasse betrachtet?

, wenn ich den Code zu dieser Vereinfachung funktioniert es perfekt:

class user: 
    def __init__(self, usrName, pWord): 
     self.usrName = usrName 
     self.pWord = pWord 

    def createUsrPw(self): 
     f = open("usrName.txt", "a") 
     f.write(usrName) 
     f.write(" ") 
     f.write(pWord) 
     f.write("\n") 
     f.close() 


usr1 = user("Ben", "testPw") 

usr1.createUsrPw() 

mit der Datei usrName.txt angehängt wird „Ben testPw“ wie beabsichtigt sind.

+1

Dieser Fehler sieht aus wie 'python-2.x' wobei' Eingang() '' funktioniert wie eval() '. Bist du sicher, dass es Python 3 ist? – Lafexlos

+0

Sie verwenden nicht Python 3, Sie verwenden Python 2 hier. Überprüfe deinen Dolmetscher. –

+0

auch warum brauchst du 'input (str())' gibt bereits eine string zurück, wenn das deine intention war – danidee

Antwort

1

Sie sollten raw_input anstelle von input verwenden, da Sie Python 2.X verwenden. input Werke in Python 3.

Dieser Code funktionieren würde:

class user: 
    def __init__(self, usrName, pWord): 
     self.usrName = usrName 
     self.pWord = pWord 

    def createUsrPw(self): 
     f = open("usrName.txt", "a") 
     f.write(self.usrName) 
     f.write(" ") 
     f.write(self.pWord) 
     f.write("\n") 
     f.close() 

uN = raw_input("Username") 
pW = raw_input("Password") 

usr1 = user(uN, pW) 

usr1.createUsrPw() 
+0

danke, ja es wurde in den Kommentaren des OP darauf hingewiesen, dass ich Python 2 nicht 3 benutzt habe, muss die falsche IDLE angeklickt haben, peinlich peinlich, ich habe Python 3 erst einmal benutzt also habe ich nicht mal dran gedacht prüfen. Ich werde dies als die beste Antwort ankreuzen, sobald es mich lässt –

0

Verwenden Sie raw_input. Das sieht nach einem Python 2-Fehler aus. Ich glaube nicht, dass Sie Python 3 verwenden.

Sie müssen str auch nicht in einem String-Literal aufrufen. str ("asdf") == "asdf"