2017-02-23 48 views
0

我在我的代碼中遇到問題。我創建了一個程序來創建一個帳戶,將用戶名和密碼保存在.txt文件中。然後請求登錄並檢查用戶名和密碼是否正確。但是每當其他條件執行時。我得到的結果是「你沒有任何賬戶」。請幫忙。提前致謝。錯誤在readline()或條件

# MyProgram: Account Verification 

print "\ncreate account:\n" 
f = open("data.txt",'w+') 

def create(): 
    user_name = raw_input("Enter username >> ") 
    password = raw_input("Enter password >> ") 
    confirm = raw_input("Enter password to confirm >> ") 
    if password == confirm: 
     f.write(user_name+"\n"+password) 
     f.close() 
     print "Account created" 
    else: 
     print "\nPassword not matched\n\n Enter details again:\n" 
     create() 

create() 

new = open("data.txt") 
un = new.readline() 
pw = new.readline() 

new.close() 

def login(): 
    print "\nLogin:\n" 
    name = raw_input("Enter username >> ") 
    if name == un: 
     pas = raw_input("Enter password >> ") 
     if pas == pw: 
      print "Welcome!" 
     else: 
      print "Wrong password" 
      login()     
    else: 
     print "You don't have any account" 

login()  
+0

我認爲你必須去掉''readline()'的輸出去掉換行符。 –

+0

你能提供一個例子「data.txt」和導致問題的輸入嗎? –

回答

2

readline在行的末尾包含換行符,因此您可能正在比較「hunter2 \ n」改爲「hunter2」。嘗試先關閉空白。

un = new.readline().strip() 
pw = new.readline().strip() 

或者,它可能是最好存儲/檢索您的用戶名和密碼在比字符串寫入和從純文本文件中讀取字符串一些其他的方式。對於非常輕量級的應用程序,簡單的序列化如picklejson庫可能就足夠了;但任何真正嚴重的事情都會從適當的數據庫中受益有了這些,你可能根本不需要擔心readline()的行爲。

+0

好的密碼選擇! bash.org/?quote=244321 –