🎦 Vídeo

Aula 11: Laços de Repetição (2/2) | Lógica de Programação (c/ Python)

📚 Compilados

Laço de repetição while

Aprendemos como usar o laço de repetição for…in range para quando sabemos exatamente quantas vezes o número de vezes que vamos repetir algo. Mas e quando não sabemos? A vida (e principalmente o usuário) é imprevisível e nem sempre teremos esse dado de antemão. Vamos levar em consideração este pequeno código, por exemplo:

numero = int(input("Insira um número maior que zero"))
if numero <= 0:
	print("Número inválido! Tente novamente")
else:
	print(f"Você escolheu o número {numero}")

Do jeito que este programa está agora, o usuário tem apenas uma tentativa de escolher o número correto. Caso ele erre, é necessário reiniciar todo o programa para que ele possa tentar novamente. Como podemos fazer para que ele possa tentar quantas vezes for preciso sem o programa se interrompido?

O que queremos fazer é algo do tipo: "enquanto o número não for maior que zero o usuário precisa inserir novamente”. Essa palavra enquanto traz consigo uma semântica muito forte na programação, pois podemos criar repetições atreladas a condições usando o while (enquanto em inglês).

Então ao invés de atrelar a condição ao if, passaremos ela a este novo tipo de repetição:

numero = int(input("Insira um número maior que zero"))

while (numero <= 0):
	print("Número inválido! Tente novamente")
	numero = int(input("Insira um número maior que zero"))

print(f"Você escolheu o número {numero}")

Note que aqui podemos repetir a ação de escolher um número entre 1 a N vezes: tudo depende do comportamento do usuário. Esse tipo de repetição pode ser muito útil também, por exemplo, para a construção de menus. Olha só:

while(True):
	print("Selecione 1 para o hello world ou 0 para sair")
	escolha = int(input("Faça sua escolha: "))
	if escolha == 1:
		print("Hello World")
	else:
		print("O programa será encerrado")
		break

Note que aqui no else usamos uma palavrinha nova, o break. Este é o termo que usamos sempre que precisamos abortar um laço de repetição. Quando colocamos o True no while, dizemos que ele está em um loop infinito. Se não colocamos uma forma de encerrar este loop, ele pode acabar consumindo toda a memória do seu computador. Tenta ai, rs!

while(True):
	print("Estou preso em um loop infinito!")

Apesar da nossa brincadeira, tenha sempre em mente que a condição do loop while PRECISA de alguma forma ser quebrada. Como neste exemplo aqui:

contador = 5

while contador > 0:
    print(f"Faltam {contador} segundos para o lançamento!")

print("Foguete lançado!")

Ao rodar este código vivenciamos toda a intensidade de um loop infinito. Isso acontece porque o contador, atrelado a condição, nunca tem ser valor alterado. Ou seja, estamos mais uma vez em um while(True). Para resolver, basta fazer um decremento na variável:

contador = 5

while contador > 0:
    print(f"Faltam {contador} segundos para o lançamento!")
    contador = contador - 1

print("Foguete lançado!")

Agora sim! Sai pra lá loop infinito! 🔁

🧩 Exercícios