Digamos que você precise receber o nome e a idade de 20 pessoas, e, ao final, o programa deve mostrar a quantidade de pessoas maior de idade (quantidade de pessoas com mais de 20 anos).
Se, com os nossos presentes conhecimentos, elaborássemos este programa ele ficaria basicamente assim:
Estrutura de repetição, à princípio, pode ser escrito em python de duas formas: através de for (significa para) ou de while (significa enquanto). Vejamos como é a estrutura de cada um:
for variavel in range(quantidade de repetições):
código
while (condição):
código
Bom, com isso, já podemos ter uma ideia de como pode ser feito nosso programa acima. Vamos, posteriormente, elaborá-lo com o laço de for e com o laço de while. Para início, vamos ver, mais aprofundamente, como funciona o for, iniciando com um teste. Façamos isso:
numero = 10
for var in range(numero):
print(var)
Execute o código acima e observe que o resultado será este:
Ora, vejamos por partes, neste momento existem muitas coisas a serem observadas. Vamos começar por um pequeno detalhe: print(var). Este print é a melhor forma de explicar o como a variável var se comporta dentro do for. Esta variável recebe os números, iniciando-se do 0, até a quantidade informada. Isto é: se a nossa quantidade foi 10, a variável var recebeu, na ordem crescente, os números 0,1,2,3,4,5,6,7,8 e 9. Isso mesmo! Ela não chega a receber o valor 10. Se quiséssemos poupar a memória RAM (onde ficam armazenadas as variáveis), poderíamos fazer o seguinte:
for var in range(10):
print(var)
O resultado seria o mesmo. Bom, mas se quiséssemos imprimir esses números na ordem decrescente? É possível? Claro! Veja:
for var in range(10,-1,-1):
print(var)
Bom, analisarmos a saída do programa (o resultado), teremos:
Primeiramente vamos entender o que fizemos para que depois você mesmo possa tirar algumas conclusões. Note que no código eu dividi o range em três partes: Início, Fim, e Passo. O início indica de onde deve iniciar a contagem. O fim representa o último número a ser representado, e, por fim, o Passo, representa de quantos em quantos números será a representação na variável var. Com isso, eu acabo declarando que a contagem iniciará em 10, terminará em -1 e será de 1 em 1, em ordem regressiva (por isso o sinal de negatividade). Bom, mas se é de 10 até -1, porque só fomos até o 0? Isso porque existe uma certa regra, na qual o último número representado será um número a menos que o que se espera. No caso, se esperávamos que fôsse até o -1, foi até o 0. Se digitássemos que fosse, em ordem regressiva, até o 5, iria até o 6. Se fosse em ordem progressiva, e digitássemos 20, seria até o 19. E assim sucessivamente.
Com isso, já analisamos como, basicamente funciona o for. Vamos agora compreender o while.
Para início, o while não é necessariamente utilizado para uma contagem pré-determinada. Isto é, não podemos fazer o seguinte:
while 5:
print('Se você definiu o 5 para repetir esta frase 5 vezes, dá erro de semântica')
Se você copiou e executou o código acima, vc perceber que a frase "Dá erro de semântica" se repete infinitamente. Em outras palavras este é o que chamamos que é um "loop infinito". Para fazer-mos isso é necessário um pouco mais de lógica, vamos, por exemplo, imprimir os números de 1 a 10, e, depois, de 10 a 1. Vejamos:
Agora se depare com a última linha: num_inicial += 1. Este trecho de código é feito o que chamamos de concatenação. Isso é a mesma coisa que fazer num_inicial = num_inicial + 1. Note que a saída foi exatamente como queríamos que fosse, os números de 1 até 10. Agora, para fazer em ordem regressiva, talvez você já tenha em mente como deve ser feito. Veja:
Perceba como, novamente, foi executado exatamente o que queríamos. Note, novamente, que na última linha, existe: num_inicial -= 1. Isso puxa o mesmo princípio de contagem, só que agora regressivo. Bom, isso é o mesmo que: num_inicial = num_inicial - 1.
Vamos agora para um pequeno problema que pode surgir agora: perceba que os números são impressos somente um abaixo do outro. Seria possível imprimir um ao lado do outro? Claro! Vejamos:
Se você é um bom observador, vc notou algo de diferente lá no print: end=' '. Certo? Pois é, é isso, na verdade, o que marca como está sendo feita a impressão. Isto é, quando não colocamos nada, esse end= fica sendo o '\n' que pula uma linha. Logo, quando não colocamos nada disso no nosso print, está sendo posto, na verdade, ao final da linha de print o end='\n', onde pula-se uma linha a cada linha. Com isso, não necessariamente podemos colocar somente um espaçamento entre os números. Pode ser, ainda, qualquer coisa, caractere ou não.
Agora que conhecemos uma boa parte do while e do for, vamos voltar àquele nosso problema? Lembra?
"Receber o nome e a idade de 20 pessoas, e, ao final, o programa deve mostrar a quantidade de pessoas maior de idade (quantidade de pessoas com mais de 20 anos)."
Com o for, temos:
Perceba que, se você executar o código acima, será feito exatamente o que se pede, sem nenhuma necessidade de repetições, assim como seria proposto sem o conhecimento da estrutura de repetição. Vamos agora elaborar este mesmo programa com o while. Vejamos:
Note que, do mesmo modo de for, o código acima funciona, sem nenhuma qualquer diferença, a não ser no código.
Aparentemente o while parece ser mais complexo e difícil, mas haverá algumas situações que ele pode ser mais eficiente que o for assim como haverá situações que o for será mais eficiente que o while.
Por enquanto é só. Fiquem ligados nas novidades do site lucasfb1995.wix.com/mundo-python, lá encontra-se disponível, inclusive, o python para celulares S60, assim como alguns jogos e programas para windows.