Ir para o conteúdo

Semana 5 de 8

Laços

Em vez de copiar uma linha várias vezes, os estudantes fazem o programa repetir. Usando um laço while, eles criam um jogo de Adivinhe o Número que continua perguntando até o jogador acertar, dando dicas de muito alto e muito baixo pelo caminho. Por enquanto o segredo é fixo; na Semana 7 ele vira aleatório.

Tempo estimado
60 minutos
Projeto
Jogo de adivinhar o número

A ideia

Um laço repete o código para você não escrever cem vezes. Um laço while continua enquanto a condição for verdadeira: perfeito para um jogo que deve continuar perguntando até o jogador ganhar. Alguma coisa dentro do laço precisa tornar a condição falsa em algum momento, senão ele roda para sempre. Como input() devolve texto, usamos int() para transformar o palpite em um número que dá para comparar.

O que você vai aprender

  • Usar um laço while para repetir linhas até algo mudar.
  • Dar ao jogador quantas tentativas ele precisar, com um laço.
  • Combinar um laço com um if para reagir a cada palpite.
  • Encontrar e consertar um laço que nunca para.

Palavras novas

laço
Código que se repete em vez de rodar uma vez só.
while
Repete as linhas abaixo dele enquanto a condição se mantiver verdadeira.
int()
Transforma um texto digitado como "7" no número 7 para você poder comparar.
laço infinito
Um laço que nunca para porque a condição dele nunca fica falsa.

Projeto: Jogo de adivinhar o número

Edite o código inicial abaixo e clique em Executar para ver funcionar. Use Restaurar código inicial para voltar ao original quando quiser.

main.py
Terminal

Execute seu programa para ver a saída.

Resultado esperado

Chute um número de 1 a 10: 4
Muito baixo.
Chute um número de 1 a 10: 9
Muito alto.
Chute um número de 1 a 10: 7
Você acertou!

Minidesafio

Acrescente um contador de tentativas: comece com tentativas = 0, some 1 dentro do laço e, depois do laço, imprima quantos palpites foram necessários.

Desafio de depuração

Este jogo nunca acaba, nem quando o jogador digita 7. O segredo é o número 7, mas input() devolve o texto "7". Por que eles não são iguais, e o que transforma texto em número?

Código com erro

segredo = 7
palpite = 0
while palpite != segredo:
    palpite = input("Chute um número de 1 a 10: ")
Ver solução
Transforme o texto digitado em número com int():
palpite = int(input("Chute um número de 1 a 10: "))

Desafio extra

Mude o intervalo para 1 a 100 e dê ao jogador apenas 7 tentativas. Pare o laço e imprima Acabaram as tentativas! se elas se esgotarem.

Reflita

Um laço deixou você perguntar de novo e de novo sem se repetir. Qual parte do seu jogo final pode precisar repetir: os turnos, as perguntas, as rodadas?

Notas para o professor

O momento de aprendizado é o laço infinito: alguma coisa dentro do laço precisa mudar a variável que a condição checa, senão ele nunca acaba. Apresente int() só até onde for preciso para comparar números. Mantenha o segredo fixo nesta semana para os estudantes conseguirem prever e conferir o comportamento; a aleatoriedade chega na Semana 7.

Vai conduzir esta aula? Veja o guia para professores e bibliotecários com o passo a passo, os erros mais comuns e uma atividade de reserva sem computador.

Terminou esta aula? Marque como concluída para desbloquear a próxima semana.