
"Professor, para quê eu vou usar o while se o for faz a mesma coisa, porém com menos linhas?"
Já que exemplos falam mais do que palavras...
como havíamos visto, o while funciona desta maneira:
Ele realiza uma verificação, semelhante ao IF, porém irá executar o trecho de código várias vezes, enquanto a afirmação for verdadeira. Somente quando esta for falsa, ele irá parar de repetir o código.
i = 0
while(i < 10):
print("hello world")
print("fim")
o while usa o contador i para imprimir dez vezes o hello world, e tudo que estiver identado com um tab à direita.
o for funciona de maneira similar:
for i in range(0, 10):
print("hello world")
print("fim")
temos um código que faz a mesma coisa. Perceba que a identação ainda influencia, ou seja, se o código estivesse assim:
for i in range(0, 10):
print("hello world")
print("fim")
seria impressa a palavra "fim" dez vezes, logo após cada "hello world".
o range(a, b) especifica um conjunto de números, que iniciam no a e vão até o anterior ao b. Assim:
range(1, 5) -> 1,2,3,4
range(0, 6) -> 0,1,2,3,4,5.
Em
todos esses exemplos, o while e o for são idênticos.
Porém o for só funciona se você souber o número de vezes que um laço
deve se repetir. Mas o while, não. Ele vai além!!!!
O while repete um trecho de código enquanto uma afirmação for verdadeira. Perceba:
soma = 0
i = 0
while (i < 10):
num = int(input("digite \n"))
soma = soma + num
i = i + 1
print(soma)
somatório dos 10 números digitados. Como ficaria com o for????
soma = 0
for i in range(0, 10):
num = int(input("digite \n"))
soma = soma + num
print(soma)
..duas linha a menos :)
MAS e se eu pedir para você somar todos os números digitados, até que se
digite "zero" ????? você não sabe quantos números serão digitados....
mas qual a condição????
enquanto o número for diferente de zero
while(num != 0)
veja o exemplo
soma = 0
num = 1
while(num != 0):
num = int(input("digite \n"))
soma = soma + num
print(soma)
creio que compreendeu, apenas analisando esse código.... a soma pode ocorrer uma, duas, trinta ou infinitas vezes... depende da entrada do usuário.