Python-检查密码(弱/强/非常强)

Python-检查密码(弱/强/非常强),python,python-3.x,Python,Python 3.x,我开始学习python语言,我想尝试一下快速的方法 inputpass = input("Choose a password?") def passcheck(password): x = 0 low = False cap = False hasnum = False while x < len(password): letter = password[x] if letter == letter.lower()

我开始学习python语言,我想尝试一下快速的方法

inputpass = input("Choose a password?")


def passcheck(password):
    x = 0
    low = False
    cap = False
    hasnum = False
    while x < len(password):
        letter = password[x]
        if letter == letter.lower() and not letter.isnumeric():
            low = True
        elif letter == letter.upper():
            cap = True
        if letter.isnumeric():
            hasnum = True
        else:
            cap = False
            low = False
            hasnum = False
        x += 1
    if cap and low:
        print("You password is strong!")
    elif cap and not low or low and not cap:
        print("You password is weak!")
    elif cap and low and hasnum:
        print("You password is Very Strong!")
    else:
        print("You password is weak!")


passcheck(inputpass)
inputpass=input(“选择密码?”)
def密码检查(密码):
x=0
低=假
上限=假
hasnum=False
当x
这是一个脚本,它检查输入,并说明输入是弱还是强,但我做了一些错误的事情,(我知道
re
模块,但我现在想继续使用它,直到我可以毫无错误地执行此操作为止。

请检查:

>>> import string
>>> def strong(s):
...     if len(list(set(s)&set(string.ascii_lowercase)))>0 and len(list(set(s)&set(string.ascii_uppercase)))>0 and len(list(set(s)&set(string.digits)))>0 and len(list(set(s)&set(string.punctuation)))>0:
...         return "Strong"
...     else: return "Weak"
... 
>>> strong("Hello?baby1")       # all good
'Strong' 
>>> strong("Hello?baby")        # no mumeric
'Weak' 
>>> strong("?baby")             # no uppercase, no  numeric
'Weak'
>>> strong("ljvjdl48?H")        # all good
'Strong'
>>> strong("hello how are you") # no numeric,no uppercase, no punctuation
'Weak' 
看看这个:

>>> import string
>>> def strong(s):
...     if len(list(set(s)&set(string.ascii_lowercase)))>0 and len(list(set(s)&set(string.ascii_uppercase)))>0 and len(list(set(s)&set(string.digits)))>0 and len(list(set(s)&set(string.punctuation)))>0:
...         return "Strong"
...     else: return "Weak"
... 
>>> strong("Hello?baby1")       # all good
'Strong' 
>>> strong("Hello?baby")        # no mumeric
'Weak' 
>>> strong("?baby")             # no uppercase, no  numeric
'Weak'
>>> strong("ljvjdl48?H")        # all good
'Strong'
>>> strong("hello how are you") # no numeric,no uppercase, no punctuation
'Weak' 
看看这个:

>>> import string
>>> def strong(s):
...     if len(list(set(s)&set(string.ascii_lowercase)))>0 and len(list(set(s)&set(string.ascii_uppercase)))>0 and len(list(set(s)&set(string.digits)))>0 and len(list(set(s)&set(string.punctuation)))>0:
...         return "Strong"
...     else: return "Weak"
... 
>>> strong("Hello?baby1")       # all good
'Strong' 
>>> strong("Hello?baby")        # no mumeric
'Weak' 
>>> strong("?baby")             # no uppercase, no  numeric
'Weak'
>>> strong("ljvjdl48?H")        # all good
'Strong'
>>> strong("hello how are you") # no numeric,no uppercase, no punctuation
'Weak' 
看看这个:

>>> import string
>>> def strong(s):
...     if len(list(set(s)&set(string.ascii_lowercase)))>0 and len(list(set(s)&set(string.ascii_uppercase)))>0 and len(list(set(s)&set(string.digits)))>0 and len(list(set(s)&set(string.punctuation)))>0:
...         return "Strong"
...     else: return "Weak"
... 
>>> strong("Hello?baby1")       # all good
'Strong' 
>>> strong("Hello?baby")        # no mumeric
'Weak' 
>>> strong("?baby")             # no uppercase, no  numeric
'Weak'
>>> strong("ljvjdl48?H")        # all good
'Strong'
>>> strong("hello how are you") # no numeric,no uppercase, no punctuation
'Weak' 

对字符串的每个字符进行测试的一种更短、更可读的方法:

cap = any(chr.isupper() for chr in password)
low = any(chr.islower() for chr in password)
hasnum = any(chr.isnumeric() for chr in password)

对字符串的每个字符进行测试的一种更短、更可读的方法:

cap = any(chr.isupper() for chr in password)
low = any(chr.islower() for chr in password)
hasnum = any(chr.isnumeric() for chr in password)

对字符串的每个字符进行测试的一种更短、更可读的方法:

cap = any(chr.isupper() for chr in password)
low = any(chr.islower() for chr in password)
hasnum = any(chr.isnumeric() for chr in password)

对字符串的每个字符进行测试的一种更短、更可读的方法:

cap = any(chr.isupper() for chr in password)
low = any(chr.islower() for chr in password)
hasnum = any(chr.isnumeric() for chr in password)

if letter.isnumeric()…………/代码>是奇怪的。你基本上说,当你遇到一个不是数字的字符时,你认为密码中没有小写,大写,或数字。只要删除那个部分,它就不会产生。测试部分也表明强度不在正确的顺序。<代码>上限和下限:
防止
elif cap和low以及hasnum:
被验证。我将使用
sum((上限,下限,hasnum))进行测试
它给出了测试条件的数量。3是好的,2是好的,少一点不太好。例如,有点离题,但您的密码检查器不能很好地测量密码强度;例如,它会声称
Passw0rd
是一个“非常强”的密码(它很差,任何密码破解者都会很快破解它)它还声称“hallo dit is een wachtwoord dat vrij lang is and party in dutch kthxbye”是一个“弱”密码。事实并非如此。DropBox的员工为此写了一篇很好的文章:
if letter.isnumeric()…………/代码>是奇怪的。你基本上说,当你遇到一个不是数字的字符时,你认为密码中没有小写,大写,或数字。只要删除那个部分,它就不会产生。测试部分也表明强度不在正确的顺序。<代码>上限和下限:
防止
elif cap和low以及hasnum:
被验证。我将使用
sum((上限,下限,hasnum))进行测试
它给出了测试条件的数量。3是好的,2是好的,少一点不太好。例如,有点离题,但您的密码检查器不能很好地测量密码强度;例如,它会声称
Passw0rd
是一个“非常强”的密码(它很差,任何密码破解者都会很快破解它)它还声称“hallo dit is een wachtwoord dat vrij lang is and party in dutch kthxbye”是一个“弱”密码。事实并非如此。DropBox的员工为此写了一篇很好的文章:
if letter.isnumeric()…………/代码>是奇怪的。你基本上说,当你遇到一个不是数字的字符时,你认为密码中没有小写,大写,或数字。只要删除那个部分,它就不会产生。测试部分也表明强度不在正确的顺序。<代码>上限和下限:
防止
elif cap和low以及hasnum:
被验证。我将使用
sum((上限,下限,hasnum))进行测试
它给出了测试条件的数量。3是好的,2是好的,少一点不太好。例如,有点离题,但您的密码检查器不能很好地测量密码强度;例如,它会声称
Passw0rd
是一个“非常强”的密码(它很差,任何密码破解者都会很快破解它)它还声称“hallo dit is een wachtwoord dat vrij lang is and party in dutch kthxbye”是一个“弱”密码。事实并非如此。DropBox的员工为此写了一篇很好的文章:
if letter.isnumeric()…………/代码>是奇怪的。你基本上说,当你遇到一个不是数字的字符时,你认为密码中没有小写,大写,或数字。只要删除那个部分,它就不会产生。测试部分也表明强度不在正确的顺序。<代码>上限和下限:
防止
elif cap和low以及hasnum:
被验证。我将使用
sum((上限,下限,hasnum))进行测试
它给出了测试条件的数量。3是好的,2是好的,少一点不太好。例如,有点离题,但您的密码检查器不能很好地测量密码强度;例如,它会声称
Passw0rd
是一个“非常强”的密码(它很差,任何密码破解者都会很快破解它)它还声称“hallo dit is een wachtwoord dat vrij lang is and party in dutch kthxbye”是一个“弱”密码。事实并非如此。DropBox的员工为此写了一篇很好的文章:感谢您的回复,这篇文章非常有效(很抱歉回复太晚)感谢您的回复,这篇文章非常有效(很抱歉回复太晚)谢谢你的回复