Stela Python Aulas Aula 10

Aula 10 Situação-problema Unidade 3

Repetindo até acertar

O while, os contadores e o bloqueio da conta depois de três senhas erradas.

Objetivo do dia

Automatizar repetições com while e simular um mecanismo real de segurança.

Antes da aula

Revisar estruturas de decisão.

Como conta ponto

Exercícios no GitHub.

P1 · o problema

Três chances e a conta trava

Banco, e-mail, rede social: erre a senha três vezes e a conta é bloqueada. Como o sistema sabe quantas vezes você errou e quando parar de perguntar? Com um laço e um contador. Antes, a correção comentada da avaliação.

C1–C4 · conceitos

Laços que sabem parar

C1

while: repete enquanto for verdade

O while repete o bloco enquanto a condição for verdadeira. A cada volta, ele testa de novo.

A condição de parada precisa, em algum momento, ficar falsa. Senão, é laço infinito.

1contagem = 32while contagem > 0:3    print(contagem)4    contagem = contagem - 15print("Fogo!")67# 38# 29# 110# Fogo!
C2

Contadores e acumuladores

Contador soma 1 a cada volta: conta quantas vezes algo aconteceu. Acumulador soma um valor qualquer: guarda o total.

x += 1 é o atalho para x = x + 1.

1total = 02vezes = 03while vezes < 4:4    vezes += 1          # contador5    total += vezes * 10  # acumulador6print(vezes, total)   # 4 100
C3

O bloqueio de login

O laço junta duas condições: ainda tem tentativa e a senha ainda não está certa. Quando uma delas muda, ele para. Depois do laço, um if conta o final da história.

Cuidado: esqueceu de somar o contador? O laço nunca para. No terminal, Ctrl + C interrompe.

1SENHA_CERTA = "Py@2026"2tentativas = 03senha = ""45while tentativas < 3 and senha != SENHA_CERTA:6    senha = input("Senha: ")7    tentativas += 189if senha == SENHA_CERTA:10    print("Bem-vindo!")11else:12    print("Conta bloqueada")
C4

Validando a entrada

Outro uso clássico: perguntar de novo até o usuário digitar algo válido. O método isdigit() diz se o texto só tem números.

1idade = input("Idade: ")2while not idade.isdigit():3    print("Digite só números, por favor.")4    idade = input("Idade: ")5idade = int(idade)
CU1 · caso de uso

Três chances e a conta trava

Ator: Funcionário

Objetivo: Entrar no sistema, mesmo errando a senha uma ou duas vezes.

Fluxo principal

  1. O sistema pede a senha.
  2. Se errar, mostra quantas tentativas restam e pede de novo.
  3. Se acertar, libera a entrada.
  4. Na terceira senha errada, bloqueia a conta.

E se...

  • O funcionário digita só espaços: o sistema conta como tentativa? Decidam a regra.

Para pensar

  1. Qual é a condição de parada do while?
  2. Onde fica o contador, e o que acontece se ele não for somado?
A1 · atividade

Login com bloqueio

Individual, depois teste de mesa em dupla. O que você marcar fica salvo neste navegador.

0 de 7
S1 · conexão STEAM

Laços fora da tela

E

Eletrônica

O código de um Arduino roda num laço eterno de propósito: o loop() lê o sensor, decide e repete, milhares de vezes por segundo.

M

Matemática

Um acumulador é uma soma parcial: a cada volta, o total anterior mais o termo novo. É o somatório da matemática.

T

Tecnologia

Limitar tentativas é a defesa mais simples contra ataques de força bruta, aqueles da conta da aula 6.

D1 · desafio extra

Terminou antes? Tem mais.

Depois do bloqueio, faça o programa esperar 5 segundos antes de liberar mais uma tentativa. Dica: import time e time.sleep(5).

J1 · materiais

Para estudar e praticar

E1 · entrega

Commit no GitHub

Na próxima aula, o laço que sabe de antemão quantas voltas vai dar: o for.