密码验证 - python

Posted

技术标签:

【中文标题】密码验证 - python【英文标题】:password validation - python 【发布时间】:2021-04-28 18:27:10 【问题描述】:

我正在尝试编写代码来验证密码。但是它不起作用,关于如何解决这个问题的任何想法?

password = input("Please enter password: ")

length = False
digit = False
capital = False

length = len(password)

if length > 6:
    length = True
    #print("Length Good")

for count in password:
    if count.isdigit():
        digit = True
        #print ("Contains digit")

for count in password:
    if count.isupper():
        capital = True
        #print ("Contains a capital")

if length != True and digit != True and capital != True:
    print("Password is good")
else:
    print("Bad password")

关于如何解决此问题的任何想法,谢谢

【问题讨论】:

length 不能是您的密码长度,并且也是一个真/假值。使用两个变量。 (1) 不能同时将同一个变量“长度”用于两个目的。 (2) 像“zgjf”这样的密码被认为是好的。 另外,您的代码需要一个“好的”密码才能包含大写字母并且包含数字。这似乎不太可能是您想要的。 @khelwood 我已经更改了代码,但它似乎仍然不起作用?谢谢 @MichaelButscher 我已经更改了代码,但它似乎仍然不起作用?谢谢 【参考方案1】:

我运行它并输入“测试”,它说“密码是好的”。我怀疑你的意思是:

password = input("Please enter password: ")

length = False
digit = False
capital = False

length = len(password)

if length > 6:
    length = True
    #print("Length Good")

for count in password:
    if count.isdigit():
        digit = True
        #print ("Contains digit")

for count in password:
    if count.isupper():
        capital = True
        #print ("Contains a capital")

if length == True and digit == True and capital == True:
    print("Password is good")
else:
    print("Bad password")

因为否则您将强制使用错误的密码。

【讨论】:

酷,太棒了@Katie010203 你能把这个标记为正确答案,这样我就可以得到分数了吗? 我会的,它说我要等 1 分钟你 x【参考方案2】:

在您的代码中,您将密码的长度分配给变量length,然后立即用False 覆盖length 中的值:

length = len(password)
length = False

此外,您正在检查 lengthdigitcapital 是否为 True,因为检查它们是否为 False 会得到相反的结果,除非您翻转语句

您应该将len(password) 移动到支票本身,如下所示:

password = input("Please enter password: ")

length = False
digit = False
capital = False

if len(password) > 6:
    length = True
    # print("Length Good")

for count in password:
    if count.isdigit():
         digit = True
         # print ("Contains digit")
    elif count.isupper():
         capital = True
         # print ("Contains a capital")

if length == True and digit == True and capital == True:
    print("Password is good")
else:
    print("Bad password")

【讨论】:

【参考方案3】:

你正在设置

length = len(password)

之后

length = False

所以Python首先将length设置为int,在第二条指令中Python取消variable的值并将length变量设置为boolean(False),条件length>6失败。

【讨论】:

以上是关于密码验证 - python的主要内容,如果未能解决你的问题,请参考以下文章

密码验证 - python

验证密码 - Python

python快速生成验证码(密码)

在python中识别密码验证中的特殊字符

密码验证合格程序(Python)

python--学习--用户名和密码验证