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

时间:2015-09-30 20:19:52

标签: python string passwords

我是python的新手,我遇到了问题。我需要检查其上,下,数字和符号的密码。它需要每个类1个,整个密码需要超过6个字符。到目前为止我有大小写。 raw_input以字符串形式输入,那么如何检查该字符串中的数字和符号?

到目前为止我的代码:

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"

所以我需要知道的是如何检查数字和符号的输入。

2 个答案:

答案 0 :(得分:6)

一次尝试一个要求。

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行块。

答案 1 :(得分:2)

试试这个:

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"