Neste tutorial de nosso curso de Python, vamos estudar uma das coisas mais importantes e usada em programação: o laço
while (ou looping while).
Laço WHILE
Sem mais delongas, vamos aprender a usar essa arma de destruição em massa, que é o laço while.
Seu formato é
while <teste>:
codigo1
codigo2
codigo3
...
codigo4
A instrução
while funciona assim:
Assim que começa o while, ele faz um teste (como se fosse um IF teste condicional) e testa a instrução
<teste>.
Se este teste resultar em verdadeiro (TRUE), tudo que está dentro do laço while (codigo1, codigo2, codigo3..., é executado).
Terminou de executar tudo?
Testa de novo. Deu true? Executa tudo de novo...
E fica assim, testando, executando, testando, executando...
Como se fosse um
looping. E, de fato, é um looping.
E só vai parar quando o teste for FALSE.
Aí acaba o
while e o 'codigo4', de fora, é executado e o script segue seu percurso naturalmente.
Você vai entender melhor usando alguns exemplos.
Exemplo 1 de uso do laço WHILE
"Crie um programa que imprima na tela os números 1 até o 10, usando o laço while".
Primeiro de tudo, vamos declarar a variável 'numero' e fazer ela iniciar com valor 1.
O que queremos é imprimir ela, depois fazer ela virar o número 2 e imprimir de novo. Fazer ela receber o número 3, e imprimir de novo...até virar o número 10, imprimir e acabar aí.
O nosso teste é: 'numero é menor ou igual a 10? Ok, então imprime'.
E o
looping é simplesmente imprimir nossa variável.
Nosso código Python fica assim:
numero=1
while numero<=10:
print(numero)
numero += 1
Tem uma novidade aí:
numero += 1
Que é o mesmo que: numero = numero + 1
Ou seja, estamos incrementando a variável 'numero' em uma unidade.
Vamos ver passo a passo como funciona esse tal de
while.
Primeiro definimos nossa variável com valor 1.
Depois testamos se ela é menor que 10. Como é, vai executar o laço while.
Primeiro, imprime o valor da variável, que é 1.
Depois adiciona 1 a essa variável.
Agora ela vale 2. O teste é realizado, como 2 é menor que 10.
Executa de novo...imprime 2, incrementa e agora a variável é 3.
E assim vai indo, indo, repetindo, repetindo...vai chegar uma hora que 'numero=10'
Como 'numero<=10' é verdadeiro, o laço while é executado.
O número 10 é impresso na tela, e ele vira 11.
Agora, o teste vai dar falso e o while vai parar de executar.
E prontinho, você imprimiu do número 1 até o 10 usando o laço while!
Simples, não?
Vamos aprofundar mais e deixa esse código mais interessante.
Exemplo 2 de uso do laço WHILE
"Faça um programa que peça um número maior que 1 ao usuário. Em seguida, imprima todos os números, de 1 até o número que o usuário informou".
No exemplo anterior, a gente tinha um 'limite', que era o valor 10.
Quando chegava em 10...créu. Acabava o laço while.
Agora esse valor vai ser informado pelo usuário. Vamos armazenar essa informação na variável 'max' (de máximo).
Nosso código fica:
numero=1
max = int(input("Digite um inteiro maior que 1: ") )
while numero <= max:
print(numero)
numero += 1
Experimente digita 100, 1000, um milhão, um trilhão...
Veja que interessante: quantas vezes esse while vai ser executado?
Ué, depende do usuário!
Pode repetir uma vez, 10, mil, 1 trilhão...há uma interação entre o script e o usuário, vai fazer coisas diferentes de acordo com o desejo do usuário.
Exemplo 3 de uso do laço WHILE
"Escreva um programa que repita pra sempre, na tela, a mensagem 'Curso Python Progressivo'".
Quando que um laço vai se repetir pra sempre, indefinidamente?
Ué, quando seu teste for SEMPRE verdadeiro!
while True:
print("Curso Python Progressivo")
Também poderia colocar '1', '2' ou qualquer outro valor diferente de 0 ou false no teste, que daria sempre verdadeiro e iria sempre repetir.
Exemplo 4 de uso do laço WHILE
"Crie um programa que peça um número ao usuário e imprima todos os números pares de 1 até o número fornecido"
Vamos usar o código do exemplo 2.
Porém, não vamos sair imprimindo tudo. Devemos fazer um teste antes (
teste condicional IF) para saber se o número é primo, se for aí sim imprimimos.
Ou seja, vamos ter um IF dentro de um WHILE:
numero=1
max = int(input("Digite um inteiro maior que 1: ") )
print("Numeros pares entre 1 e", max, ":")
while numero <= max:
if numero%2==0:
print(numero, end=" ")
numero+=1
O end=" " é para mostrar um espaço em branco após imprimir cada número, ao invés de quebra de linha (enter).
Exemplo 5 de uso do laço WHILE
"Escreva um programa que pede a senha ao usuário, e só sai do looping quando digitarem corretamente a senha"
Obviamente, a senha é o número mais importante do universo:
senha='2112'
A senha que o usuário vai digitar, vai ficar na variável 'tentativa'.
Se 'senha' e 'tentativa' forem diferentes, o laço while fica repetindo e repetindo e repetindo...sempre pedindo a senha ao usuário.
O laço while só acaba quando as variáveis 'senha' e 'tentativa' forem iguais, ou seja, quando o usuário digitar a senha correta:
senha='2112'
tentativa=input("Digite a senha:")
while (senha != tentativa):
print("Senha errada! Tente novamente!")
tentativa=input("Digite a senha:")
print("Senha correta. Entrando no sistema...")
Pelo amor de deus, agora que sabe como funciona, não vai sair por aí usando seus conhecimentos pra invadir o sistema da Nasa, FBI, Polícia Federal ....
Exemplo 6 de uso do laço WHILE
"Programe um script em Python que calcule a média de uma turma, não importa o número de alunos que ela tenha, seu único script serve para todos os casos"
Esse é o problema que descrevemos quando falamos de
laços e loopings em Python.
Primeiro, perguntamos quantos alunos tem na turma e armazenamos em "alunos".
Vamos usar uma variável de apoio, chamada 'count', ela vai de 1 até o número de alunos, ok ? Ela que é incrementada no laço while (cresce de um em um).
A soma de todos os alunos, armazenamos na variável 'soma'.
Agora vem o laço while.
O teste é se 'count' é menor que 'alunos'. Se sim, vamos pedir a nota de cada aluno, do primeiro até o aluno de número 'alunos'.
A nota que o usuário digitar, vai ser armazenada na variável 'nota'.
Em seguida, armazenamos na variável 'soma'.
E assim vai indo, de aluno em aluno...no final, temos a soma total das notas de tooodo mundo, e não importa o número de alunos na turma, seja um aluno, 10, 20 ou mil alunos, a variável 'soma' vai ter a soma da nota de todo mundo.
Quando acabar o
while basta dividir essa 'soma' pelo número de alunos ('alunos') e prontinho, temos a média da turma, não importando o tamanho da turma:
alunos=int(input("Numeros de alunos na turma: "))
count=1; soma = 0.0
while count <= alunos:
print("Nota do aluno ", count, ":")
nota = float( input() )
soma += nota
count += 1
print("Media da turma: ", (soma/alunos) )
Foda, essa instrução
while, não é?