Faça um programa que peça ao usuário uma senha. A senha correta é engenharia.
Usando while, permita que o usuário tente digitar a senha no máximo 3 vezes.
O programa deve mostrar:
Acesso permitido
caso a senha esteja correta.
Caso o usuário erre as 3 tentativas, mostre:
Acesso bloqueado
Usando while, permita que o usuário tente digitar a senha no máximo 3 vezes.
O programa deve mostrar:
Acesso permitido
Caso o usuário erre as 3 tentativas, mostre:
Acesso bloqueadoPasso 1
O enunciado pede que eu escreva um programa que:
- peça ao usuário uma senha;
- a senha correta é
; - usando
, permita no máximo 3 tentativas de digitar a senha; - se a senha estiver correta em alguma das tentativas, o programa deve mostrar exatamente:
- se o usuário errar as 3 tentativas, o programa deve mostrar exatamente:
Informações relevantes dadas:
- senha correta:
; - número máximo de tentativas:
.
Passo 2
Planejar a solução (o que o programa precisa fazer, em palavras simples):
- manter um contador de tentativas (começando em zero);
- enquanto o contador for menor que 3, pedir a senha ao usuário;
- comparar a senha digitada com a senha correta;
- se for igual, mostrar
e encerrar o laço/programma; - se não for igual, incrementar o contador e, se chegar a 3 sem acerto, mostrar
.
Variáveis que vamos usar e o que significam:
-
: número máximo de tentativas permitidas (valor ). -
: contador atual de tentativas já usadas (começa em ). -
: string que contém a senha certa ( ). -
: variável booleana que indica se o usuário acertou a senha (inicia como ).
Passo 3
Conceito do
(explicação didática):
-
repete um bloco de código enquanto uma condição lógica for verdadeira. - Sintaxe básica em Python:
- No nosso caso, usaremos a condição
para limitar as tentativas a 3. - Dentro do laço vamos ler a senha com
, comparar com (comparação de strings) e usar para sair do laço se a senha estiver correta.
Passo 4
Detalhando cada passo dentro do laço e mostrando o código correspondente (pedacinhos que você pode entender e escrever na prova):
Inicialização:
- definir
, - definir
, - definir
, - definir
.
Leitura e verificação dentro do
:
- condição do laço:
. - dentro do laço:
- pedir a senha:
. - explicação:
lê uma linha do usuário; remove espaços extras no começo/fim para evitar erros por espaços.
- explicação:
- comparar:
- se verdadeiro:
, , e (sai do laço). - senão:
(incrementa o contador e o laço repete se permitido).
- se verdadeiro:
- pedir a senha:
Passo 5
Tratar o caso em que as 3 tentativas foram usadas sem sucesso:
- após o laço
, verificar se é . - se for
, então o usuário não acertou em nenhuma das tentativas e devemos imprimir:
Por que usar a variável
? Porque quando usamos
para sair do laço ao acertar, precisamos saber se saímos por acerto ou porque o laço terminou por esgotar as tentativas. A variável
registra isso de forma clara.
Passo 6
Observações práticas e dicas para prova:
- lembrar de inicializar o contador antes do laço; se esquecer, código dará erro.
- não confunda a comparação de strings (
) com atribuição ( ). - usar
é uma boa ideia para evitar que um espaço extra faça a comparação falhar; não foi pedido para ignorar maiúsculas/minúsculas, então o correto aqui é comparar exatamente com . - no enunciado não é pedido mostrar mensagens a cada erro; por isso o código abaixo só mostra as mensagens finais exigidas.
Passo 7
Programa completo (junção de todas as partes mostradas acima). Este é o código final que você pode escrever e executar:
Resposta
max_tentativas = 3
tentativas = 0
senha_correta = “engenharia”
acertou = False
tentativas = 0
senha_correta = “engenharia”
acertou = False
while tentativas < max_tentativas:
senha = input("Digite a senha: ").strip()
if senha == senha_correta:
print(“Acesso permitido”)
acertou = True
break
tentativas += 1
senha = input("Digite a senha: ").strip()
if senha == senha_correta:
print(“Acesso permitido”)
acertou = True
break
tentativas += 1
if not acertou:
print(“Acesso bloqueado”)
print(“Acesso bloqueado”)