2012-09-03 28 views
0

我想在python中製作一個任意的用戶名和密碼程序 我有一個填充了一系列用戶名和值的字典 我無法比較用戶輸入與字典用戶名和值。 他們似乎不可比較。我無法正確比較用戶輸入與預先填充的字典值

textFile = open('names.txt','r') 
dictionary = {} 
for lines in textFile: 
    splatLine=lines.split('\t') 
    dictionary[splatLine[3]]= splatLine[4] 
print dictionary 

userName= raw_input("what is your UserName:") 
password= raw_input("what is your Password:") 
+6

代碼中的哪個位置正在執行比較? –

+0

您的字典值中仍然有行結尾(\ n),您的用戶輸入不會。在將它們添加到字典之前,從names.txt中刪除您讀取的行。 –

回答

0

假設你正確地閱讀文本,這將工作。

dictionary = {"foo":"bar","Johnny":"Appleseed"} 
uname = "foo" 
pw = "nobar" 
    for i in dictionary: 
      if uname == i: 
       if dictionary[i] == pw: 
        print "You're in" 
       else: 
        print "all your base are belong to us" 
0

你最好使用語句來關閉自動打開一個文件,否則不要忘記關閉您的文件後閱讀。另外,readline文件的方法將返回一行尾隨換行符字符,您需要在與用戶輸入比較之前將其去掉。

with open('names.txt','r') as f: 
    pwd_dict=dict([line.strip().split('\t')[3:5] for line in f])  
userName= raw_input("what is your UserName:") 
password= raw_input("what is your UserName:") 
if not (username in pwd_dict and password == pwd_dict[username]): 
    ... ...