python密码检查器:数字和符号

python密码检查器:数字和符号,python,string,passwords,Python,String,Passwords,我是python新手,我遇到了一个问题。我需要检查密码的上、下、数字和符号。每个类需要1个,整个密码需要超过6个字符。到目前为止,我有大小写原始输入作为字符串输入,那么我如何检查该字符串中的数字和符号 到目前为止,我的代码是: p = raw_input(("plz enter a password to check it's strength")) if len (p) <= 6: if p.isupper() or p.islower() or int(p):

我是python新手,我遇到了一个问题。我需要检查密码的上、下、数字和符号。每个类需要1个,整个密码需要超过6个字符。到目前为止,我有大小写<代码>原始输入作为字符串输入,那么我如何检查该字符串中的数字和符号

到目前为止,我的代码是:

p = raw_input(("plz enter a password to check it's strength"))

if len (p) <= 6:
    if p.isupper() or p.islower() or int(p):
        print"This is a weak password  "
elif len(p) > 6 and len(p)  <26:
    if p.isupper() or p.islower() or isdigit():
        print "wea2k"
    else:
        print "good"
p=raw_输入((“请输入密码以检查其强度”))

如果len(p)6和len(p)尝试一次满足一项要求

has_upper = False
for char in p:
    if char.isupper():
        has_upper = True
        break
对小写字母和数字重复此操作。 对于特殊字符,请使用相同类型的循环,但将if更改为以下内容:

if not (char.isupper() or char.islower() or char.isdigit()):
最后,如果所有四个标志都为真,那么您就有了一个强密码;否则,它是脆弱的

你能从那里完成编码吗


正如你所知道的,有一些编码方法更“Pythonic”——更好地使用了语言的风格。例如:

has_upper = reduce(lambda a, b: a or b.isupper(), [_ for _ in p], False)
。。。替换我给您的整个5行块。

尝试以下操作:

p = raw_input(("plz enter a password to check it's strength"))

upper_case = 0
lower_case = 0
number = 0
symbol = 0

for i in p:
    if i.isupper():
        upper_case += 1
    elif i.islower():
        lower_case += 1
    elif i.isdigit():
        number += 1
    else:
        symbol += 1

if len (p) <= 6:
    print"This is a weak password  "
elif upper_case > 0 and lower_case > 0 and number > 0 and symbol > 0:
    print "Good"
else:
    print "Too Weak"
p=raw_输入((“请输入密码以检查其强度”))
大写字母=0
小写=0
数字=0
符号=0
对于p中的i:
如果i.isupper():
大写字母+=1
埃利夫岛()
小写字母+=1
elif i.isdigit():
数字+=1
其他:
符号+=1
如果len(p)0和小写字母>0,数字>0和符号>0:
打印“好”
其他:
打印“太弱”

您可能需要使用密码强度检查模块,这里有一个:听起来Python正则表达式就是您想要的。试试这个:我明天会把我的最终代码放在这里,现在需要睡觉了。Reduce lambda实际上不是pythonic,这是:any(char.isupper()表示密码中的char)