2014-03-04 87 views
0

我是新來的python,我已經編寫了一個程序在python登錄沒有任何圖形用戶界面。 我知道這是最簡單的,但我不明白這個問題。在python中簡單的登錄程序

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

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 

回答

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: ")) 
+0

Martijn,這只是一個部分。類定義是一團糟。 – Matthias

+0

@Matthias:首先是第一件事。 :-) –

+0

你是對的。這是NameError的原因。讓我們等待,看看現在發生了什麼。 – Matthias