2016-04-03 3 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 CountDigitsFor(password) >= 2: 
      return True 
+0

Мой профессор анал, используя материал, который еще не прошел! –

Смежные вопросы