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 True e sair dele com break quando 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 True cria 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. Usamos break quando 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, executar break; 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):
  1. Definir uma variável com a senha correta (por exemplo, senha_correta = "senha123").
  2. Entrar em while True:.
  3. Dentro do laço, pedir a senha ao usuário (usando input).
  4. Opcionalmente aplicar .strip() ao texto lido para remover espaços acidentais no início/fim.
  5. Comparar a string digitada com a senha correta usando == (isso é sensível a maiúsculas e minúsculas).
  6. Se forem iguais, mostrar mensagem de sucesso e executar break para sair do laço.
  7. Se forem diferentes, mostrar mensagem de senha incorreta e o laço recomeça (o while True volta 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 chamada senha_correta que guarda a senha que o programa considera certa.
  • while True:: abre um bloco que vai se repetir sem fim até que um break ocorra.
  • 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; retorna True se forem exatamente iguais (mesmos caracteres, mesma ordem, mesma caixa).
  • print(...): mostra uma mensagem na tela.
  • break: sai do while True imediatamente.
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ão break será 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).
  • 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 getpass e getpass.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 break ou raise após X tentativas.
  • Mas atenção: o enunciado pedia especificamente usar while True com break e 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.")

Exercícios relacionados