"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.