Aula 11: Laços de Repetição (2/2) | Lógica de Programação (c/ Python)
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! 🔁