Ver Feed RSS

root@blog:/# chmod o+r *

[Curso de Python] Produzindo saídas - parte 2

Avalie este Post de Blog

Antes de prosseguir leia os artigos anteriores aqui



Dando continuidade ao artigo sobre como gerar saídas em Python.

Produzindo saídas



Às vezes utilizar a soma ou a vírgula pode gerar um código muito poluído. Muitas vezes é mais vantajoso formatar as strings por meio do operador %. Com ele é possível passar argumentos e definir o tipo da variável. Vamos ver um exemplo para esclarecer:
Código :
>>> nome = 'Magnun'
>>> idade = 25
>>>
>>> print 'Ola, meu nome é %s' % nome
Ola, meu nome é Magnun
>>> print 'Eu tenho %d anos' % idade
Eu tenho 25 anos
>>>
Podemos notar que utilizei duas notações %s e %d. O %s significa que o ele seria substituído por uma string e o %d significa que ele seria substituido por um número decimal. A princípio isso pode parecer inútil, mas é fundamental quando temos uma saída com várias variáveis. Vamos resumir o exemplo anterior:
Código :
>>> nome = 'Magnun'
>>> idade = 25
>>> print 'Ola, meu nome e %s, eu tenho %d anos.' % (nome, idade)
Ola, meu nome e Magnun, eu tenho 25 anos.
>>>
Existe uma lista de possíveis notações:

  • 'd' e 'i'- Inteiro decimal;
  • 'o' - Valor octal
  • 'u' - Obsoleto, foi substituido pelo 'd'
  • 'x' - Hexadecimal (em minúsculo);
  • 'X' - Hexadecimal (em maiúsculo);
  • 'e' - Ponto flutuante em representação exponencial (em minúsculo);
  • 'E' - Ponto flutuante em representação exponencial (em maiúsculo);
  • 'f' e 'F' - Ponto flutuante em fomrmatação decimal;
  • 'g' - Ponto flutuante. Usa a formatação exponencial minúscula se o expoente for menor que -4 ou menor que a precisão indicada, caso contrário utiliza a formatação de ponto flutuante decimal;
  • 'G' - Ponto flutuante. Usa a formatação exponencial maiúscula se o expoente for menor que -4 ou menor que a precisão indicada, caso contrário utiliza a formatação de ponto flutuante decimal;
  • 'c' - Único caractere (aceita um inteiro ou um string de um único caractere);
  • 'r' - String (converte qualquer objeto usndo repr());
  • 's' - String (converte qualquer objeto usndo str()).


Ok, são muitos. Mas a maioria não será necessária para nós no início. Vamos somente nos ater em %d, %f e %s.

Há também a possibilidade de ao invés de utilizar uma tupla, utilizar um dicionário. Dessa forma podemos substituir os %s por uma 'chave':
Código :
>>> print "Mensagem: %(msg)s" % {'msg': 'Ola Mundo!'}
Mensagem: Ola Mundo!
>>> print "Ola! Me chamo %(nome)s e tenho %(idade)d" % {'nome':'Magnun', 'idade':25}
Ola! Me chamo Magnun e tenho 25
>>>
Uma vantagem desse método é que podemos repetir várias vezes a mesma chave:
Código :
>>> print '%(msg1)s %(msg1)s esse e um teste de %(msg2)s' % {'msg1':"Atencao!", 'msg2':'repeticao'}
Atencao! Atencao! esse e um teste de repeticao
>>>
Outra vantagem é a utilização do nome de variáveis e da função vars():
Código :
>>> ling = "Python"
>>> dif = "facil"
>>> print "Eu estou aprendendo %(ling)s! Ela e muito %(dif)s!\n%(ling)s! %(ling)s! %(ling)s!" % vars()
Eu estou aprendendo Python! Ela e muito facil!
Python! Python! Python!
>>>
Como isso funciona? Simples, a função vars() gera um dicionário com todas as variáveis locais e globais! Façam um teste depois: Crie varias variáveis e chame a função vars().


Amanhã veremos o "inverso do print"! Veremos como produzir uma entrada de dados!
Até mais...

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

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

Comentários

  1. Avatar de ilsahec
    presente
  2. Avatar de Magnun
    Hehe... Por um momento achei que ninguém mais estava lendo esses posts
  3. Avatar de fabiocs
    obrigado, por mais esta..
  4. Avatar de nennogabriel
    atrasado mais presente... tenho aprendido bastante... Magnum voce disse que poderia pedir sua ajuda pra um projeto... bom eu comecei um agora... mas vou deixar pra perguntar quando terminar de ler todas as aulas de python aqui... eu to tentando entender a biblioteca re ... algumas funções sao fáceis.. mas quando eu pego um site com mechanize e converto pra str, o retorno é estranho... parece que o str é continuo... mas se fizer um print variavel... ele faz a saida do site corretamente... em texto puro... bom.... se nao resover minha duvida lendo... logo mais te pergunto..
  5. Avatar de Magnun
    nennogabriel,

    nesse curso ainda não abordei a biblioteca re. Se quiser postar sua dúvida no fórum de Python daqui da under colocando mais detalhes como exemplos de execução, posso tentar te ajudar.

    Até mais...
  6. Avatar de fabraga
    E agora em 2011, já abordou essa biblioteca? Sei que falta pra mim, mas estou indo rápido e já já devo chegar lá. =)

+ Enviar Comentário