如何检查字典列表中的密码?

时间:2014-11-02 12:33:54

标签: python

我刚开始使用PyCharm,我想制作一个会检查用户名和帐号的程序,但我是初学者,我不知道该怎么办。

bank = {"Akim": [1234, 98], "Argo": [7432, 87], "Anton": [1236, 70], "HaCK": [10101, 0]}
'''Here I have my list with names(keys) and password(first value) and amount of money on their account(second value)'''

#I want to have 2 ways of solving this problem
def open_2 ():
    name1=input("name")
    passw=input("pass")
    #I want to make Python to check is there account with specific username and password.
    if ((name1)[passw]) in bank:
        print("you passed")
    else:
        print("mo")
        #But it gives me error.



def open():
    name = input("PLease write your name")
    p= input ("Please write your password")
    op = (bank.get(name))
    if op != None:
        # I want to make check point here but it doesn't work at all
        q= (bank.get(name[p]))
        #Here is the main problem but I have no idea what is the problem
        if q == (bank.get(name[0])):
            print ("You successfully logged on")
    else:
        print("Password or name is incorrect.Please try again, or if you don't have account you can register now for free.")
        n= input("Please type yes, if you want to, or no if you don't want to:")
        if n=="yes":
            register()
    return ()

1 个答案:

答案 0 :(得分:0)

我建议您更改open()函数的名称,因为它也是内置python函数的名称。

我做了一些细微的修改,添加了一些评论,但你可以研究这些差异。无论如何,这段代码对我有点帮助:

bank = {"Akim": [1234, 98], "Argo": [7432, 87], "Anton": [1236, 70], "HaCK": [10101, 0]}

def open_2 ():
    name1=input("name")
    passw=input("pass")
    #I want to make Python to check is there account with specific username and password.
    try:
        if (bank[name1][0]==passw): # I changed passw to 0 since that is the index for the passw
            print("you passed")

        else:
            print("mo")
        #But it gives me error. (Since you had passw as an index and didn't use bank[name]
    except KeyError:
        print name1,' is not a valid username!'




def open_1():
    name = input("PLease write your name")
    p= input ("Please write your password")
    op = bank.get(name)
    if op != None:
        # This works for me now.
        # q= (bank.get(name)[0]) Don't see why you would need this line
        #Here is the main problem but I have no idea what is the problem
        '''The problem is that (bank.get(name[p])) uses p as an index for name, but p isn't a valid Index for name, and you don't even need any index from name'''                       
        if p == (bank.get(name)[0]):
            print ("You successfully logged on")
        else:
            print("Password is incorrect.Please try again, or if you don't have account you can      register now for free.")
            n= input("Please type yes, if you want to, or no if you don't want to:")
            if n=="yes":
                register()
    else:
        print 'Name is not registred'
    return ()