Python程序检查密码是否符合要求


假设我们有一个字符串s,代表一个密码,我们需要检查密码是否符合要求。

  • 密码长度至少8个字符,最多20个字符。
  • 密码至少包含一个数字。
  • 密码至少包含一个小写字母和一个大写字母。
  • 密码至少包含一个特殊字符,例如 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
  • 密码不包含任何其他字符,例如制表符或换行符。

因此,如果输入是 "@bCd12#4",则输出为True。

为了解决这个问题,我们将遵循以下步骤:

  • a := 0, b := 0, c := 0, d := 0
  • 如果密码长度小于8或大于20,则
    • 返回False
  • 对于密码中的每个字符i,执行以下操作:
    • 如果i是大写字母,则
      • a := a + 1
    • 否则,如果i是小写字母,则
      • b := b + 1
    • 否则,如果i属于特殊字符集'"!"#^modAND\'() *+,- ./:;<=>?@[\]XOR_`{OR}~"',则
      • c := c + 1
    • 否则,如果i是数字,则
      • d := d + 1
  • 如果 a>=1 且 b>=1 且 c>=1 且 d>=1 且 a+b+c+d 等于密码长度,则
    • 返回True
  • 否则,
    • 返回False

让我们来看下面的实现来更好地理解:

示例

在线演示

class Solution:
   def solve(self, password):
      a=0
      b=0
      c=0
      d=0
      if len(password)<8 or len(password)>20:
         return False
      for i in password:
         if i.isupper():
            a+=1
         elif i.islower():
            b+=1
         elif i in '"!"#$%&\'()*+,-./:;<=>?@[\]^_`{|}~"':
            c+=1
         elif i.isdigit():
            d+=1
      if a>=1 and b>=1 and c>=1 and d>=1 and
         a+b+c+d==len(password):
      return True
      else:
         return False
s = "@bCd12#4"
ob = Solution()
print(ob.solve(s))

输入

"@bCd12#4"

输出

True

更新于:2020年10月6日

562 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告