Validação de senha: Crie um programa que peça uma senha ao usuário e continue solicitando até que ele digite a senha correta (pode ser qualquer senha fixa). Use while True com break.
Passo 1
O enunciado pede um programa que solicite uma senha ao usuário e continue pedindo até que ele digite a senha correta. Obrigatoriamente devo usar
while True com break. Informações relevantes que temos:- Existe uma senha fixa (pode ser qualquer texto) que o programa deve reconhecer como correta.
- O programa deve pedir ao usuário repetidamente até que a senha digitada seja igual à senha fixa.
- Devo usar um laço infinito controlado por
while Truee sair dele combreakquando a senha estiver correta. - O enunciado não exige tratamento extra (como limites de tentativas, esconder a senha, etc.), mas posso mencionar variações depois.
Passo 2
Entendendo a estrutura que o enunciado exige (aula rápida e informal):
while Truecria um laço que, por padrão, nunca termina (é “infinito”). A ideia é ficar pedindo entrada até que algo interno diga “chega”.breaké o comando que interrompe imediatamente o laço mais interno. Usamosbreakquando a condição desejada acontecer (a senha digitada for igual à senha fixa).- Então o padrão é: entrar no
while True, pedir a senha, checar se é igual à senha correta; se for, executarbreak; caso contrário, informar erro e repetir. - Isso é ótimo para a prova porque é um padrão curto, explícito e fácil de explicar: laço infinito + condição de saída com
break.
Passo 3
Algoritmo em palavras (passo a passo lógico, sem código completo ainda):
- Definir uma variável com a senha correta (por exemplo,
senha_correta = "senha123"). - Entrar em
while True:. - Dentro do laço, pedir a senha ao usuário (usando
input). - Opcionalmente aplicar
.strip()ao texto lido para remover espaços acidentais no início/fim. - Comparar a string digitada com a senha correta usando
==(isso é sensível a maiúsculas e minúsculas). - Se forem iguais, mostrar mensagem de sucesso e executar
breakpara sair do laço. - Se forem diferentes, mostrar mensagem de senha incorreta e o laço recomeça (o
while Truevolta ao início).
Passo 4
Explicando cada construção que aparecerá no código (mini-aula prática):
senha_correta = "texto": cria uma variável chamadasenha_corretaque guarda a senha que o programa considera certa.while True:: abre um bloco que vai se repetir sem fim até que umbreakocorra.input("Digite a senha: "): exibe a mensagem ao usuário e lê o que ele digita como uma string..strip(): método de string que remove espaços em branco nos extremos; útil para evitar que um espaço extra quebre a comparação.if senha == senha_correta:: compara duas strings; retornaTruese forem exatamente iguais (mesmos caracteres, mesma ordem, mesma caixa).print(...): mostra uma mensagem na tela.break: sai dowhile Trueimediatamente.
Exemplo pequeno mostrando a ideia sem todo o programa:
- Se
senha_correta = "abc", e o usuário digita" abc ":input(...).strip()transforma" abc "em"abc".- A comparação
"abc" == "abc"éTrue, entãobreakserá executado.
Passo 5
Comportamento em um exemplo real (traço de execução):
- Suponha
senha_correta = "senha123". - Execução:
- Primeiro prompt: usuário digita
senhaerrada→ comparação falha → imprime “Senha incorreta. Tente novamente.” → laço continua. - Segundo prompt: usuário digita
senha123→ comparação dá match → imprime “Senha correta! Acesso permitido.” →breaké executado → laço termina → programa segue (ou termina).
- Primeiro prompt: usuário digita
- Observação: a comparação de strings é sensível a maiúsculas:
"Senha123"≠"senha123". Se quiser ignorar caixa, pode comparar.lower()das duas strings.
Passo 6
Pequenas variações úteis (dicas de implementação que talvez apareçam na prova):
- Para não mostrar a senha enquanto o usuário digita (apenas se for relevante): usar o módulo
getpass(import getpassegetpass.getpass("Digite a senha: ")). Isso é opcional e nem sempre pedido. - Para aceitar sem diferenciar maiúsculas/minúsculas: comparar
senha.strip().lower() == senha_correta.lower(). - Para limitar número de tentativas: adicionar um contador e sair com
breakouraiseapós X tentativas. - Mas atenção: o enunciado pedia especificamente usar
while Truecombreake repetir até senha correta — então a versão simples abaixo cumpre exatamente isso.
Passo 7
O código final que cumpre o enunciado é simples e direto. Ele usa
while True para repetir e break para sair quando a senha está correta. A implementação abaixo também usa .strip() para evitar falhas por espaços acidentais.Resposta
senha_correta = "senha123"
while True:
senha = input("Digite a senha: ").strip()
if senha == senha_correta:
print("Senha correta! Acesso permitido.")
break
else:
print("Senha incorreta. Tente novamente.")