Python 密码强度检查

Python 密码强度检查,python,passwords,Python,Passwords,很抱歉,我正在尝试在Python3.2上编写密码强度检查代码,但似乎我一直在某个地方出错。每当我的输入为#$%$J时,is将进入if输入。upper()为true。如何防止这种情况发生?我的分数值不准确。 编码: password\u user=input(“输入密码:”) 分数=0 如果len(密码用户)=0: 分数=分数+3 对于范围(97123)内的y: ascii_lower=chr(y) 如果密码\u user.find(ascii\u lower)>=0: 分数=分数+1 对于范围(

很抱歉,我正在尝试在Python3.2上编写密码强度检查代码,但似乎我一直在某个地方出错。每当我的输入为#$%$J时,is将进入if输入。upper()为true。如何防止这种情况发生?我的分数值不准确。 编码:

password\u user=input(“输入密码:”)
分数=0
如果len(密码用户)=0:
分数=分数+3
对于范围(97123)内的y:
ascii_lower=chr(y)
如果密码\u user.find(ascii\u lower)>=0:
分数=分数+1
对于范围(65,91)内的w:
ascii_上限=chr(w)
如果密码\u user.find(ascii\u上限)>=0:
分数=分数+2
对于范围(48,58)内的z:
ascii_num=chr(z)
如果密码\u user.find(ascii\u num)>=0:
分数=分数+2
如果得分>0 |得分5 |得分<7:
打印(“中等密码”)
打印(分数)
elif分数>=7:
打印(“强密码”)
打印(分数)

首先,它应该是,例如,find(ascii_str)>-1(以便对字符号0进行计数)。 我假设你的意思是给每个角色范围最多一次分数奖励。因此,这样做是合适的:

contain = false
for x in range(33,48):
    ascii_str = chr(x)
    if password_user.find(ascii_str) > -1:
        contain = true
if contain:
    score += 3
其他人也是如此

编辑: 这个问题并不清楚您是希望每个不同的角色增加分数,还是希望每个角色增加分数,还是只希望每个类型的角色增加分数。
如果你的评分标准大于6分,那么任何不返回“密码太短”或“密码不正确”的内容都是强的(至少6个字符,至少有一个大写字母,已经得到7分),除非你有很多重复的字母。如果你真的想让每一个新字符增加分数,你应该改变度量(可能12或更多是一个强密码?),尽管在我看来,增加每种类型字符的分数更合理,然后增加分数的长度,或者类似的东西。

你的问题太广泛了,试着把你的问题缩小到你需要帮助的几行代码。包括样本数据,以及预期的流量/结果。您可以指定错误吗?也许我能帮上忙。顺便问一下,你的
循环中出现缩进错误。这是一种非常奇怪的计算密码强度的方法……你从哪里得到的?另外,为什么密码的第一个字符与分数无关?他想计算大写字母、小写字母、符号等的数量。找不到,他的密码不算在内;它统计不同的数字。我认为只要找到它们就更有意义了,因为他的任何分数>=7的指标都很强。根据这个标准,任何不返回“Password is too short”或“bad Password”的内容都将是强密码(至少有6个字符,至少有一个大写字母),除非他有许多重复的字母。我想,这真的取决于他到底想要什么。他是希望每个不同的字母增加分数,还是只增加一个,或者每个(不一定是不同的)字母增加分数?
contain = false
for x in range(33,48):
    ascii_str = chr(x)
    if password_user.find(ascii_str) > -1:
        contain = true
if contain:
    score += 3