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 é?
Muito bom! Me ajudou bastante, obrigada!
ResponderExcluirBom dia preciso de ajuda.Escreva um programa em Python que pede ao utilizador para introduzir um número inteiro, n, e calcula a soma
ResponderExcluir1 + 2 + … + n, se n > 0,
-1 + -2 + … + n, se n < 0.
Se n = 0, a soma é zero.
Use um único ciclo while para calcular a soma.
Exemplos de interacção:
Exemplo 1:
Introduza o limite:
0
Soma = 0
Exemplo 2:
Introduza o limite:
3
Soma = 6
Exemplo 3:
Introduza o limite:
-3
Soma = -6
O seu programa deve respeitar escrupulosamente os exemplos apresentados, tanto no que diz respeito à forma de pedir os dados, como à forma de apresentar os resultados. Os valores apresentados nos exemplos são apenas exemplificativos: o seu programa deve aceitar qualquer número inteiro.
Assuma que os dados introduzidos estão sempre correctos, isto é, que o número introduzido é sempre um inteiro.
Como se resolve? Please a need help
O que você já conseguiu desenrolar ?
ExcluirN= int(input (' introduza o limite: '))
ExcluirSoma=0
If==0:
Print ('soma = ' ,n)
Elif = n>0:
n=n*(n-1)
Print('soma=',n)
Else:
N=n*(n+1)
Print('soma=',n)
De momento só isto, e não está a funcionar correctamente, o problema é que tenho de usar o while e não entendo onde e como usar.
Pegue duas variáveis. Uma vai percorrer todos os números, de 1 até n.
ExcluirA outra, vai servir como um acumulador...ou seja, para somar cada um dos valores que a variável anterior assumiu.
Não consigo entender ��♀️
ResponderExcluirEstou fazendo uns exercícios no hacker rank e tem um com While que pede pra o usuário digitar um número inteiro e com um laço while eu tenho q somar esse número é imprimir o resultado:
ResponderExcluirEx: se o usuário digitar o número 123 eu teria q dar uma saída de 6... Mas não consigo entender como colocar isso no laço... Sei q se o % me retorna o último valor e a // (os dois por 10) me dá a dois primeiros valores... Poderia me explicar como encaixar isso no while? Obrigada!
Veja esse tutorial:
Excluirhttp://www.pythonprogressivo.net/2018/02/Achar-Unidade-Dezena-Centena-de-um-Numero.html
Eu tentei fazer o seguinte teste de validade enquanto estava usando o while mas não rolou!
ResponderExcluiraluno = int(input("Número de alunos na turma: "))
nota = 0
count = 1; soma = 0.0
while count <= aluno:
print("Nota do aluno ", count, ":")
if nota < 0 or nota > 10:
print("Nota Inválida!\nDigite a nota do aluno ", count, ":")
nota = float(input())
soma += nota
count += 1
print("Média da Turma: ", (soma/aluno))
Caso a nota for menor que 0 ou maior que 10, o programa deveria pedir a nota novamente mas no ponto em que parou.
No exemplo, no aluno 3 a nota é inválida (12) e deveria pedir novamente a noa 3, porém foi acrescentando mais 1 no número que estava errado:
Número de alunos na turma: 10
Nota do aluno 1 :
2
Nota do aluno 2 :
4
Nota do aluno 3 :
12
Nota do aluno 4 :
Nota Inválida!
Digite a nota do aluno 4 :
12
Nota do aluno 5 :
Nota Inválida!
Digite a nota do aluno 5 :
12
Nota do aluno 6 :
Nota Inválida!
Digite a nota do aluno 6 :
12
Primeiro corrija o print dentro do while, se vc quiser colocar a nota do aluno, não pode ser print, e sim um input para vc colocar a nota do aluno.
ExcluirSegundo, para vc conseguir validar a nota se é menor que 0 ou maior que 10 e deseja que volte até digitar um número válido, não pode ser if, deve ser outro while.
Lembrando que o input da nota do aluno para ele realizar a soma, ele precisa estar dentro da variavel nota. E no segundo while o input é exatamente o mesmo.
while(True):
ResponderExcluirprint('Aula boa demais!!!')
alunos = int (input("digite a quantidade de alunos: "))
ResponderExcluircount = 1
soma = 0
while count <= alunos :
nota = float (input ("digite a nota do " + str(count) + " aluno: "))
soma = soma + nota
count +=1
notaFinal = (soma / alunos)
print ("A média da turma é de: " , notaFinal )