Quando estamos desenvolvendo programas, é muito comum precisarmos repetir uma ação até que determinada condição seja atendida.
Imagine um sistema de login. Se o usuário digitar a senha errada, o programa deve pedir a senha novamente. Somente quando a senha correta for informada o acesso será liberado.
É exatamente esse tipo de situação que o laço while resolve.
Neste artigo, vamos utilizar um exemplo simples para entender como essa estrutura funciona na prática.
O que é o while?
O while é uma estrutura de repetição que executa um bloco de código enquanto uma condição for verdadeira.
Sua sintaxe é bastante simples:
while condição:
# código executado enquanto a condição for verdadeira
O Python verifica a condição antes de cada repetição.
-
Se ela for True, o bloco é executado novamente.
-
Se ela for False, o laço termina e o programa continua a execução.
O exercício
Veja o código completo:
# Senha correta que o usuário deve digitar
senha_correta = "python123"
# Contador de tentativas
tentativas = 0
# Pede a senha pela primeira vez
senha = input("Digite a senha: ")
# Enquanto a senha for diferente da correta,
# o código dentro do while continuará executando.
while senha != senha_correta:
# Soma 1 ao número de tentativas
tentativas += 1
# Informa que a senha está incorreta
print("Senha incorreta. Tente novamente.")
# Pede a senha novamente
senha = input("Digite a senha: ")
# Quando o while termina, significa que a senha está correta.
# Como a tentativa correta ainda não foi contada,
# incrementamos mais uma vez.
tentativas += 1
# Exibe a mensagem de sucesso
print("Acesso permitido.")
# Mostra quantas tentativas foram necessárias
print(f"Tentativas: {tentativas}")
Entendendo passo a passo
Definindo a senha correta
senha_correta = "python123"
Criamos uma variável que armazena a senha válida.
Mais adiante, o programa irá comparar o que o usuário digitou com esse valor.
Criando um contador
tentativas = 0
Essa variável registra quantas vezes o usuário tentou acessar o sistema.
Sempre que a senha estiver incorreta, esse número será incrementado.
Solicitando a senha
senha = input("Digite a senha: ")
Antes de iniciar o while, precisamos obter um valor para comparar.
Por isso, a primeira leitura é feita fora do laço.
O coração do programa: o while
while senha != senha_correta:
Essa condição pode ser lida da seguinte forma:
"Enquanto a senha digitada for diferente da senha correta..."
Enquanto isso for verdadeiro, o bloco será executado.
O que acontece dentro do while?
1. Conta a tentativa
tentativas += 1
Cada erro aumenta o contador.
É o mesmo que escrever:
tentativas = tentativas + 1
2. Exibe uma mensagem
print("Senha incorreta. Tente novamente.")
O usuário é informado de que a senha está errada.
3. Solicita uma nova senha
senha = input("Digite a senha: ")
Esse passo é fundamental.
Sem ele, a variável senha nunca mudaria.
Como consequência, a condição do while permaneceria verdadeira para sempre, gerando um laço infinito.
Quando o while termina?
O laço só termina quando o usuário digita:
python123
Nesse momento:
senha != senha_correta
passa a ser:
False
Como a condição ficou falsa, o while é encerrado.
Contando a última tentativa
Após sair do laço, encontramos:
tentativas += 1
Por que isso é necessário?
Porque dentro do while apenas as tentativas incorretas foram contabilizadas.
A tentativa correta acontece justamente quando o laço termina.
Por isso, adicionamos mais uma unidade ao contador.
Mensagem de sucesso
Agora o acesso pode ser liberado:
print("Acesso permitido.")
Depois mostramos o número de tentativas:
print(f"Tentativas: {tentativas}")
Se o usuário errar duas vezes e acertar na terceira, o resultado será:
Digite a senha: 123
Senha incorreta. Tente novamente.
Digite a senha: abc
Senha incorreta. Tente novamente.
Digite a senha: python123
Acesso permitido.
Tentativas: 3
Fluxo de execução
O funcionamento do programa pode ser resumido assim:
Início
↓
Pede a senha
↓
Senha está correta?
↓
Não
│
├── Conta tentativa
├── Exibe erro
├── Pede nova senha
└── Volta ao teste
↓
Sim
↓
Conta a tentativa correta
↓
Acesso permitido
↓
Mostra o total de tentativas
↓
Fim
O que aprendemos?
Neste exercício vimos diversos conceitos importantes:
-
Como utilizar o laço
while. -
Como repetir um bloco de código enquanto uma condição for verdadeira.
-
Como comparar valores utilizando
!=. -
Como atualizar variáveis durante a repetição.
-
Como evitar um laço infinito solicitando um novo valor dentro do
while. -
Como utilizar um contador para registrar o número de tentativas.
Conclusão
O while é uma das estruturas mais importantes da programação. Ele é utilizado sempre que não sabemos exatamente quantas vezes uma ação precisará ser repetida.
Neste exemplo, o programa continua solicitando a senha até que o usuário informe o valor correto. Esse é um cenário muito comum em sistemas de autenticação, menus interativos, validação de dados e diversas outras aplicações.
Dominar o while é um passo importante para desenvolver programas mais inteligentes e interativos em Python. Quanto mais você praticar com exemplos como este, mais natural será utilizar estruturas de repetição em seus próprios projetos.