Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] A estrutura While

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui



Estamos avançando no conteúdo!!! Agora vamos ver algo fundamental para muitos conceitos em Python: O while.

A Estrutura While



A estrutura while (enquanto) ou loop while, como também é chamado, tem como objetivo repetir a execução de um bloco de código enquanto uma certa condição é valida. A sua estrutura é a seguinta:

Código :
while condição:
    #Bloco de código
O bloco de código dentro do while vai ser executado múltiplas vezes, de acordo com o "valor" da condição. Enquanto a condição for True, o bloco será executado, quando a condição for False, o bloco não será mais executado. Vamos a um pequeno exemplo:
Código :
contador = 3
while contador != 0:
    print "%i..."%(contador)
    contador = contador - 1
print 'Boom!!!'
Executando temos a seguinte saída:
Código :
3...
2...
1...
Boom!
Nesse pequeno exemplo fizemos uma contagem regressiva de 3 até 0 (Boom!!!). Vamos analisar como o interpretador Python executou esse trecho de código:

  1. Primeiro criou a variável contador e atribuiu o valor 3 a ele;
  2. Entrou no loop while;
  3. Verificou que o contador (agora com o valor 3) era diferente de 0;
  4. Imprimiu "3..."
  5. Decrementou o contador por 1;
  6. Chegou ao fim do bloco, agora irá testar novamente a condição de contador !=0;
  7. Verificou que o contador (agora com o valor 2) era diferente de 0;
  8. Imprimiu "2..."
  9. Decrementou o contador por 1;
  10. Chegou ao fim do bloco, agora irá testar novamente a condição de contador !=0;
  11. Verificou que o contador (agora com o valor 1) era diferente de 0;
  12. Imprimiu "1..."
  13. Decrementou o contador por 1;
  14. Chegou ao fim do bloco, agora irá testar novamente a condição de contador !=0;
  15. Verificou que o contador (agora com o valor 0) é igual a 0, logo não satisfaz a condição;
  16. Saiu do loop while"
  17. Imprime 'Boom!!!';


O while tem 2 caracterícas que devem ser ressaltadas:

  • Ele verifica a condição ao entrar no loop;
  • Quando a condição não é satisfeita ele não executa o loop uma última vez;


Esse código abaixo mostra que ele analisa a condição antes de entrar no loop:
Código :
contador = 0
while contador != 0:
    print "%i..."%(contador)
    contador = contador - 1
print 'Boom!!!'
Executando esse código temos a seguinte saída:
Código :
Boom!!!
As condições que podem ser utilizadas dentro do while são todas aquelas que eu já expliquei anteriormente aqui.

Para quem ainda acompanha meus posts deixo alguns exercícios:

  1. Faça um programa que calcule a multiplicação de dois números utilizando apenas o operador de soma. Dica: A multiplicação uma sequência de somas: 3*5 é equivalente a 5+5+5 (três vezes o cinco) ou 3+3+3+3+3 (cinco vezes o três).
  2. Faça um programa que receba vários números e ao receber o número 0 informe quantos números foram informados.


Até mais...

Atualizado 01-09-2010 em 09:13 por Magnun

Categorias
Python , Artigos , Artigos , Cursos , Curso de Python

Comentários

