Enviar um café pro programador

Mostrando postagens com marcador Laço. Mostrar todas as postagens
Mostrando postagens com marcador Laço. Mostrar todas as postagens

Laço FOR em Python - Um loop controlado

Agora que já estudamos e aprendemos direitinho, em nosso Curso Python Progressivo, como usar o laço While, vamos aprender um outro loop, chamado FOR.


Laço FOR em Python - Como usar ?

Sem mais delongas, vamos mostrar como é a declaração e estrutura de um laço for, em Python:

for variavel in [val1, val2, val3, etc]:
    codigo
    codigo
    codigo

Funciona basicamente assim.
A variável 'variavel' vai assumir o valor da variável 'val1', e executa o código.

Em seguida, 'variavel' recebe o valor de val2, e executa o código. E assim sucessivamente, até 'variavel' ter recebido todos os valores da sequência.

Ou seja, nosso laço for tem três coisas:
A variável que vai receber os valores de uma sequência de dados
A sequência de dados
Código a ser executado em cada iteração

Diferente do loop WHILE, que apenas faz um teste (se for verdadeiro executa um código, se for falso, termina o loop), o loop FOR é dito controlado, pois vai executar um determinado número de vezes, que nós escolhemos previamente.

Vamos ver alguns exemplos de uso do laço FOR para firmar os conceitos, só ler essa abstração é meio...abstrato.




Exemplo 1 de uso do laço FOR em Python

"Crie um script em Python que imprima os números de 1 até 5 na tela."
 
Nossa sequência é: 1, 2, 3, 4, 5
Então, nosso código fica:

for val in [1,2,3,4,5]:
    print(val)

Sim, é só isso.
E mais simples é o funcionamento: a variável 'val' recebe o valor 1, e imprime. Depois recebe o valor 2, e imprime....por fim, recebe o valor 5 e imprime.

Como a variável percorreu todos os elementos da lista (esses valores entre colchetes se chamam list e estudaremos as listas com afinco, mais na frente em nosso curso), o laço for acaba.



Exemplo 2 de uso do laço FOR em Python

"Crie um script que imprime todos os dias da semana na tela."
 
Não é obrigatório usarmos números na sequência. Uma lista pode ser formada de strings, por exemplo.

Nosso código fica:

for dia in ['Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado', 'Domingo']:
    print(dia)


Ou seja, a variável 'dia' recebe o valor de cada string e imprime na tela.

Exercício:

"Escreva um script que imprima os números de 1 até 1000."

"Nossa senhora, vou ter que usar a sequếncia [1,2,3,4,5,6,7,8,9...,1000] ???
Deus me livre!"

Calma, nobre cavaleiro Python. A programação veio para facilitar nossas vidas, e não o contrário.

Não precisa digitar os mil números, é para isso que serve o Python: trabalhar pra gente!

No próximo tutorial de Python, vamos aprender a usar a função range() do Python, que resolve esse problema e muitos outros.

A função range

Curso de Python com Certificado

Já imaginou ganhar dinheiro com Python?
Se, trabalhando e se tornando um programador Python profissional.

Pois é, pare de imagine e tome uma atitude pra isso se tornar realidade:
Curso de Python

WHILE em Python - Como usar

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

Looping while em Python

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 é?

Laços e Loopings - O que são? Para que servem ?

Antes de entrarmos em detalhes sobre um dos assuntos mais importantes de nosso Curso de Python, que são os laços (também conhecido por loopings) while e for, vamos tentar entender a motivação por trás deles.

Em vez de vir e jogar definições e instruções na sua cara, vou fazer entender que alguma coisa deve ser feita/estudada para que nossos conhecimentos possam fazer programas poderosos, grandes e interessantes.


Repetindo estruturas e códigos

"O professor Bruce Dickinson vai dar aula em uma faculdade, é o novo professor e ele precisa que você crie um programa que calcula a média de todos os alunos e diga a média da turma. O professor Bruce tem várias turmas, dos mais variados tamanhos. Resolva esse problema."

