2016-04-04 22 views
0

Ben python için yeni ve bunları denemek için kısa bir betik yaptım, ben de bunu yaparken karşılaştım ve daha önce belirli bir durum için hiç hata yapmadım hata kullanıcı tarafından girilen bir str olarak uN tanımlamak deneyin alıyorum şu şekildedir:"NameError: name tanımlı değil" kullanıcı girişi için

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 

kodudur: Ben daha önce çok x = input(str()) sözdizimi kullanılır ve bu hatayı yoktu

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() 

ve hata, 1. satıra geri dönüyor, yani uN = input(str("Username")) hala sınıfın bir parçası olarak kabul ediliyor? Bunun için kod basitleştirmek zaman

mükemmel çalışır:

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() 

usrName.txt amaçlandığı gibi "Ben testPw" içerecek şekilde ekleniyor dosyasıyla.

+1

Bu hata 'girişi()' eval 'gibi çalışır' piton-2.x'() 'gibi görünüyor. Python 3 olduğundan emin misin? – Lafexlos

+0

Python 3'ü kullanmıyorsunuz, burada Python 2'yi kullanıyorsunuz. Tercümanını kontrol et. –

+0

da niçin 'input (str())' girdisi zaten bir dizge döndürür, eğer bu sizin niyetinizse – danidee

cevap

1

Python 2.X'i kullanırken input yerine raw_input kullanmalısınız. Python 3.

yılında input eserler Bu kod çalışacak:

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

Teşekkür ederim, evet, Python 2 değil 3 kullanıyordum OP yorumlarında dikkat çekti, yanlış IDLE tıklamış olmalı, utanç verici, sadece hiç Python 3 kullandım, bu yüzden düşünmedim bile Kontrol. Bana izin verecek en kısa sürede bunu en iyi cevap olarak işaretleyeceğim –

0

raw_input öğesini kullanın. Bu bir Python 2 hatası gibi görünüyor, Python 3

Kullandığınızı sanmıyorum Ayrıca bir dize değişmezini str çağırmanız gerekmez. str ("asdf") == "asdf"