Lição 4: while loop

while loop

  • Na segunda aula, a gente aprendeu o ‘for loop’, um jeito para repetir os mesmos comandos varias vezes
  • No caso do for loop, a gente tinha que saber exatamente quantas vezes a gente quer repetir uma coisa. Por exemplo:
import turtle

for i in range (4):
    turtle.forward(100)
    turtle.right(90)

 Nesse exemplo, a gente sabe antecipadamente que a gente quer fazer o seguinte 4 vezes, nem mais nem menos.

  • Porém, há situações onde o desenvolvedor nem sabe quantas vezes ele quer repetir uma coisa. Ele simplesmente sabe que ele quer repetir uma coisa até que uma condição seja cumprida.
numero = 1

while numero < 100:
    numero = numero * 2

Aqui eu quero multiplicar um numero por 2 até que o numero seja maior do que 100. Eu não sei quantas vezes eu preciso fazer isso, só sei que quero fazer isso até o numero seja maior do que 100.

  • As condições que a gente usa no while loop são iguais do que elas que a gente usa no if statement. Então a gente pode usar as conjunções ‘<‘, ‘>’, ‘<=’, ‘>=’, ‘==’, ‘!=’
  • Agora, vamos fazer um exemplo mais complicado com o while loop. A gente vai implementar o Conjectura de Collatz:

Esta conjectura aplica-se a qualquer número natural, e diz-nos para, se este número for par, o dividir por 2 (/2), e se for impar, para multiplicar por 3 e adicionar 1 (*3+1). Desta forma, por exemplo, se a sequência iniciar com o número 5 ter-se-á: 5; 16; 8; 4; 2; 1. A conjectura apresenta uma regra dizendo que, qualquer número natural, quando aplicado a esta regra, eventualmente sempre chegará a 4, que se converte em 2 e termina em 1.

numero = 18

while numero != 1:
    if numero % 2 == 0:
        numero = numero / 2
    else:
        numero = (numero * 3) + 1
    print(numero)
  • Enquanto que o numero não seja 1, a gente vai fazer o seguinte: se o numero for par, divide por 2, se o numero não for par, multiplica por 3 e adiciona 1.

Leave a Reply

Your email address will not be published. Required fields are marked *