我是python的新手,我已经在python中编写了一个程序,无需任何GUI即可登录。 我知道这是最简单的一个,但我不明白这个问题。
class login:
def __init__(self,id,pas):
self.id="admin"
self.pas="admin"
def check(id,pas):
print self.id
print lod.id
if(self.id==log.id and self.pas==log.pas):
print "Login success!"
log=login("","")
log.check(raw_input("Enter Login ID:"),
input("Enter password: "))
print "Login Page"
错误: 输入登录ID:admin 输入密码:admin
Traceback (most recent call last):
File "C:/Python27/login.py", line 15, in <module>
input("Enter password: "))
File "<string>", line 1, in <module>
NameError: name 'admin' is not defined
答案 0 :(得分:5)
您使用input()
代替raw_input()
作为密码。
input()
相当于eval(raw_input())
;如果您在admin
中输入密码,则会将其解释为Python代码。然后admin
被解释为变量名称,并且因为您的代码中不存在该名称,所以会引发NameError
。
使用:
log.check(raw_input("Enter Login ID:"),
raw_input("Enter password: "))
代替。
接下来,您的check()
方法将无效,因为您忘记了self
参数,并且正在尝试引用不存在的名称lod
。以下方法会更好:
class login:
def __init__(self, id, pas):
self.id = id
self.pas = pas
def check(self, id, pas):
print self.id
if self.id == id and self.pas == pas:
print "Login success!"
log = login("admin", "admin")
log.check(raw_input("Enter Login ID:"),
raw_input("Enter password: "))
答案 1 :(得分:0)
试试这个。
class Login:
def __init__(self, id, password):
self.id = id
self.password = password
self.error = "Enter a valid username and password"
def check(self):
if (self.id == log_id and self.password == log_pass):
print("Login successful")
else:
print(self.error)
log = Login("admin", "admin")
log_id = input("Enter your user ID: ")
log_pass = input("Enter password: ")
log.check()
答案 2 :(得分:0)
好吧,我没有必要在check函数中添加id和pas参数,因为我已经在main函数中使用了它。我更喜欢使用自我方法和“if”进行身份验证
class Login:
error = None
def __init__(self, uid, passw):
self.uid = "admin"
self.passw = "admin"
Login.error = "Enter a valid user id and password"
def authenticate(self):
if (self.uid == logid and self.passw == logpass):
print ("Login successful")
else:
print (Login.error)
log = Login("", "")
logid = input("Enter your user ID: ")
logpass = input("Enter your password: ")
log.authenticate()