• Python
  • 05. Laços de Repetição (while)

Laços de Repetição (while)#

O objetivo de aprendizado deste handout é que, ao final da atividade, você seja capaz de utilizar laços de repetição (não se preocupe, vamos explicar o que é isso) em seus programas em conjunto com as estruturas que vimos nas aulas anteriores (if, input, etc.) Para isso, vamos trabalhar com o exemplo de um jogo simples: o programa escolhe um número aleatório e o jogador precisa descobrir qual foi o número escolhido.

Importante

Sempre valide a resposta com o professor ou algum colega que já tenha validado a própria resposta antes de seguir para o próximo exercício.

Aquecimento#

Para começar, vamos implementar uma versão do jogo na qual o jogador só tem uma chance para acertar (sim, completamente na sorte 🍀).

Exercício 1

Passo 1: Faça um programa que sorteia um número aleatório entre 1 e 20 e guarda numa variável. Depois imprima o valor no terminal.

  • Use a função randint da biblioteca random (Dica: consulte a documentação)

Acessar exercício

Exercício 2

Passo 2: Depois de sortear um número entre 1 a 20, peça ao jogador um número entre 1 e 20.

Obs.: Lembre de retirar o print do exercício anterior.

Exercício 3

Passo 3: Dê o feedback da resposta do jogador:

  • Se o número digitado for menor que o número sorteado, imprima "Muito baixo";
  • Caso contrário, se o número digitado for maior que o número sorteado, imprima "Muito alto";
  • Caso contrário, imprima "Acertou".

Acessar exercício

Repetindo o if#

Vamos fazer uma breve reflexão. O que seria necessário alterar no código do jogo para que o jogador tivesse 2 chances? Uma solução rápida seria copiar o bloco do if, elif, else e colar no final do programa. Mas e se o jogador tivesse 5 chances? E 100? E se pudesse continuar tentando enquanto não tivesse adivinhado o número?

Exercício 4

O nosso jogo possui muitas condições, então, para introduzir o próximo conceito, vamos considerar um exemplo menor.

Faça um programa que pergunta ao aluno se ele tem dúvidas na disciplina. Se o aluno responder qualquer coisa diferente de 'não', escreva 'Pratique mais'. Caso contrário, escreva 'Até a próxima'

Acessar exercício

Seu código deveria ser similar a este:

resposta_do_aluno = input('Você está com dúvidas? ')

if resposta_do_aluno == 'não':
    print('Até a próxima')
else:
    print('Pratique mais')

Exercício 5

Vamos preparar nosso código para que seja possível perguntar novamente se o aluno tem dúvidas caso ele já tenha respondido antes que sim. Adicione uma variável tem_duvidas logo no começo do programa. Inicialize essa variável com (ou seja, faça ela receber inicialmente) o valor True. Coloque todo o seu código original dentro de um if tem_duvidas:.

Além disso, se o aluno responder 'não', mude o valor da variável tem_duvidas para False, pois o aluno não tem mais dúvidas.

Importante

Essa modificação não deve alterar o comportamento do seu programa. Teste-o para garantir que ainda está funcionando. Note que, como inicialmente tem_duvidas = True, o programa sempre vai entrar no if.

Antes de prosseguir, compare o seu código com a resposta abaixo. Para os próximos passos fazerem sentido é importante que o seu código siga a mesma estrutura.

Com a modificação acima seu código deve ficar semelhante a:

tem_duvidas = True

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

Considere a seguinte versão modificada do seu programa:

tem_duvidas = True

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

Exercício 6

Quantos resultados diferentes podem ocorrer ao executar esse programa?

Resposta

São 3 possíveis resultados:

  • Se o usuário responder 'não' na primeira vez, a variável tem_duvidas será atualizada com False e o programa imprimirá Até a próxima. Assim, o bloco do segundo if tem_duvidas não será executado.
  • Se o usuário responder qualquer coisa diferente de 'não', a variável tem_duvidas continuará valendo True e o programa imprimirá Pratique mais. Assim, o bloco do segundo if tem_duvidas será executado e o programa perguntará novamente se o aluno tem dúvidas. Aqui existem duas possibilidades:
    • Se o usuário responder 'não', o programa imprimirá Até a próxima e encerrará.
    • Se o usuário responder qualquer coisa diferente de 'não', o programa imprimirá Pratique mais e encerrará.

Exercício 7

Modifique o programa acima para que o aluno tenha 5 chances para responder que não tem mais dúvidas. Depois disso, mesmo que ele ainda tenha dúvidas, escreva 'Até a próxima'. Dica: a ideia deste exercício é copiar e colar código e adicionar um print no fim. Se você fez algo além disso, provavelmente não é o que estávamos esperando neste ponto.

Com a modificação acima seu código deve ficar semelhante a este:

tem_duvidas = True

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

if tem_duvidas:
    resposta_do_aluno = input('Você está com dúvidas? ')

    if resposta_do_aluno == 'não':
        print('Até a próxima')
        tem_duvidas = False
    else:
        print('Pratique mais')

O operador while#

Vamos ver como o operador while pode nos ajudar. 👉 Clique aqui