Python密码强度

Python密码强度,python,passwords,numbers,Python,Passwords,Numbers,我正在python上编写一个密码强度代码,我试图找出我的密码(p)是否包含一个数字,我已经通过p.isupper()或p.islower()找到了如何查看它是否包含大写和小写字母的方法。我还把它们两个放在一起。我的朋友告诉我如何查看密码是否只包含数字,但我现在需要你的帮助 running=True while running: p=raw_input("What is your Password? ") if len(p) <6: print "Your P

我正在python上编写一个密码强度代码,我试图找出我的密码(
p
)是否包含一个数字,我已经通过
p.isupper()
p.islower()
找到了如何查看它是否包含大写和小写字母的方法。我还把它们两个放在一起。我的朋友告诉我如何查看密码是否只包含数字,但我现在需要你的帮助

running=True
while running:
    p=raw_input("What is your Password? ")
    if len(p) <6:
        print "Your Password is too short"
    if len(p) >12:
        print "Your Password is too long"
    if len(p) == 6 or 7 or 8 or 9 or 10 or 11 or 12:
        print "Password Length OK"
        running=False

print "Loop Broken" #this will be deleted, only for my help now

if p.isupper():
    print "Your Password is weak as it only contains capital letters"

if p.islower():
    print "Your Password is weak as it only contains lower case letters"

if p.isupper and p.islower:
    print "Your Password is of medium strength, try adding some numbers"

try:
    int(p)
    print "Your Password is weak as it only contains numbers"
except (ValueError, TypeError):
    pass
running=True
运行时:
p=原始输入(“您的密码是什么?”)
如果第(p)12节:
打印“您的密码太长”
如果len(p)==6或7或8或9或10或11或12:
打印“密码长度确定”
运行=错误
打印“循环中断”#这将被删除,仅用于我的帮助
如果p.isupper():
打印“您的密码很弱,因为它只包含大写字母”
如果p.islower():
打印“您的密码很弱,因为它只包含小写字母”
如果p.isupper和p.islower:
打印“您的密码强度中等,请尝试添加一些数字”
尝试:
int(p)
打印“您的密码很弱,因为它只包含数字”
除了(ValueError、TypeError):
通过

如果密码包含小写或大写字母和数字,我现在只需要密码。

我想您需要检查密码是否包含所有这些:小写、大写和数字

>>> from string import ascii_lowercase, ascii_uppercase, digits
>>> s_lc = set(ascii_lowercase)
>>> s_uc = set(ascii_uppercase)
>>> s_d = set(digits)
def func(strs):
    s = set(strs)
    return all(s & x for x in (s_lc,s_uc,s_d ))
... 
>>> func('fooBar09')
True
>>> func('fooBar')
False
>>> func('900')
False
>>> func('900aB')
True
其次,
len(p)==6或7或8或9或10或11或12将被评估为:

(len(p)==6)或7,因此如果
len(p)
为6,则返回
True
else 7(这也是真实值)


它应该是:
如果6对我来说,正则表达式肯定是最简单的方法

给定一个示例密码
password
,检查它的方法是:

重新导入
#检查是否包含至少一个数字
如果重新搜索(r'\d',密码):
打印“有一个数字”
#检查是否包含至少一个大写字母
如果重新搜索(r'[A-Z]',密码):
打印“有大写字母”
#检查是否包含至少一个小写字母
如果重新搜索(r'[a-z]',密码):
打印“有小写字母”
对于其他部件,您可以继续使用
.isupper()
.islower()

顺便说一下,这部分代码:

如果p.isupper和p.islower:
打印“您的密码强度中等,请尝试添加一些数字”
不会按您希望的方式运行。首先,您实际上并没有调用这些方法,因为您没有放括号——如果p.isupper()和p.islower(),您需要编写
。其次,这实际上并没有达到你想要的效果。您正在尝试检查它是否同时包含小写和大写数字。相反,您要检查它是完全大写还是完全小写,显然不能两者都是,所以if语句总是返回
False
。相反,您将希望使用以下内容:

如果重新搜索(r'[a-z]',密码)和重新搜索(r'[a-z]',密码):
或者,也可以不使用
re

导入字符串
如果有(string.ascii_小写字母表示密码中的字母)和\
任意(字符串中的字母。ascii_大写字母表示密码中的字母):
或:

如果有(字母.islower()表示密码中的字母)和\
任意(字母.isupper()表示密码中的字母):

我碰巧更喜欢
re
,因为它更简洁。

len(p)==6或7或8或9或10或11或12:
应该是
6为什么密码中有12个字符的上限?@user1615903任务是做一个密码检查,检查长度是否在6到12个字符之间,比如6或7。。。将返回7,这是真的,除非len(p)实际上是6,在这种情况下,它将直接返回真。它被评估为
(len(p)==6)或7
@njzk2我完全错过了
len(p)=
部分,正在修复它:|谢谢你帮了我很多:)干杯,伙计,你帮了我很多:)
>>> 7 or 8 or 9 or 10 or 11 or 12
    7
while True:
    p=raw_input("What is your Password? ")
    le = len(p)
    if le <6:
        print "Your Password is too short"
    elif le >12:
        print "Your Password is too long"
    elif 6 <= le <= 12:
        print "Password Length OK"
        break