验证密码和更新字典 Python

Posted

技术标签:

【中文标题】验证密码和更新字典 Python【英文标题】:Validation Password and updating the dictionary Python 【发布时间】:2022-01-16 07:01:52 【问题描述】:

我必须创建一个验证函数来检查我的密码是否满足所有要求:

密码必须至少为 8 个字符。 - 密码必须至少包含一个小写字符。 - 密码必须至少包含一个大写字符。 - 密码必须至少包含一个数字。 - 用户名和密码不能相同

def valid(password, username):
    isValid = True

    if len(password) < 8:

        isValid = False
        return isValid
    elif password == username :
        isValid = False
        return isValid
    elif not any(x.islower() for x in password):
        isValid = False
        return isValid
    elif not any(x.isupper() for x in password):
        isValid = False
        return isValid
    elif not any(x.isdigit() for x in password):
        isValid = False
        return isValid
    elif isValid:

        return isValid
username = "Brendon"
password = "ui67SAjjj"
print(valid(password, username))

然后我必须编写我的注册函数,并检查我的用户名是否在我的 user_accounts(dictionary) 中。如果不是,我必须: - 更新 user_accounts 字典中的用户名和相应的密码。 - 更新 log_in 字典,将值设置为 False。 - 返回 True。

def signup(user_accounts, log_in, username, password):
    if username not in user_accounts.keys():
        return True
            
    
        if valid(password)== password:
            
                
            user_accounts[username] = password
            log_in[username]== False
            return True
        
        else:
            return False
            
                
    else:
        return False

当我运行代码时,我得到了这个:



True

我的字典是空的,我认为我的 dictionary.update 命令是错误的,因为验证功能正在工作。 这两个函数链接到另一个我在其中打开 file.txt 的函数。谢谢你的帮助

【问题讨论】:

您在 user_accounts 中有什么。它只是一个对象还是一组用户凭据对象? 你有if valid(password)== password: user_accounts[username] = password log_in[username]== False return True else: return False 在return语句之后的部分代码,它永远不会到达。 【参考方案1】:

请检查以下功能。可能这就是你所需要的

def valid(password, username):
    if len(password) < 8:
        return False
    elif password == username :
        return False
    elif not any(x.islower() for x in password):
        return False
    elif not any(x.isupper() for x in password):
        return False
    elif not any(x.isdigit() for x in password):
        return False
    else:
        return True




def signup(user_accounts, log_in, username, password):
    # username not there, so unable to signup
    if username not in user_accounts.keys():
        return False
    else:
        # If password is not valid, return False
        if valid(password):    
            # If both username exists and password is valid, you can check if user credentials are valid and continue 
            user_accounts[username] = password
            log_in[username]== False
            return True        
        else:
            return False

【讨论】:

以上是关于验证密码和更新字典 Python的主要内容,如果未能解决你的问题,请参考以下文章

Python Dict 理解创建和更新字典

如何获取我在 python 中创建的字典中的值,而不是字符串?

python自动生成对应位数的密码字典

python自动生成对应位数的密码字典

基于python的密码字典生成器

在 Python 中验证字典