初级Python程序评估密码

2024-04-16 19:12:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我应该按照以下标准编写脚本: 编写一个名为validatePassword的函数,该函数将密码字符串作为参数并返回true或false。函数只应在以下情况下返回true:

  • 密码至少为8个字符
  • 密码至少包含一个数字
  • 密码至少包含一个大写字母。提示:使用isupper()字符串函数。在
  • 密码包含一个符号其中一个符号!@#$%^&;*()+=

到目前为止,我有这个:

def validatePassword(pswd):

    if len(pswd)> 8:
            return True
    else:
            return False
    for char in pswd:
        if char in '01234567890':
            return True
    else:
            return False

    for char in pswd:
        if char in '!@#$%^&*()_+=':
            return True
    else:
            return False
    for char in pswd:
        if char.isupper and char .islower:
            return True
    else:
            return False
    return True

while False:
    print("There was an error with your password")
    print (validatePassword(Herseuclds))

我知道print (validatePassword(Herseuclds))有一个语法错误,因为我缺少这个变量,但是我不知道怎么做。在


Tags: 函数字符串infalsetrue密码forreturn
3条回答

第一个问题是将未声明的变量传递给函数。详情请参阅silentphoenix的答案。在

其次,程序只检查是否至少满足一个条件,而不是全部。在

如果密码长度为8个字符,则即使密码不满足其他要求,它也将返回true。在

我不会为您编写代码,但我可以对问题进行伪代码:

def validatePassword(pswd):

    if len(pswd) < 8:
        return False

    # if there isn't a number:
        return False

    # if there isn't a symbol:
        return False

    # if there isn't an upper and lowercase:
        return False

    return True

while True:
    print("There was an error with your password")
    print (validatePassword("Herseuclds"))

旁注:注意缩进:)

def validatePassword(pswd):

    if len(pswd) < 8:
        return False

    number_in_password = False
    for char in pswd:
        if char in '012356789':
            number_in_password = True
    if not number_in_password:
        return False

    symbol_in_password = False
    for char in pswd:
        if char in '!@#$%^&*()_+=':
            symbol_in_password = True
    if not symbol_in_password:
        return False

    uppercase_in_password = False
    for char in pswd:
        if char.isupper():
            uppercase_in_password = True
    if not uppercase_in_password:
        return False

    #this only happens if nothing above has disqualified the password
    return True

print (validatePassword("herseuc"))
print (validatePassword("herseuclds"))
print (validatePassword("herseuclds!"))
print (validatePassword("herseuclds!123"))
print (validatePassword("herseuclds!123A"))

代码的主要问题在最后一行。在

print (validatePassword(Herseuclds))

现在,解释器认为Herseuclds是一个变量,而不是字符串。如果Herseuclds是密码,而不是描述密码的变量,则需要在其周围加上引号,使其成为字符串文本。在

print (validatePassword("Herseuclds"))

显然您没有在程序中的任何地方定义一个名为Herseuclds的变量,但是程序认为Herseuclds是一个变量而不是字符串,因此它抛出错误。在

祝你好运,编码愉快!在

相关问题 更多 >