Página 2 de 3 PrimeiroPrimeiro 123 ÚltimoÚltimo
  1. Avatar de Magnun
    Interessante seu projeto, eu fiz algo parecido no meu projeto de graduação. Mas como não sou muito fâ de Web, fiz uma "interface cliente". A interface rodava em Windows e acessava o linux remotamente. Auxiliava a configuração do servidor de hora, criação e deleção de usuários, configuração das interfaces eths, roteamento e do iptables. Integrei ele com o quagga e coloquei também roteamento dinâmico com o RIPv1 e RIPv2. A autenticação remota utilizava o módulo PAM do Linux. Pensei em re-escreve-la para Windows e Linux usando Python e GTK (na época fiz tudo em C), mas acabou que não comecei.

    Basicamente é a sua idéia só que a interface não era Web. Se você começar a mexer com isso de verdade eu posso te ajudar a fazer a "camada de baixo" do programa: que fala com a interface Web e realiza as configurações solicitadas.

    Eu tenho alguns projetos que estão disponíveis na internet, se tiver algum interesse em participar dê uma olhada aqui e aqui.
    Até mais...
  2. Avatar de cleoson
    Olá Magnun,

    Muito interessante sua iniciativa de colocar esse curso de python. Parabéns!
    Estou fazendo as lições, e envio abaixo a minha solução para a primeira questão:

    ===================
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    print 'Multiplicação através da soma\n'
    n1 = input('Digite o primeiro valor: ')
    n2 = input('Digite o segundo valor: ')
    result = 0
    mostra = ' '

    num1 = int(n1)
    num2 = int(n2)

    while num1 != 0:
    result = result + num2
    if num1 != 1:
    mostra = mostra + str(n2) + ' + '
    else:
    mostra = mostra + str(n2)
    num1 = num1 - 1

    print 'Soma:' + str(mostra) + '. O resultado é: '+str(result) + '\n'
    ===================
  3. Avatar de Magnun
    Olá cleoson,

    Mandou muito bem nesse exemplo cara!! Bem vindo ao curso!

    Até a próxima...
  4. Avatar de cleoson
    Olá Magnun,

    Obrigado! E segue a minha proposta de solução para o segundo desafio:

    ====================
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    try:
    contador = 0
    print 'Este programa "conta" quanto números você digita. Para sair, digite 0 (zero).'
    num = int(input('Digite um número: '))

    while num != 0:
    contador = contador + 1
    num = int(input('Digite mais um número: '))

    print 'Você digitou %(contador)s número(s).'%locals()

    except:
    print 'Você digitou algo diferente de um número!!\nAté agora vocâ havia digitado %(contador)s número(s).'%locals()
    ====================

    Um abraço!
  5. Avatar de Magnun
    Mandou bem de novo cleoson. Dá pra ver que você já tem um certo conhecimento de programação em geral (pela estrutura do programa) e em Python (pelo try... except....). Por enquanto o curso ainda está no conteúdo básico, mas em breve veremos alguns assuntos mais interessantes.

    Até mais...
  6. Avatar de silvanofideles
    Magnun, uma pergunta básica, porque seu código acima não funciona usando a console interativa do linux ??? usando editor de texto funciona.
    obs: uso ubuntu 9.04:
    codigo:
    contador = 3
    while contador != 0:
    print "%i..."%(contador)
    contador = contador - 1
    print 'Boom!!!'
    Atualizado 16-11-2010 em 08:06 por silvanofideles
  7. Avatar de Magnun
    Olá silvanofideles,

    Qual código vc se refere? Teóricamente todos so códigos deveriam funcionar tanto na console interativa quanto sendo executado em um arquivo. Verifique o erro que o Python está acusando. Possivelmente está com uma identação incorreta ao colar no terminal.

    Até mais...
  8. Avatar de silvanofideles
    é Magnum, já tentei por varias vezes mas num tem jeito veja:
    [PHP]>>> contador = 3
    >>> while contador != 0:
    ... print "%i..." %(contador)
    ... contador = contador -1
    ... print "boom!!!"
    File "<stdin>", line 4
    print "boom!!!"
    ^
    SyntaxError: invalid syntax
    [/PHP]

    E aproveito para deixar o exercicio 1 e dizer que o meu sem querer ficou parecido com o do colega alanteixeira, mas nada como uma ajudinha no comando print para o não aparecer a variavel zerada :) .
    [PHP]nr1=int(raw_input('Entre com o nr a ser mutiplicado: '))
    nr2=int(raw_input('Entre com o mutiplicador: '))
    multiplicador = 0
    print "A mutiplicação entre os números",nr1,"e",nr2,
    while nr2 != 0:
    nr2 = nr2 -1
    multiplicador += nr1
    print "=",multiplicador[/PHP]
  9. Avatar de silvanofideles
    e o exercício 2 utilizei a lista[]. Me diz ae é valido ???

    [PHP]valor = "n"
    x = []
    while valor != 0:
    valor = int(raw_input('digite o número que quiser e o "0" para encerrar : '))
    if valor != 0:
    x.append(valor)
    print "A quantidade de numeros inteiros digitados é: ", len(x)[/PHP]

    um abraço...
  10. Avatar de Magnun
    Olá silviofideles,

    tente colocar uma linha em branco antes do print que está dando erro:
    Código :
    >>> contador = 3
    >>> while contador != 0:
    ...     print "%i..." %(contador)
    ...     contador = contador -1
    ... 
    3...
    2...
    1...
    >>> print "boom!!!"
    boom!!!
    >>>
    Por algum motivo a shell do python não gostou do print no mesmo bloco que o while.

    As resoluções são válidas!
    Até mais...
Página 2 de 3 PrimeiroPrimeiro 123 ÚltimoÚltimo

+ Enviar Comentário