问题是设置语句的顺序会产生您不想要的效果。例如:
elif u > 1 and l> 1:
print("medium")
elif u > 3 and l > 2 and nums > 2:
print("strong")
这里的最后一行永远不会被执行。因为任何使最后一个条件为真的东西都会使前一个条件为真。
例如,如果 u 是 4,l 是 4,那么:
elif u > 1 and l> 1:
变成:
elif 4 > 1 and 4 > 1:
这将评估True
并打印“中等”
您可以通过重新排列语句的顺序来解决此问题,如下所示:
elif u > 3 and l > 2 and nums > 2:
print("strong")
elif u > 1 and l> 1:
print("medium")
本质上,您希望最难匹配的内容位于顶部,然后让非匹配项下降到更容易匹配的情况,而不是相反。
同样从发表的评论中,我认为您很可能希望生成与当前执行方式不同的值u
l
和值。n
Python 有一个很好的特性,称为生成器表达式,它与一些库函数一起将使您的代码更易于维护。
代替:
u = p.count("A") + p.count("B") + p.count("C"), ...
l = p.count("a") + p.count("b") + p.count("c"), ...
n = p.count("1") + p.count("2") + p.count("3"), ...
你可以做:
u = sum((char.isalpha() for char in p))
l = sum((char.islower() for char in p))
n = sum((char.isdigit() for char in p))