Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
密码强度代码帮助python_Python - Fatal编程技术网

密码强度代码帮助python

密码强度代码帮助python,python,Python,所以我用python编写代码来告诉您密码强度,但它并没有按照我说的那样做,并且一直说密码无效,除非您只使用数字 hy=1 while(y==1): passwordentered=str(input("plaese enter your proposed password ")) x=len(passwordentered) numbers=passwordentered.count ("1"and"2"and"3"and"4"and"5"and"6"and"7"and"8"and"9") lo

所以我用python编写代码来告诉您密码强度,但它并没有按照我说的那样做,并且一直说密码无效,除非您只使用数字

hy=1
while(y==1):
passwordentered=str(input("plaese enter your proposed password "))
x=len(passwordentered)
numbers=passwordentered.count ("1"and"2"and"3"and"4"and"5"and"6"and"7"and"8"and"9")
lowerletters=passwordentered.count ("a"and"b"and"c"and"d"and"e"and"f"and"g"and"h"and"i"and"j"and"k"and"l"and"m"and"n"and"o"and"p"and"q"and"r"and"s"and"t"and"u"and"v"and"w"and"x"and"z")
higherletters=passwordentered.count ("A"and"B"and"C"and"D"and"E"and"F"and"G"and"H"and"I"and"J"and"K"and"L"and"M"and"N"and"O"and"P"and"Q"and"R"and"S"and"T"and"U"and"V"and"W"and"X"and"Z")
if(numbers>0 and lowerletters==0 and higherletters==0):
    david=9
elif(lowerletters>0 and numbers==0 and higherletters==0):
    david=9
elif(higherletters>0 and numbers==0 and lowerletters==0):
    david=9
elif(higherletters>0 and numbers>0 and lowerletters==0):
    david=8
elif(higherletters>0 and lowerletters>0 and numbers==0):
    david=8
elif(numbers>0 and lowerletters>0 and higherletters==0):
    david=8
elif(numbers>0 and lowerletters>0 and higherletters>0):
    david=7
elif(x>12 or x<6):
    david=10
elif(lowerletters==0 and numbers==0 and higherletters==0):
    david=10
if(david==10):
    print("the password you entered was invalid\
why not try again.")
    y=1
elif(david==9):
   print("the password you entered is very weak,try to include numbers, lower case letters and upper case letters. why not have another go.")
   y=1
elif(david==8):
    print("your password is good but it could be better try to include numbers, lower case letters and upper case letters. why not have another go.")
    y=1
elif(david==7):
    print("your password is really good. thank you for using this program")
    y=0
hy=1
而(y==1):
passwordentered=str(输入(“请输入您建议的密码”))
x=len(输入密码)
number=passwordentered.count(“1”和“2”和“3”和“4”和“5”和“6”和“7”和“8”和“9”)
Lowerleters=passwordentered.count(“a”、“b”、“c”、“d”、“e”、“f”、“g”、“h”、“i”、“j”、“k”、“l”、“m”、“n”、“o”、“p”、“q”、“r”、“s”、“t”、“u”、“v”、“w”、“x”、“z”)
higherletters=输入密码。计数(“A”和“B”和“C”和“D”和“E”和“F”和“G”和“H”和“I”和“J”和“K”和“L”和“M”和“N”和“O”和“P”和“Q”和“R”和“S”和“T”和“U”和“V”和“W”和“X”和“Z”)
如果(数字>0,较低者==0,较高者==0):
大卫=9
elif(下限值>0,数字==0,上限值==0):
大卫=9
elif(高位字母>0,数字==0,低位字母==0):
大卫=9
elif(高位字母>0,数字>0,低位字母==0):
大卫=8
elif(高位字母>0,低位字母>0,数字==0):
大卫=8
elif(数字>0,低位字母>0,高位字母==0):
大卫=8
elif(数字>0,低位字母>0,高位字母>0):
大卫=7

elif(x>12或x首先,Python是一种非常宽容的语言,你可以做很多其他语言做不到的事情,但是:

numbers=passwordentered.count("1"and"2"and"3"and"4"and"5"and"6"and"7"and"8"and"9")
将不起作用。Python将以布尔表达式的形式计算括号内的所有内容,这行代码基本上归结为:

numbers=passwordentered.count("9")
其他检查也是如此。要从中获得您真正想要的内容,您应该使用某种循环。您可以使用以下内容:

numbers = sum( ch.isdigit() for ch in passwordentered )
这将为您提供在密码字符串中找到的数字的计数。您可以对此进行修改以计算小写和大写字母的数量


最后,您应该尝试清理您的if语句,您可以更整洁地分解它们,使其更具可读性。

如果这样编写,那些
count
函数将无法工作

尝试替换此选项:

numbers=passwordentered.count ("1"and"2"and"3"and"4"and"5"and"6"and"7"and"8"and"9")
lowerletters=passwordentered.count ("a"and"b"and"c"and"d"and"e"and"f"and"g"and"h"and"i"and"j"and"k"and"l"and"m"and"n"and"o"and"p"and"q"and"r"and"s"and"t"and"u"and"v"and"w"and"x"and"z")
higherletters=passwordentered.count ("A"and"B"and"C"and"D"and"E"and"F"and"G"and"H"and"I"and"J"and"K"and"L"and"M"and"N"and"O"and"P"and"Q"and"R"and"S"and"T"and"U"and"V"and"W"and"X"and"Z")
以下是:

numbers = sum(typ in "0123456789" for typ in passwordentered)
lowerletters = sum(typ in "abcdefghijklmnopqrstuvwxyz" for typ in passwordentered)
higherletters = sum(typ in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" for typ in passwordentered)
对于详细的方法,请执行以下操作:

numberlist = "0123456789"
Lletterlist = "abcdefghijklmnopqrstuvwxyz"
Hletterlist = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

numbers=0
lowerletters=0
higherletters=0
for f in xrange(0, x):
    if numberlist.find(passwordentered[f]) != -1:
        numbers = numbers+1
    if Lletterlist.find(passwordentered[f]) != -1:
        lowerletters = lowerletters+1
    if Hletterlist.find(passwordentered[f]) != -1:
        higherletters = higherletters+1

我建议你读一下正则表达式,它可以使这样的情况变得更简单。