2016-04-03 101 views
0

这里是问题:编写一个函数,检查字符串是否有效的密码。Python 3密码检查

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

我有高清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() 
+2

'return int'没有意义。用'return len(res)'替换它。 – vaultah

回答

1
return int 

只是返回类int。你想返回的是数字的数量。当然,这将是:

return len(res) 
0

为什么不直接用这一个:

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

我所提供的上述您的其他问题,但只是说不清楚,我要案件给你一个关于这是如何工作的简要说明。

以上相当于你想要的,但在一个单一的行。这个想法是,你循环访问密码的字符,检查字符是否是一个数字,然后得到密码中数字的总和。

你打电话再经过CountDigitsFor()你会得到数的密码位数,您可以检查它们是否至少2您提供的if语句。

if CountDigitsFor(password) >= 2: 
      return True 
+0

我的教授是关于使用她还没有结束的东西的肛门! –