【问题标题】:Python 3- password check [closed]Python 3-密码检查[关闭]
【发布时间】:2016-04-03 13:09:57
【问题描述】:

问题来了:编写一个函数来检查字符串是否为有效密码。

规则:必须至少有 8 个字符 密码必须仅由字母和数字组成 密码必须至少包含 2 位数字

我在使用 def CountsDigitsFor 时遇到问题,我希望它检查至少 2 位数字。

def getPassword():
   return input("Enter password: ")

def CountDigitsFor(password):
   res = []
   for i in password:
        if i.isdigit():
           res.append(i)
   return int

def validPassword(password):
   if len(password) >= 8:
      if password.isalnum():
         if CountDigitsFor(password) >= 2:
            return True
   else:
      return False

def main():
   password = getPassword()
   if validPassword(password):
      print(password + " is valid")
   else:
      print(password + " is invalid")

main()

【问题讨论】:

  • return int 没有意义。将其替换为return len(res)

标签: python python-3.x passwords


【解决方案1】:
return int

只是返回类int。您要返回的是位数。那当然是:

return len(res)

【讨论】:

    【解决方案2】:

    为什么不只使用这个:

    def CountDigitsFor(password):
       return sum(character.isdigit() for character in password)
    

    我在您的另一个问题中提供了上述内容,但以防万一不清楚,我将简要介绍一下这是如何工作的。

    以上内容等同于您想要的,但在一行中。这个想法是你遍历密码的字符,检查字符是否是数字,然后得到密码中数字的总和。

    那么在你拨打CountDigitsFor()之后你会得到密码中的位数,你可以用你提供的if语句检查它们是否至少为2。

    if CountDigitsFor(password) >= 2:
                return True
    

    【讨论】:

    • 我的教授对使用她还没有使用过的东西感到厌烦!
    猜你喜欢
    • 2016-07-22
    • 1970-01-01
    • 2011-09-03
    • 2019-05-15
    • 2012-05-31
    • 2019-04-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多