2017-08-07 7 views
0

J'ai une fonction dans mon script qui obtient un argument et le compare à certaines variables d'ensemble pour voir si le mot de passe est de force appropriée ou non. Chaque fois que j'entre un mot de passe à la fois approprié/inadapté, il renvoie que le mot de passe est trop faible. Code ci-dessous:python - la fonction de vérification du mot de passe retourne toujours un mot de passe faible

def check_password(_passw): 

    length = len(_passw) < 8 
    num = re.search(r'\d', _passw) is None 
    uppercase = re.search(r"[A-Z]", _passw) is None 
    lowercase = re.search(r"[a-z]", _passw) is None 

    suitable = not (length or num or uppercase or lowercase) 

    if _passw is not suitable: 
     print('Password weak, try again') 
     sign_up() 

    else: 
     print('Password accepted') 
+0

Indice: 'suitable' est un booléen: soit' True' ou 'False', mais' _passw' est une chaîne. –

Répondre

3
if _passw is not suitable: 

est vraiment trop familier. Vous voulez dire

if not suitable: 

modifier:
L'opérateur 'est' dans les tests de python si 2 variables pointent vers le même emplacement mémoire (instance a.k.a.). Il ne compare pas les valeurs de ces 2 variables. Voir par exemple here

+1

Oui, '_passw ne convient pas 'signifie que _passw' et' suitable' ne sont pas des références au même objet. Ce qu'ils ne seront jamais. – kindall