Informática, perguntado por danielarodrigup2fod4, 5 meses atrás

[Python]7.1 Defina uma função forte(passwd) que verifica se uma palavra-passe, dada pela cadeia de caracteres passwd, é forte. Considera-se que a palavra-passe é forte se tiver 8 caracteres ou mais, e incluir pelo menos uma letra maiúscula, uma letra minúscula e um algarismo. O resultado deve ser um valor lógico (True ou False).
>>> forte ('9EwL56')
False
>>> forte CHX KW1393')
False
>>> forte ('ffu4G7Fghjk')|
True

Soluções para a tarefa

Respondido por zcfuez
0

Algoritmo:

def forte(passwd):

   return len(passwd) >= 8 and not passwd.islower() and not passwd.isupper() and not passwd.isnumeric()

Comentário do Algoritmo:

O raciocínio do algoritmo está localizado no seu return. Para que a senha obedeça aos requisitos, o tamanho dela precisa ser maior ou igual a oito e conter uma letra maiúscula, uma minúscula e um número. As funções islower, isupper, isnumeric retornam True se todas as letras forem minúsculas, maísculas ou se forem apenas números, respectivamente. Dessa forma, se negamos que ela seja apenas minúsculas, maísculas ou se forem apenas números, então torna-se obrigatório que ela contenha os três tipos de caractere.

def forte(passwd): // def é a palavra-chave utilizada para definir uma função. Forte é o nome da função e passwd é o parâmetro. O parâmetro é um valor onde quando a função for executada, ela deve conter um uma variável no mesmo local, sendo chamada de argumento. Então quando é definido uma função e ela contém um parâmetro, será trabalhado neste parâmetro observando-o uma fórmula matemática, onde não é sabido o que passwd contém, mas ainda assim é definido instruções para que o que o usuário inserir em passwd seja compatível com a necessidade.

return // A palavra return é uma palavra-chave que indica o que a função em questão irá enviar quando for chamada. Nesse caso, como é uma expressão, o valor retornado só pode ser True ou False.

len(passwd) >= 8 // len() é uma função que retorna o tamanho de uma string, ou seja, de uma cadeia (sequência) de caracteres, uma sentença. Dessa forma, essa expressão nos diz se é True ou False que o tamanho de passwd é maior ou igual a 8.

and // Como estamos trabalhando com várias expressões vamos sempre uní-las com a palavra-chave and. Além disso, com a palavra and, é necessário que todas as expressões sejam avaliadas como True para que o retorno da função seja True.

len(passwd) >= 8 and

not passwd.islower() and

not passwd.isupper() and

not passwd.isnumeric()

Todas essas expressões precisam ser True para que o retorno da função forte também seja True. A primeira expressão não necessita de um and a sua frente e a última não necessita de uma and, visto que é utilizado como conexão, além da sua função lógica, que obriga que todas as expressões sejam validas como True.

not passwd.isupper() // A função isupper retorna se uma sentença é composta por todos os caracteres em letras maiúsculas. Ela retorna True ou False para essa validação. Você deve inserir a string antes dela e logo após um ponto. Além disso, como eu quero não quero que a variável seja totalmente em maiúsculo, então acrescentei not na frente. O not, é uma palavra-chave que nega a expressão a sua frente. Isso significa que essa expressão só irá retornar True se passwd NÃO conter todos os caracteres em maíusculo. O mesmo se repete em isupper e isnumeric.

Não esqueça da indentação correta :)

Perguntas interessantes