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.
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çãoOcultar 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.