"Ah, moleza. Só pedir as notas de cada aluno, somar e calcular pelo tanto de alunos na turma. Até já fizemos exercício disso, Python Progressivo, esqueceu?"

Ok, vamos lá.
Vamos supor que nossa turma tenha 2 alunos.
Nosso código é

media2.py:
nota1 = float(input("Nota 1:"))
nota2 = float(input("Nota 2:"))

media = (nota1+nota2)/2

print("A media é: ", media)


Já se tiver 3 alunos, será
media3.py
nota1 = float(input("Nota 1:"))
nota2 = float(input("Nota 2:"))
nota3 = float(input("Nota 3:"))

media = (nota1+nota2+nota3)/3

print("A media é: ", media)


Se a turma tiver 50 alunos, nosso script é...
(imagine aqui um código gigante, que pede 50 notas, vá somando todas e divida tudo por 50).

Prontinho, você manda vários e vários scripts para o professor, para ele usar cada um de acordo com o número de alunos de cada turma.

Ok? Parece fazer sentido, ficou bacana?


Programação é simplificação

NÃO!!! Caramba, que ideia bizarra!

Para cada turma, usar um script diferente? Ia ter o que, uma pasta com 50 programas?

Quando quer usar duas células no Excel, você abre uma planilha.
Para usar três células, você vai abrir outra planilha? Claro que não!
Pode usar uma ou um milhão de células, pode usar a mesma planilha, o Excel não vai te fazer usar milhares de programas diferentes para trabalhar.

O mesmo vale para nosso script.
E se você for contratado para fazer o censo, vai fazer um script com 1 milhão de linhas, pedindo 1 milhão de informação diferente, de cada pessoa...vai usar milhões de variáveis num programa só?

Claro que não! Isso é impossível de se fazer manualmente!

A gente programa pra resolver problemas que seriam difíceis de se fazer na mão. A gente programa pra deixar a vida mais fácil.

E não tenha dúvidas,se estudar pelo Python Progressivo, vai fazer muitos e muitos programas úteis, uma nova rede social, um novo Google, um novo Youtube...

Progamar é encontrar padrões

O grande segredo da programação é na sua capacidade de notar padrões.
Identificar padrões é o ideal.

Vamos identificar em nosso exemplo?
Primeiro, devemos saber o número de alunos da turma.
E quem sabe isso? O Bruce. Então nosso programa vai pedir a ele esse valor x de alunos.

Em seguida, o que fazemos?
Para cada aluno, do primeiro até o de número x, vamos pedir um valor e armazenar em uma variável diferente.

Ao final de tudo, nosso script vai somar da primeira variável até a variável que contém o valor da nota do aluno de número x.

Depois simplesmente divide tudo por x. Essa é a média.

Veja o padrão: o x pode ser 1, 2, 3, 4, ..., 2112, ...1 milhão
Tanto faz. A ideia é sempre essa, sempre o mesmo roteiro (script em inglês).


Laços e Loopings em Python

Um laço, ou um looping, é algo que se repete.
Vamos estudar os laços while e for, e chamamos ele de estruturas de repetição.

No nosso exemplo, uma coisa se repete: ficar pedindo as notas.
Vamos fazer com que nossos programas fiquem presos em determinados loopings, fazendo coisas repetidas (como pedir nota), até onde desejarmos (no caso, deve se repetir x vezes).

Para nós, pedir 1 milhão de dados, usando 1 milhão de linhas de comando, é algo impossível de se fazer na mão.

Mas para os computadores não. Fazem isso em milésimos de segundos.

E o que um programador Python faz?
Manda no computador. Faz ele te obedecer. Cria programas Python que fazem de um computador seu escravo.

Assim, com poucas linhas, você vai programar scripts que fazem milhões de coisas, bilhões...quantas vezes você quiser e mandar.

Você tá ficando foda pra caramba.
Sinta o poder. É você saindo da Matrix e aprendendo a criar sua própria Matrix.