2012-09-03 27 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]): 
    ... ...