Planeta PythonBrasil

May 14, 2012

Henrique Bastos

Comunidade não é fim, é meio.

Mais um episódio envolvendo o Linus e um de seus projetos no Github aconteceu na última sexta-feira. Como era de se esperar um monte de gente participou criando uma thread no mínimo esquizofrênica. Muitos assuntos acabaram misturados, mas eu quero tratar de um especificamente: comunidade.

As reações já eram muitas e de início li as primeiras 5 mensagens da thread e me espantei com o fato de, apesar de toda a comoção, ninguém criticou o @jaseemabid. Mesmo após o Linus ter respondido o autor do pull request, ele sugeriu que “deixasse passar essa” por considerar um patch simples, afinal o cara estava colaborando. A afirmação paternalista foi desrespeitosa, apesar de provavelmente não ter sido maliciosa.

O Linus respondeu, e foi este o estopim para vários comentários que em essência são “pró-comunidade” e “contra o mau exemplo de liderança do Linus”.

Tenho a impressão que há uma tendência à inversão entre meio e fim quando o assunto é comunidade, contribuição e colaboração. Os discursos retratam a comunidade como o fim maior, enquanto comunidade é na verdade o meio mais rico para o florescimento de iniciativas livres e distribuídas. A comunidade é uma rede social e em si é ela só potencial. IMHO, a força que realmente vence a inércia é o fazer de cada um. Fazer por si mesmo. Não com um senso de individualismo ou egoísmo, mas fazer porque você deseja, gosta, acredita que deve. Não para um “bem maior” ou “bem comum”.

Essa confusão é natural e já aconteceu no #Horaextra do Rio, por exemplo. O encontro estava crescendo e sustentando o crescimento com a participação de cada vez mais gente interessante. Em certo momento surgiu uma preocupação com “não deixar aquilo morrer”, afinal estava tão bom! Por que não persistir e escalar? Com isso, iniciou-se uma discussão estranha que em essência, levava à uma institucionalização do #Horaextra. Discutimos muito e aprendemos que para o #Horaextra não morrer bastava que uma pessoa continuasse comparecendo. A continuidade só dependia do desejo individual de cada um. Felizmente concluímos que o #Horaextra é só um chopp e nada mais. Se morresse, seria porque as pessoas desejavam fazer outra coisa em vez de ir para aquele encontro e isso é ótimo.

Esse entendimento foi determinante para que outras iniciativas pudessem se inspirar naquele exemplo. No entanto, cada uma seguiria tocando seu barco independentemente, segundo os desejos individuais dos que empreendessem a nova iniciativa.

Um belo fruto disso foi o #HoraextraBH. É uma iniciativa fantástica com uma identidade toda própria, com a qual também me identifico muito. Tanto que já até cometi o equívoco de propor uma fusão entre as listas de discussões do Rio e de BH, o que não faz sentido algum. São duas iniciativas independentes e quem se identificar com ambas, basta se inscrever nas duas listas e interagir com a turma.

Mas para que eu falei tudo isso? Bom, uma coisa que admiro no Linus é que ele tem uma capacidade incrível de imaginar algo e transformar a sua realidade pautado em sua imaginação. Querer é o suficiente para ele se lançar em uma iniciativa, mesmo que não dê em nada. E o cara faz isso há mais de 20 anos.

O fato dele ter conduzido algumas iniciativas de forma pública e aberta ajudou todo um movimento a emergir entorno do Linux e tudo o mais. Mas é fundamental ter em mente que cada iniciativa emergiu por desejo de outros indivíduos que não ele. Isso é importante, pois ele não é e nem parece querer ser lider de ninguém. E isso choca as pessoas! Afinal, florestas inteiras são consumidas para propagandear estratégias coercitivas travestidas de “liderança” nas páginas da Você S.A. e similares.

Acho que isso é um ponto relevante que parece passar despercebido. A maioria das pessoas esperam dele o comportamento de um líder, rei, herói, pai, salvador. Mas o cara só segue seu desejo e pronto. Ele interage com um monte de gente? Sim, mas nos termos dele, e com aqueles cujos valores estão alinhados com os dele. Ouso dizer sinceramente, que ele parece tratar o Linux como “só um chopp”.

Qualquer um pode “tomar um chopp” com ele. As instruções são vastas. Mas se ele já disse explícitamente que não aceita pull requests pelo Github, porque as pessoas insistem? É direito dele trabalhar como deseja e se o outro discorda, é direito do outro se negar a contribuir. Normal. Não gostou? Faz um fork do projeto e sustenta seu fork! Simples, mas exige uma alta capacidade agir pelo seu desejo.

No entanto, quando acontecem esses episódios, rapidamente surgem os discursos “paz e amor”. Discursos furados, até meio socialistas, de igualdade e esforço em prol de um bem comum materializado em código. Discursos falsos sobre comunidade, pois uma comunidade que não respeita a liberdade do indivíduo não é comunidade. É outra coisa, é massa, público, platéia, audiência. É um passo para a conversa de “bem comum”, “bem maior” e a história está repleta de péssimos exemplos que aconteceram por um bem maior.

[]‘s, HB!

por Henrique Bastos em 14 de May de 2012 às 16:58

May 08, 2012

Elcio Luiz Ferreira

Extraindo o áudio MP3 de um vídeo com ffmpeg

Gosto bastante de alguns videopodcasts, como o Roda e Avisa e o Man in the Arena. Mas o tempo que tenho para ouví-los é quando estou dirigindo. Nesse momento, o fato de serem em vídeo não significam nada. Tê-los em MP3 é muito mais prático para mim, que assim consigo ouví-los no som do carro.

Para baixar os vídeos tenho usado o Easy YouTube Video Downloader. Meu próximo projeto pessoal é automatizar isso de alguma maneira, quem sabe com Miro.

Depois, para extrair apenas o áudio, em MP3, faço:

ffmpeg -i entrada_video.mp4 -vn saida_audio.mp3

Simples e rápido. E fácil de automatizar.


por elcio em 08 de May de 2012 às 12:45

May 07, 2012

Thiago Avelino

Vagas de Python para trabalhar remoto

A duas semana eu escrevi um blogpost sobre “Trabalhar para empresa de fora do Brasil” e realmente vale muito apena, como a demando do projeto aumentou consideravelmente estamos precisando de desenvolvedores para entrar no time. Nosso time é responsável por desenvolver algumas ferramentas de SEO.

Conhecimento necessario:

  • Dominio do idioma inglês;
  • Python;
  • Django (Caso conheça outro frameworks é importante).

Itens importante:

  • Tradução de projeto open source;
  • Foco (Como o trabalho é remoto, temos que sempre ter foco no que estamos fazendo);
  • Conhecimento em arquitetura de software;
  • Contribuido com projeto open source (Ideal que tenho o repositorio aberto);
  • Ótimo conhecimento em desenvolvimento ágil;

Estamos procurando por pessoas criativas, que gostem de inovação, de pesquisar e identificar novas tendências e de encarar desafios complexos com agilidade e velocidade.

Se você se encaixa neste perfil, envie seu curriculo em inglês para mim (thiagoavelinoster AT gmail.com) com uma lista dos últimos 5 livros técnicos que você leu, Github, Twitter, LinkedIn e o que você quiser compartilhar.


por Avelino em 07 de May de 2012 às 19:46

May 03, 2012

Elcio Luiz Ferreira

May 02, 2012

PUG - PE

Nossa arena de programação

Olá pessoal,

Neste último sábado (28.04.2012) realizamos o nosso I Hackday, um sub-evento do Summer of Code do Grupo de Usuários de Python de Pernambuco (PUG-PE). Contamos com a presença de uma boa galera, em especial do CRC (Centro de Reciclagem) do Marista.

A experiência foi bem legal em especial pela troca de conhecimento gerada lá em diversas áreas: I.A, empreendorismo, Python, hardware, robótica, etc.

Para quem não foi perdeu uma boa oportunidade de programar e trocar idéias com uma galera legal.

Abaixo algumas fotoso do nosso evento:

Galera do CRC marcando presença na ára de robótica livre!

Galera do CRC marcando presença na ára de robótica livre!

Toda galera reunida no I Hackday

Toda galera reunida no I Hackday

Quem programou também ganhou brindes!

Quem programou também ganhou brindes!

Nossa arena de programação

Nossa arena de programação

Mais fotos podem ser vistas neste link.

Em breve teremos mais informações sobre o tão esperado XX Encontro do   PUG-PE!
Atenciosamente,

Marcel


por marcelcaraciolo em 02 de May de 2012 às 03:26

Elcio Luiz Ferreira

Lendo os logs do nginx com pipes e PHP

Um amigo me perguntou hoje sobre soluções NoSQL. Na conversa que se seguiu, descobri o que ele precisava fazer: precisa publicar um servidor cujas URLs vão simplesmente fazer um redirect para outro site, mas devem guardar as informações do redirect para enviar para o Clicky. É claro que os dados devem ser enviados ao Clicky o mais rápido possível, para que as estatísticas sejam atualizadas e o cliente do meu amigo possa acompanhar as estatísticas em tempo real. Mas o mais importante é que o redirect seja feito rapidamente, e que o serviço aguente tráfego massivo.

Meu amigo pensava em usar nginx com PHP e uma solução de NoSQL. Eu expliquei a ele que era uma ideia mais complicada do que precisava. O ideal, nessa situação, é dividir os problemas. O nginx poderia sozinho cuidar dos redirects, sem PHP, com uma performance impressionante. E ele poderia em seguida fazer algo que lesse o log do próprio nginx e enviasse os dados dados ao Clicky.

Meu amigo programa bem em PHP, então vamos fazer oq ue pudermos nessa linguagem. Veja um exemplo simples de como isso funcionaria: podemos criar um shell script simples que vai simplesmente executar um tail -f no log do nginx e redirecionar a saída para um script PHP.

O comando tail -f é muito interessante. Deixe uma janela de terminal aberta em seu Linux com:

tail -f /var/log/syslog

Você vai ver que o tail, com -f, imprime o final do arquivo mas não sai. Ele fica monitorando o arquivo e quando novas linhas são acrescentadas, ele as envia para a saída padrão (nesse caso, a tela.)

Então nosso shell script, chamado monitor.sh, terá o seguinte conteúdo (troque o caminho do arquivo de log pelo caminho onde ele fica em seu sistema):

tail -f /var/log/nginx/access.log | php monitor.php

Isso vai manter o script rodando, enviando cada nova linha no log para o monitor.php. Cada vez que o nginx processa uma requisição ele envia nova linha para esse arquivo. O monitor.php pode ter algo assim:

<?
$stdin = fopen('php://stdin', 'r');

while($l=trim(fgets($stdin))){
  // Aqui $l contém uma linha do log do nginx.
  // Faça o que quiser com isso. Como exemplo
  // vou só tratar os dados e imprimir.
  $l=split(';',preg_replace('/( |\t)+/',';',$l));
  $l[3]=substr($l[3],1);
  $l[5]=substr($l[5],1);
  if($l[5]=='GET' or $l[5]=='POST')
    echo "$l[0] $l[3] $l[5] $l[6]\n";
}

Por fim, falta deixar isso rodando. O jeito mais simples é deixar uma sessão de screen aberta com o comando. Basta rodar o comando screen, executar o monitor.sh no shell que vai se abrir e sair com CTRL+D. Claro que há jeitos melhores de deixar isso rodando. O ideal é transformar esse script num daemon. Mas a solução com screen é suficiente para iniciar no assunto.

JABÁ: para entender melhor os detalhes e aprender mais truques como esse, vá ao Workshop de Linux para Desenvolvedores.


por elcio em 02 de May de 2012 às 00:52

April 26, 2012

Elcio Luiz Ferreira

Site Recomendado: TidBits

A recomendação desse mês é o TidBits. O Danilo tem feito interessantíssimos experimentos com HTML5 e CSS3, sempre postando o código e explicando. Além disso, tem dicas, notícias e outros assuntos interessantes, principalmente para quem trabalha com front-end.


por elcio em 26 de April de 2012 às 20:56

April 24, 2012

Linil

CairoPlot 1.1

CairoPlot is on GitHub!

CairoPlot now has a Mailing List! For more information, refer to: this post.

v1.1 is out!!

CairoPlot is an API written in Python and uses PyCairo to plot 6 kinds of graphics.
Lots of changes happened since last post, CairoPlot now has a Logo, it’s not just me anymore, we have an all new repository and lots of new functions and options. Read the rest of the post to see all the changes.

LOGO

As you all must’ve seen on the beginning of this text, CairoPlot now has a logo! Actually I did two but I ended up choosing this one. What do you guys think?

CONTRIBUTOR

It’s not just me anymore! I’m happy to say that this release had GREAT help from João S. O. Bueno. It was his idea to change the code into object oriented style which turned out to be a great option for the project.

NEW REPOSITORY

I’d like to apologize to everyone who’s been using v1.0 since June. Many changes happened and no one even knew they were there. By the time the repositories where changed, João had just started helping the project and lots of things were incomplete. After that, one change lead to the other and the only stable release came out now. Again, I’m sorry but I believe you all will be pleased by the changes.
To visit the new repository, just hit CairoPlot Launchpad.

HOW TO DOWNLOAD

CairoPlot is on GitHub!

HOW TO HELP

I believe CairoPlot can grow a lot more, so if you think you can help, please contact me at alf.rodrigo@gmail.com.

NEWS

Now for the exciting ChangeLog.
All the old functions are still supported with some little but important changes.

overall changes

Every chart now has an associated class and a function.
The functions where kept to maintain backward compatibility and allow for easy use of the api.
The classes, however, provide much more customization as access to the cairo context or its surface.
All functions still have the background parameter, but now it supports colors (in tuple form, red = (255, 0, 0)) and Cairo Linear Gradients. The None option is still present and will generate the gray to white gradient of the previous version.

more output options

CairoPlot now outputs images on the following formats: pdf, ps, png and svg thanks to João.

dot_line_plot

Dot Line Plot kept most of its functions but got a little more customizable.

dot_line_plot (name,
               data,
               width,
               height,
               background = None,
               border = 0,
               axis = False,
               grid = False,
               dots = False,
               h_labels = None,
               v_labels = None,
               h_bounds = None,
               v_bounds = None)

dots – new parameter added to determine whether or not the dots are needed;
h_legend and v_legend – got renamed to h_labels and v_labels;
Note: As this function’s been present since the last version, please refer to the latest post for more detailed information.

pie_plot

The old Pizza Plot got renamed and revamped into the all new Pie Plot

pie_plot(name,
           data,
           width,
           height,
           background = None,
           gradient = False,
           shadows = False,
           colors = None)

gradient – Whether or not the slices are painted with gradient colors;
shadows – Now, it’s possible to draw a shadow behind the pie;
colors – And the user can pass a pre-selected list of colors for the slices;
Note: As this function’s been present since the last version, please refer to the latest post for more detailed information.

gantt_chart

No cosmetic changes on this one, but as the rest of the api, it got refactored on OO and the overall changes also apply.

gantt_chart(name,
            pieces,
            width,
            height,
            h_labels,
            v_labels,
            colors)

h_legend and v_legend – got renamed to h_labels and v_labels;
Note: As this function’s been present since the last version, please refer to the latest post for more detailed information.

donut_plot

Used to plot donut graphics.

donu_plot(name,
                data,
                width,
                height,
                background = None,
                gradient = False,
                shadows = False,
                colors = None,
                inner_radius = -1)

name – Name of the desired output file;
data – The list, list of lists or dictionary holding the data to be plotted;
width, height – Dimensions of the output image;
background – A 3 element tuple representing the rgb color expected for the background or a new cairo linear gradient. If left None, a gray to white gradient will be generated;
gradient – Whether or not the slices are painted with gradient colors;
shadows – It’s possible to draw a shadow behind the donut;
colors – Pre-selected list of colors for the slices;
inner_radius – The radius of the donut’s inner circle;

Example of use:

teste_data = {"carl" : 123, "fawn" : 489, "susan" : 890 , "lavon" : 235}
CairoPlot.donut_plot("donut_teste.png", teste_data, 500, 500)

Result:

function_plot

Used to plot function graphics.

function_plot (name,
                    data,
                    width,
                    height,
                    background = None,
                    border = 0,
                    axis = False,
                    grid = False,
                    dots = False,
                    h_labels = None,
                    v_labels = None,
                    h_bounds = None,
                    v_bounds = None,
                    step = 1,
                    discrete = False)

name – Name of the desired output file.;
data – The function to be plotted;
width, height – Dimensions of the output image;
background – A 3 element tuple representing the rgb color expected for the background or a new cairo linear gradient. If left None, a gray to white gradient will be generated;
border – Distance in pixels of a square border into which the graphics will be drawn;
axis – Whether or not the axis are to be drawn;
grid – Whether or not the grids is to be drawn;
dots – new parameter added to determine whether or not the dots are needed;
h_labels, v_labels – lists of strings containing the horizontal and vertical labels for the axis;
h_bounds, v_bounds – tuples containing the lower and upper value bounds for the data to be plotted;
step – the horizontal distance from one point to the other. The smaller, the smoother the curve will be;
discrete – whether or not the function should be plotted in discrete format.

Example of use:

data = lambda x : x**2
CairoPlot.function_plot('function_teste.png', data, 400, 300, grid = True, h_bounds=(-10,10), step = 0.1)

Result:

bar_plot

Used to plot bar graphics.

bar_plot (name,
              data,
              width,
              height,
              background = None,
              border = 0,
              axis = False,
              grid = False,
              dots = False,
              h_labels = None,
              v_labels = None,
              h_bounds = None,
              v_bounds = None,
              step = 1,
              discrete = False)

name – Name of the desired output file.;
data – The function to be plotted;
width, height – Dimensions of the output image;
background – A 3 element tuple representing the rgb color expected for the background or a new cairo linear gradient. If left None, a gray to white gradient will be generated;
border – Distance in pixels of a square border into which the graphics will be drawn;
grid – Whether or not the grids is to be drawn;
rounded_corners – Whether or not the bars should have rounded corners;
three_dimension – Whether or not the bars should be drawn in pseudo 3D;
h_labels, v_labels – lists of strings containing the horizontal and vertical labels for the axis;
h_bounds, v_bounds – tuples containing the lower and upper value bounds for the data to be plotted;
colors – List containing the colors expected for each of the bars.

Examples of use:

data = [3,1,10,2]
CairoPlot.bar_plot ('bar_teste.png', data, 400, 300, border = 20, grid = True, rounded_corners = True)

Result:

REMEMBER!

CairoPlot is on GitHub!

So, I hope you liked it. It’s been a while I’ve been trying to finish this release and I’m very proud of what it has become. Don’t forget to download and test it. In case any bugs surface or if you have any questions or suggestion, don’t be afraid to use the bug tracker or the answers options on the site CairoPlot Launchpad.

Thanks for the interest.


por Rodrigo Araujo em 24 de April de 2012 às 03:31

April 20, 2012

Thiago Avelino

Trabalhar para empresa de fora do Brasil

Londres é a capital e a maior e mais importante cidade da Inglaterra e do Reino Unido.O tema é muito abrangente mas vou focar justamente para a área tecnologia onde temos a possibilidade de trabalhar remoto (vulgo home office, que é um outro tema que gera muita polemica).

Hoje fecha um total de 3 dias trabalhando na empresa Mochii (Realmente achei o site da empresa muito nerd e extremamente diferente, esse e outros motivo me fez trabalhar com eles) e durante esses três dias tive uma ótima experiencia para compartilhar.

Primeiro que o dono da empresa é muito acessível, sem essa frescura de hierarquia (Não que eu ache totalmente hierarquia desnecessário, mas em alguns caso ao meu ver não precisaria de tanta burocracia).

Segundo que o time de desenvolvimento de lá é 100% aberto a ideias e a criticas (logicamente que criticas construtivas e que saiba conversa sobre o porque não concorda com determinada parte do código), muito diferente de alguns desenvolvedores no Brasil (Sei que tem em outros lugares do mundo mas como trabalhei muito tempo no Brasil estou usando como referencia) que se apega com código desenvolvido.

Uma coisa que realmente me deixou muito surpreso foi em relação a cobrança de como esta indo a tarefa que eu (Thiago Avelino) assumi, o dono da empresa chegou para mim e falou que eu deveria conversa com um funcionario que saberia explicar melhor sobre o porque esta usando a tecnologia X, Y e Z, depois do lider do desenvolvimento me explicado foi atribuido uma tarefa e não fui cobrado nem uma vez sobre a tarefa, realmente isso é muito diferente aqui no Brasil, principalmente quando um desenvolvedor novo entra em um time, geralmente tem sempre um cara no time que fica pergunta “e ai esta entendendo?“, ao meu ver isso tem o seu lado bom e consequentemente o seu lado ruim.
O lado bom é que tem a interação do time com o novo desenvolvedor, mais isso acaba ficando chato pois se o novo desenvolvedor não esta entendo ele vai ficar com vergonha (ou alguma coisa do genero) de se expressa falando que não esta entendo alguma parte do fluxo do projeto ou mesmo código.

Poderia falar mais 1001 experiência que tive essa semana, mas vou ir gerando blog post com os passar das semanas, assim posso ir aprofundando cada dia mais da experiência vivida.

Realmente vale apena trabalhar para uma empresa de fora do Brasil.


por Avelino em 20 de April de 2012 às 22:13

Eventos da APyB

World Plone Day Brasília

Início Fim Tema Palestrante Instituição
9h 9h15 Abertura Haroldo Tajra e Ricardo Ramos  Interlegis
9h30 10h10 O Estado do Plone André Nogueira  Plone Foundation
10h10 10h50 Editor Visual da Home do Portal da Câmara dos Deputados Fábio Surrage de Medeiros  Câmara dos Deputados
10h50 11h20 7 da noite em Brasília - O Plone gerenciando a redação multimídia da EBC Serviços Luis Flávio Loreto da Rocha  EBC
11h20 12h Programando Plone para o Governo Rodrigo Castardo  Liberiun
12h 14h Almoço
14h 14h50 Aceleradores HTTP e Cluster Zeo Roberto Geraldo Pimenta Ribeiro Júnior  Senado Federal
14h50 15h20 Plone no Interlegis: muito além do portal Jean Ferri  Interlegis
15h20 16h20 Debate: Compartilhamento de códigos no Governo Corinto Meffe, Djalma Valois, Marcos Mazoni, Paulo Maia  MPOG ITI Serpro Caixa Federal
16h20 16h40 Intervalo - coffee break
16h50 17h30 Novo portal de notícias da Agência Senado Glebson Moura da Silva  Senado Federal
17h30 18h Intranet Caixa Pablo Nogueira  Caixa Federal
18h 18h15 Simplificando o Plone André Nogueira  Simples Consultoria

por Érico Andrei em 20 de April de 2012 às 18:37

World Plone Day by GruPy-SP

Encontro do GruPy-SP em associação com o Word Plone Day.

Como parte do World Plone Day, JS e Érico Andrei vão apresentar o Plone para 
o GruPy-SP.

É uma apresentação voltada para o público técnico que abordará:

  • Onde não usar Plone
  • Onde usar Plone
  • Como integrar Plone com ____ (preencha com seu framework favorito)
  • Oportunidades para desenvolvedores Python

por Érico Andrei em 20 de April de 2012 às 18:31

April 19, 2012

PUG - PE

Image

Olá pessoal,

Estamos divulgando o terceiro evento do PUG-PE o HackyDay do Summer-of-Code. A idéia é juntar uma galera que queira aprender a programar, que queira desenvolver ou até trocar idéias com o pessoal no local em variados projetos open-source. Muita programação, comida e até brindes serão distribuídos durante todo o evento.

Image

Como participar ? É simples basta comparecer no dia e trazer muita vontade de programar! :D

Se tiver interesse já pode ir lá na própria página do evento e selecionar os projetos ou lançar algum novo projeto que queira codificar. Simples, assim!

O evento será no Instituto Federal de Pernambuco, IFPE  dia 28/04 (Abril) Sábado-  a partir das 08:00.

Evento é gratuito! Compareçam e venham conhecer Python ou por suas idéias em ação com o pessoal rochedo que já sabe Python!  Quem sabe não saem futuras startups deste encontro ?

Mais informações no site:  http://soc.pug.pe/

Compareçam!

Atenciosamente,

Equipe PUG-PE


por marcelcaraciolo em 19 de April de 2012 às 18:44

April 15, 2012

Elcio Luiz Ferreira

HTTP API WordPress

Você está desenvolvendo um plugin ou tema para WordPress e precisa fazer uma conexão HTTP? Não use fopen, curl, file_get_contents, etc. Use a HTTP API do WordPress.

A HTTP API é simples de usar, muito bem implementada e tem excelente performance.  E se um dia você precisar hospedar seu site num servidor debaixo de um proxy, não vai precisar reescrever seu código. Ao configurar o proxy no wp-config.php, tudo vai funcionar.

Veja um exemplo do uso da HTTP API:

$content=wp_remote_retrieve_body(
           wp_remote_get('http://visie.com.br/'));


por elcio em 15 de April de 2012 às 14:21

April 10, 2012

Thiago Avelino

Node.js onde usar?

Ultimamente estou estudando bastante Javascript para colocar algumas aplicações em Node.js no ar, ate que tive a minha primeira necessidade real de usar Nodejs.

Na Nodegrid tivemos a necessidade fazer grande processamento assíncrono, temos um servidor de cache que foi desenvolvimento por necessidade de armazenamento e controle do que esta em cache e tempo para expirar o mesmo, poderia ser usado memcache mas a Nodegrid esta fazendo um serviço de hosting de memcache, com isso teríamos o problema de concorrência de nome dentro do banco chave e valor (Memcache).

No case que tenho com a Nodegrid na solução de cache (Djazz.cache) começamos a desenvolver usando ‘C’, funcionou muito bem, mas com o passar do tempo a manutenção do software começou ficar trabalhosa. Eu tenho experiencias com software grande em C (Kernel BSD) e mesmo assim a manutenção de um software não é nada confortável. Migrei para Python com Twisted, mais infelizmente o códigos usando Twisted não fica muito agradável ou seja não é Pythônico então olhei para o projeto Node.js que tem a característica simples e facil de trabalhar com processamento assíncrono.

Recomendo olhar o trabalho que os commiters do Node.js estão fazendo, tem muitas ideias ótimas e outra que precisa ser melhoradas.

Vejo a Node.js como uma solução ótima e simples para trabalhar com conexões assíncrono, ainda hoje não vejo o Node.js substituindo uma linguagem que já esta a anos rodando em backend como Python, Ruby, Java e etc. Ao meu ver o Node.js vai crescer ainda mais o seu uso nas necessidades específica (assíncronas), pela simplicidade de implementação e fácil manutenção.

Link o slide da palestra “Node.js em produção


por Avelino em 10 de April de 2012 às 04:13

April 09, 2012

PowerPython

powerpython

Olá Programadores!!

Hoje vamos começar a aprender os exercícios de repetição, da lista original Python

O Primeiríssimo exercício diz assim: 
Faça um programa que peça uma nota, entre zero e dez. Mostre uma mensagem caso o valor seja inválido e continue pedindo até que o usuário informe um valor válido.

O Programa:

numero = input("digite um numero de 0 a 10 ---> ")
while 0 > numero or 10 < numero:
    numero = input("digite um numero de 0 a 10 ---> ")

Saída:

digite um numero de 0 a 10 —> 12
digite um numero de 0 a 10 —> 15     – Obs: Ele pede mais uma vez o usuário digite
digite um numero de 0 a 10 —> 5       – Depois que o n° é aceito, ele encerra o programa

 

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 09 de April de 2012 às 17:24

Gustavo Niemeyer

The Easter mgo release

It wasn’t just the bunny that was active over the holidays. The r2012.04.08 release of the mgo MongoDB driver for Go has just been tagged. This release is supposed to be entirely compatible with the last release, and there are some nice improvements and a few important bug fixes, so upgrading is recommended.

For the impatient, here is a quick summary of the changes performed:

  • Bug in Limit method fixed
  • Overflow in marshaling of time.Time fixed
  • omitempty support for time.Time fields
  • Better slave selection
  • Hard per-server connection limit
  • Improved performance of query error checking
  • Sort method arguments simplified
  • Added Session.Fsync, FsyncLock, and FsyncUnlock methods
  • Added Query.Snapshot method

If you want more details about any of these, keep reading.

Bug in Limit method fixed

The Limit method was fixed. It was improperly causing the data to be returned in a single chunk from the server, which would mean less documents being processed if the data retrieved went over 4MB. Thanks to Jeff Wendling for reporting the issue.

Overflow in marshaling of time.Time fixed

The marshaling of time.Time was overflowing due to the use of UnixNano, which means certain times would be marshaled as an arbitrarily wrong time. The zero time is an important case that was mishandled, for example. If there’s a chance your application may be affected, you may look for this date in the database to confirm:

1754-08-30 22:43:41.128654848 +0000 UTC

If you find it, that’s actually a zero time.

The problem was fixed and such times will now be marshaled correctly. Thanks to Mikael for reporting the issue on the mgo-users mailing list.

omitempty support for time.Time fields

The omitempty bson tag flag is now supported for time.Time values as well. If used, the time is only marshalled into the bson document if IsZero is false. For example:

type Person struct {
        Birthday time.Time `bson:”,omitempty”`
}

Better slave selection

The slave selection algorithm was changed so that mgo will now pick the server for which it has the least number of connections open at the moment, rather than being a random selection. More improvements in this area will come soon.

Hard per-server connection limit

There’s now a hard limit for the number of concurrent connections to a single server. If that limit is reached, the client will block waiting for connections to be released.

The default limit is currently 4096 connections per server for each mgo client, but this logic will be improved in the near future as well to take into account the number of connections currently available at the server side.

Note that this is a fire protection mechanism. This limit is not supposed to be touched under normal operation. If you have higher needs right now, please get in touch.

The development of this feature was sponsored by Iron.io.

Improved performance of query error checking

The logic that verified query results for errors was on the expensive side for large documents, as pointed out by Nils Hasenbanck in the mailing list. This has been significantly improved.

Sort method arguments simplified

The Sort method now takes a list of field names as arguments rather than a document. Field names may be potentially prefixed by – (minus) to sort in descending order.

For example, what would previously be written as:

query := c.Find(q).Sort(bson.M{“a”: 1, “b”: -1})

Is now written as:

query := c.Find(q).Sort(“a”, “-b”)

The previous format is still supported right now for compatibility reasons, but it is deprecated and will eventually be dropped entirely.

More details at:

http://godoc.labix.org/mgo#Query.Sort

Added Session.Fsync, FsyncLock, and FsyncUnlock methods

The new Session Fsync method requests a synchronous or asynchronous flush of in-memory changes to disk, while the FsyncLock and FsyncUnlock methods do the opposite: they handle a lock at the server side that blocks any follow up write requests (and read requests too, see the documentation). This is useful, for example, to perform backups reliably.

See the documentation of these methods for more details:

http://godoc.labix.org/mgo#Session.Fsync
http://godoc.labix.org/mgo#Session.FsyncLock
http://godoc.labix.org/mgo#Session.FsyncUnlock

Added Query.Snapshot method

The new helper method wraps the snapshot command. More details in the documentation:

http://godoc.labix.org/mgo#Query.Snapshot

por niemeyer em 09 de April de 2012 às 02:31

April 05, 2012

Henrique Bastos

Um podcast do Castalio!

Existem muitos podcasts disponíveis na rede. Os assuntos são dos mais variados e dependendo do que você está interessado em um dado momento, provavelmente sua playlist vai mudar bastante com o tempo.

Além do conteúdo em si, o que sempre me interessou nos podcasts são as motivações que levam cada autor a se dedicar à empreitada. Este sempre foi o critério importante nas minhas preferências.

Há tempos atrás, o Rafael Lima decidiu converter seu tempo perdido no trânsito no podcast Voltando pra Casa. Sua motivação era extremamente simples e por isso o projeto era sensacional. A cada dia, ele simplesmente refletia em voz alta sobre o assunto que mais se destacou em sua mente agitada. Acompanhei cada episódio e ainda espero o Rafa abandonar a desculpa de que está trabalhando de mais para retomar o projeto. ;-)

Com um viés mais técnico, o Rafael Rosa Fu e o Carlos Brando criaram o Grokpodcast. Novamente, uma motivação simples regeu o desenvolvimento de um show fantástico: alimentar suas insaciáveis curiosidades. Cada episódio é uma verdadeira investigação por um tópico de interesse da dupla. Simples assim. Isso rendeu e ainda rende grandes horas de diversão e aprendizado para os ouvintes.

Recentemente, conheci o Og Maciel e seu Castalio Podcast. Ele me contactou querendo falar sobre Python e Django entre outros assuntos. Aceitei prontamente e fui explorar os episódios anteriores para conhecer melhor o seu projeto. Comecei ouvindo o bate-papo com o saudoso Gabriel Falcão, nosso Lenny Kravitz brasileiro, e simplesmente não consegui mais parar.

Quando iniciamos nossa conversa, fui logo perguntar qual era seu objetivo com o podcast. A resposta não podia ter sido mais clara: “Faço o podcast para conhecer melhor as pessoas que acompanho pela comunidade”. Uma motivação extremamente simples e intrínsica ao autor. Totalmente excelente!

A moral da história vale a reflexão. Todos os 3 podcasts são iniciativas despretenciosas, motivadas pelo desejo de quem se propõe o desafio. Tenho para mim, que este tipo de relação despretenciosa entre o empreendedor e o empreendimento contribui enormemente para sua evolução orgânica. Isso elimina a “mania de grandeza” e o “paradoxo do ovo ou a galinha”, onde a decisão de fazer um podcast pode alimentar hipóteses não validadas que inviabilizam o projeto. Coisas como “preciso me tornar um engenheiro de som”, ou “tenho que comprar um microfone próprio antes de começar”.

Neste artigo, podcast é apenas um exemplo. Mude o nome ou o tipo do projeto, mas recado continua simples e direto: “Faça! – o mais simples possível, apenas o essencial para ir adiante.”

[]‘s, HB!

por Henrique Bastos em 05 de April de 2012 às 21:43

PowerPython

powerpython

Olá Programadores !

Hoje vamos fazer um peça três idades dos aluno de, e em seguida calcule a media de idade dos alunos, e classifique a sala como jovem criança, etc

O Programa:

idade1 = input("\ndigite a idade do aluno ---> ")
idade2 = input("digite a idade do aluno ---> ")
idade3 = input("digite a idade do aluno ---> ")
media = (idade1 + idade2 + idade3)/3

print("\n")

if media > 40:
    print("Turma idosa")
if  25 < media

Saída:

digite a idade do aluno —> 35
digite a idade do aluno —> 22
digite a idade do aluno —> 40
turma adulta
media da turma = 32 anos

>>>

>>>

digite a idade do aluno —> 15
digite a idade do aluno —> 13
digite a idade do aluno —> 14
turma jovem
media da turma = 14 anos

>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 05 de April de 2012 às 16:27

Elcio Luiz Ferreira

Site da Visie tem menos de 6% de visitantes com IE

O total de IE 6 e 7, somados, representa 0,5% do total de visitantes.


por elcio em 05 de April de 2012 às 14:47

April 04, 2012

Elcio Luiz Ferreira

April 02, 2012

PowerPython

powerpython

Olá Programadores!!

Hoje e agora, vou mostrar uma segunda solução do exercício 19 da estrutura de decisão, o ultimo post, postado via comentário pelo Bruce Wayne, segue o link: http://hastebin.com/jocucusane.py

def plural(u, n):
  return {
    'unidade': 'unidades',
    'milhar': 'milhares',
    'centena': 'centenas',
    'dezena': 'dezenas'
  }[u] if n > 1 else u

def extenso(n):
  unidades = ['milhar', 'centena', 'dezena', 'unidade']
  maior_unidade = 1000

  saida = []

  while n > 0:
    for unidade in unidades:
      if n >= maior_unidade:
        u = n / maior_unidade
        saida.append('%d %s' % (u, plural(unidade, u)))
        n %= maior_unidade
      maior_unidade /= 10

  if not saida:
    return 'Zero'
  if len(saida) == 1:
    return saida[0]
  if len(saida) == 2:
    return ' e '.join(saida)
  return ', '.join(saida[:-1]) + ' e ' + saida[-1]

if __name__ == '__main__':
  testes = '326 300 100 320 310 305 301 101 311 111 25 20 10 21 11 1 7 16 0'
  for teste in testes.split():
    print teste, '=', extenso(int(teste))

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 02 de April de 2012 às 21:34

powerpython

Olá Programadores!

seguida mostre a quantidade de unidades, centenas, etc

O 19° exercício diz assim:
Faça um Programa que leia um número inteiro menor que 1000 e imprima a quantidade de centenas, dezenas e unidades do mesmo.

  • Observando os termos no plural a colocação do “e”, da vírgula entre outros.Exemplo:
  • 326 = 3 centenas, 2 dezenas e 6 unidades
  • 12 = 1 dezena e 2 unidadesTestar com: 326, 300, 100, 320, 310,305, 301, 101, 311, 111, 25, 20, 10, 21, 11, 1, 7 e 16 

O Programa:

numero = input("digite um numero menor que 1000 ---> ")
numeroStr = str(numero)
qtNumero = len(numeroStr)

if qtNumero == 3:
    centena = numeroStr[0:1]
    dezena = numeroStr[1:2]
    unidade = numeroStr[2:3]
    print numeroStr+" = "+centena+" centenas , "+dezena+" dezenas, "+unidade+ " unidades"

if qtNumero == 2:
    dezena = numeroStr[0:1]
    unidade = numeroStr[1:2]
    print numeroStr+" = "+dezena+" dezenas, "+unidade+ " unidades"

if qtNumero == 1:
    unidade = numeroStr[0:1]
    print numeroStr+" = "+unidade+ " unidades"

Saída:

>>>
digite um numero menor que 1000 —> 456
456 = 4 centenas , 5 dezenas, 6 unidades
>>>

>>>
digite um numero menor que 1000 —> 21
21 = 2 dezenas, 1 unidades
>>>

>>>
digite um numero menor que 1000 —> 361
361 = 3 centenas , 6 dezenas, 1 unidades
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 02 de April de 2012 às 16:53

April 01, 2012

Flávio Coelho

Benchmarking NLTK under Pypy

Natural Language Processing (NLP). A marvelous world of possibilities! Fortunately it is also a great example of another domain of application for which Python is wonderfully well equipped. I have been playing with Python and NLP, for a couple of years now, integrating its tools on a reasonably large project. I hope to demo this project really soon, but it is not the topic of this post. The

por Flavio Coelho (noreply@blogger.com) em 01 de April de 2012 às 10:55

March 30, 2012

Elcio Luiz Ferreira

Por que sua estratégia de mobile começa com iOS?

Saiu a notícia hoje: Android ultrapassará Windows e será sistema mais usado do mundo, diz IDC.

Agora veja o gráfico:

Sistemas operacionais mobile navegando na web no Brasil de Fev/2011 a Fev/2012

Apesar disso, continuo recebendo das agências sites para construir que não tem versão mobile ou, quando tem, foi desenhada e deve ser construída para iPhone e iPad.

Cena comum numa reunião entre cliente e agência: todo mundo, de ambos os lados, coloca seu celular sobre a mesa. São todos iPhone. Logo, acho que até inconscientemente, eles deduzem que iPhone é o que importa. Alô pessoal! Vocês estão falando com 8,7% do público! Com um investimento semelhante, mas um pouquinho mais de planejamento, poderiam falar com praticamente todo mundo que está navegando no celular.


por elcio em 30 de March de 2012 às 16:54

March 29, 2012

PowerPython

powerpython

Olá Programadores!!

Hoje vamos continuar aprendendo mais sobre strings em Python,  a parte 3 :D

O Método title()

Esse método é bem lega :D Ele troca todas as primeiras letras da frase de minuscular por maiúsculas. Exemplo:

test = 'eai beleza!!'
test.title()

Saída:
>>’Eai Beleza!!’

O Método swapcase()

Esse método troca as letras da string para maiúsculas. Exemplo:

test = 'eai beleza!!'
test.swapcase()

Saída:
>>’EAI BELEZA!!’

Método .rjust – (Margem da Esquerda)

Esse método deixa um espaço da esquerda, é bem simples. Exemplo:

print 'PowerPython'.rjust(15)

Saída:
 >>’               PowerPython’

Funciona melhor no terminar python :D

Método .ljust – (Margem da direita)

Esse método deixa um espaço da direita. Exemplo:

print 'PowerPython'.ljust(15)

Saída:
 >>’ PowerPython’

Ué ? – Não aconteceu nada? – Aconteceu sim, a margem está sendo aplicada, é só pensar um pouquinho, tem toda lógia :D

Funciona melhor no terminar python 

———————————————————————-

AGUARDEM MAIS AULAS DE STRINGS E PYTHON…

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!

Continue lendo →


por powerpython em 29 de March de 2012 às 17:01

March 27, 2012

Elcio Luiz Ferreira

Site Recomendado: Ubuntu Dicas

A maioria dos blogs sobre Ubuntu ou sobre Linux é escrita por hackers para hackers. O Ubuntu Dicas não. É sobre Ubuntu, e útil para qualquer um que use o sistema, não importa seu nível de conhecimento técnico. São excelentes dicas de programas, dicas de uso do sistema e notícias sobre o Ubuntu.

Recomendo.


por elcio em 27 de March de 2012 às 18:56

PowerPython

powerpython

Olá Programadores

Hoje vamos continuar aprendendo mais sobre strings :D

O Método Split

Esse método separa a strings pelos espaços. Exemplo:

test = 'oi tudo bem?'

test.split()

Saída:
>>['oi', 'tudo', 'bem'] 

Também podemos escolher o ponto a cer separado. Exemplo:

test = 'oi e tchau'
test.split('e')

Saída:
>> [ ' oi ' , 'tchau' ]

Método Upper

Esse método troca as letras minusculas para maiúsculas. Exemplo:

test = 'oi'
test.upper()

Saída:
>>’OI’

Método lower

Esse método faz o contrario do upper. Exemplo

test = 'OI'
test.lower()

Saída:
>> ’oi’

Método lower().capitalize()

Esse método é bem interessante, ele deixa em maiúsculo somente as primeiras letras do alfabeto. Exemplo:

test = 'esse e o poder do python'
test.lower().capitalize()

Saída:
>>’Esse e o poder do python’

———————————————————————-

AGUARDEM MAIS AULAS DE STRINGS E PYTHON…

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 27 de March de 2012 às 16:44

March 26, 2012

PowerPython

powerpython

Olá Programadores!!

Hoje vamos aprender a manipular strings em Python, oque é bem simples e divertido

O comando Len

‘len’ é um dos comandos mais simples, ele nada mais é do que um programa que ‘lê’ a quantidade de caracteres de um string. Exemplo:

test = 'ola programadores'
len(test)

Saída:
>>17

Mais ‘ola programadores’ tem 16 caracteres!!
É simples, ‘len’ também conta os espaços :D

O comando count

count (do inglês contar), nada mais conta o numero de vezes que um determinado carácter se repete em uma string. Exemplo:

test = 'ola programadores'
test.count('o')

Saída:
>>3 

O Comando find

find procura a posição de um determinado carácter na string. Exemplo:

test = 'ola'
test.find('o')

Saída:
>>0 

Opá… 0??
Sim, não começa do 1, mais sim do zero

Um comando parecido com find…

Esse tal comando não tem nome ou eu não sei…
Mais enfim, ele faz o contrario do find, ele mostra o carácter que está em uma determinada posição. Exemplo:

test = 'oi'
test[1]

Saída:
>>’i’

AGUARDEM MAIS AULAS DE STRINGS E PYTHON…

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 26 de March de 2012 às 18:24

Luciano Ramalho

Adeus @luciano, olá @ramalhoorg

Estou abandonando gradualmente minha conta @luciano no Twitter e começando a usar @ramalhoorg. A partir de 27/mar/2012, a conta @luciano vai publicar somente retweets do @ramalhoorg, e avisos periódicos para que as pessoas sigam a nova conta.

Para lembrar, é fácil: meu email pessoal termina com ramalho.org (e o Twitter não aceita ponto no nome).

PORQUE ESTOU MUDANDO O NOME

Parece ótimo ter um nome simples como @luciano no Twitter. O problema é que @luciano é um nome comum, e tem uns lucianos mais famosos do que eu, parece que um até apresenta um programa de auditório, imaginem só.

Muita gente não sabe que no Twitter o espaço em branco é importante. Se você manda um recado para "@luciano bla", o Sr. Bla nunca vai saber, e eu vou receber o recado. Eu recebo centenas de recados de outras pessoas todo dia no Twitter.

E a minha lista de menções é inútil: a maioria das vezes que @luciano aparece no Twitter, eu não sou a pessoa que queriam mencionar. Com isso eu muitas vezes não vejo mensagens que seriam para mim.

Então, meus amigos, por gentileza sigam o @ramalhoorg e esqueçam o @luciano, OK?

por Luciano Ramalho (noreply@blogger.com) em 26 de March de 2012 às 17:14

March 24, 2012

PowerPython

test3

Olá Programadores!!

Com o comentário de Bruce Wayne descobrir um site ÓTIMO para divulgar seus scripts e seus programa gratuitamente na internet, o site chama-se http://hastebin.com/

Usando o hastebin:

Para usa-ló é bem simples, depois de acessa-lo, e só digitar seu programa
Fiz alguns testes e vi que ele suporta varias linguagens programação, inclusive   Python. Veja alguns exemplos, já que programo em varias linguagens:

Python
 

PHP
 

Java

Salvando o seu script

Para salvar é bem simples, é só clicar no disquete no canto direito.
Apos isso, ele nos gerara um link com o programa para você divulgar

Veja o exemplo: http://hastebin.com/ligarayoki.lua

 

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 24 de March de 2012 às 20:52

powerpython

Olá Programadores!!

Olá amigos !!
Hoje recebi  um comentário de Bruce Wayne com uma segunda solução do exercício 18 da estrutura de decisão, talvez mais orientado a objetos . Fiquem com o Programa :

#!/usr/bin/python

def verifica_mes_valido(mes):
    return 1  28) or (bissexto and dia > 29)))

def verifica_meses_31_dias(dia, mes):
    return not (dia > 31 or (mes in (4, 6, 9, 11) and dia > 30))

def data_valida(dia, mes, ano):
    return verifica_mes_valido(mes) and \
        verifica_meses_31_dias(dia, mes) and \
        verifica_fevereiro_bissexto(dia, mes, ano)

if __name__ == '__main__':
    while True:
        data = raw_input("digite uma data com o seguinte formato dd/mm/aaaa ---> ")
        try:
            dia, mes, ano = (int(componente) for componente in data.split('/'))
        except ValueError:
            print("Data invalida: " + data)
            continue
        break

    if data_valida(dia, mes, ano):
        print("data valida")
    else:
        print("data invalida")

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 24 de March de 2012 às 20:18

powerpython

Aula de Hoje

Hoje vamos fazer um programa que peça uma data na forma dd/mm/xxxx, e informe se a data é valida ou invalida.
Atenção: Essa aula teve como base o post http://diego.wikidot.com/

O 18° diz assim:
“Faça um Programa que peça uma data no formato dd/mm/aaaa e determine se a mesma é uma data válida”

O Programa: 

data = raw_input("digite uma data com o seguinte formato dd/mm/aaaa ---> ")
dia = int(data[0:2])
mes = int(data[3:5])
ano = int(data[6:10])

validade = "true"
i = 0
while validade == "true" and i == 0:
    if (ano%4 == 0 and ano%100!= 0) or ano%400 == 0:
        bissexto = "sim"
    else:
        bissexto = "nao"

    if mes < 1 or mes > 12:
        validade = "false"

    if dia > 31 or ((mes == 4 or mes == 6 or mes == 9 or mes == 11) and dia > 30):
        validade = "false"

    if (mes == 2 and bissexto == "nao" and dia > 28) or ( mes == 2 and bissexto == "sim" and dia > 29):
        validade = "false"
    i = i + 1

if validade == "true":
    print("data valida")
else:
    print("data invalida")

Estou sem tempo para postar, então esse post não vai ter fluxograma e nem explicação. Mais não reclamem!! Eu já cobro e nem ganho nada!!

Saídas:

>>>
digite uma data com o seguinte formato dd/mm/aaaa —> 31/02/2012
data invalida
>>>

>>>
digite uma data com o seguinte formato dd/mm/aaaa —> 12/12/2012
data valida
>>>

 

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 24 de March de 2012 às 12:06

March 22, 2012

PowerPython

tkinter5-2

Aula de Hoje!!

Hoje aprenderemos como criar mensagens de erro, alerta, aviso, etc

Primeiro o código - Depois a explicação

import Tkinter        #1
import tkMessageBox   #2

top = Tkinter.Tk()    #3
def hello(): #4
   tkMessageBox.showinfo("você clicou", "Hello World")#5

B1 = Tkinter.Button(top, text = "Clique Aqui!!!", command = hello)
B1.pack()

top.mainloop()

Entendo o Programa:

Linha 1 e 2: Importamos as bibliotecas necessarias (tkinter e tkMessageBox)

Linha 3: Criamos uma janela chamada top

Linha 4: Criamos uma função para quando clicarmos no botão que sera criado adiante

Linha 5: Criamos uma mensagem de informação (info) para quando a função acima for executada. Com os seguintes parâmetros:

tkMessageBox.showinfo("você clicou", "Hello World")

showinfo – O tipo da Mensagem (info), outro exemplo é showerror ()
 ”você clicou” – O nome da mensagem, o que aparece em cima da janela
“Hello World “ – A mensagem

Na linhas abaixo criamos um botão com o nome clique aqui, como fizemos em aulas anteriores 

Saída:

…showerror(“você clicou”, “Hello World”)

…askquestion(“você clicou”, “Hello World”)

Outros exemplos:

  • showinfo()
  • showwarning()
  • showerror ()
  • askquestion()
  • askokcancel()
  • askyesno ()
  • askretrycancel ()

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 22 de March de 2012 às 17:14

March 21, 2012

PowerPython

powerpython

Olá Programadores!!

Hoje vamos aprender como usar operadores matemáticos e comparativos
Se você perceber, já usamos vario desses, com == ; != ; > ; < , etc.

Para melhor entender os operadores vamos mostrar uma simples tabela:

Tabela:

Matemáticos

+ ____ adição
- ____ subtração
* ____ multiplicação
/ ____ divisão
// ____ divisão inteira
% ____ módulo
** ____ potência
+ ____ positivo
- ____ negativo

Comparativos:

< ____ menor que
> ____ maior que
<= ____ menor ou igual a
>= ____ maior ou igual a
== ____ Igual a
!= ____ diferente de
<< ____ deslocamento para esquerda
>> ____ deslocamento para direita

& ____ e bit-a-bit
| ____ ou bit-a-bit
^ ____ ou exclusivo bit-a-bit
~ ____ inversão


Alguns exemplos:

print 2 + 2
print 2 - 1
print 2 * 2
print 10 / 2
print 11 // 2
print 11 % 2
print 10 ** 2
print -50 + 25
print +25 + -15

Saídas:

>>>
4
1
4
5
5
1
100
-25
10
>>>

Operadores Comparativos:

test = input('Digite um numero: ')

if test > 10:
    print 'maior q 10'
if test < 10:
    print 'menor q 10'
if test == 10:
    print 'igual a 10'
if test != 10:
    print 'diferente de 10'

Saídas:

>>>
Digite um numero: 15
maior q 10
diferente de 10
>>>

>>>
Digite um numero: 35
maior q 10
diferente de 10
>>>

>>>
Digite um numero: 10
igual a 10
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 21 de March de 2012 às 20:10

powerpython

Olá Programadores!! 

Hoje vamos aprender como criar uma simples teste, ou prova em Python
O programa consiste em uma simples pergunta, e com 3 alternativas (a b c). Caso a resposta seja errada o programa da mais uma chance ao usuário, caso acerte, mostra uma mensagem de acerto e encerra o programa.

Primeiro o Programa – Depois a explicação!

print '''         #1
Quanto é 23 x 5?
(a)201
(b)115
(c)320
'''

while True: #2
    resposta = raw_input('R: ')  #3

    if resposta == 'a':  #4
        print 'Você errou'

    elif resposta == 'b':
        print 'você acertou'  #5
        break               #6
    elif resposta == 'c':  #7
        print 'Você errou'

Entendo o Programa:

Linha 1 - Escrevemos na tela a pergunta desejado
Usando ”’ Escrevemos um texto pré formatado
(Sem a necessidade de colocar espaços e parágrafos)

Linha 2 – Começamos um loop infinito

Oque é um Loop?
Loop, do inglês laço, lada mais é do que um bloco de comando que sempre é executado.
EX:

while True:
    print 'oi' 
    print 'tchau'

 
Saída:

tchau
oi
tchau
oi
tchau
oi
tchau
oi
…… (NÃO PARAA!)

Linha 3 – Criamos uma variável com a resposta do usuário

Linha 4 – Aqui fazemos um teste, se a resposta for ‘a’, o usuário errou,e  como esse bloco de programa é um loop, o programa faz a pergunta denovo

Linha 5 - Caso a resposta seja b (a resposta correta), o programa escreve uma mensagem de acerto

Linha 6 – Encerra o loop e o programa com o comando break

Linha 7 – Mesmo da linha 4

Saídas:

>>>

Quanto é 23 x 5?
(a)201
(b)115
(c)320

R: a
Você errou
R: c
Você errou
R: b
você acertou
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 21 de March de 2012 às 18:42

Elcio Luiz Ferreira

Configurando o locale no Ubuntu

É um problema comum ao configurar um novo servidor com Ubuntu, descobrir que não há um locale válido configurado, ou descobrir que o locale padrão não é o que você desejava. Os sintomas comuns de um sistema sem um locale válido são as seguintes mensagens:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

Ou essa outra, bem mais assustadora:

perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
   LANGUAGE = (unset),
   LC_ALL = (unset),
   LC_CTYPE = "pt_BR.UTF-8",
   LANG = "en_US.UTF-8"
   are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

Os sintomas de um locale diferente do que você gostaria são mensagens em algum idioma estranho.

Como corrigir? Vou postar aqui, porque esse arquivo fica num local muito inusitado, em minha opinião. Não está em /etc. Edite, como root, o arquivo:

/var/lib/locales/supported.d/local

E coloque os locales que você quer que o sistema suporte. A maioria dos usuários brasileiros vai se dar bem com esse conteúdo:

pt_BR ISO-8859-1
pt_BR.UTF-8 UTF-8

No meu caso, como faço questão de trabalhar exclusivamente com Unicode, eu deixo esse arquivo assim:

pt_BR.UTF-8 UTF-8

Em seguida rode:

sudo dpkg-reconfigure locales

Isso deve resolver o problema.


por elcio em 21 de March de 2012 às 17:58

March 20, 2012

PowerPython

powerpython

Olá programadores!! 

Hoje aprenderemos como criar um programa pede a 3 que coloquem seus nomes, em seguida sortei um jogador que mostre a mensagem ‘Fulano você ganhou!!’

O Programa primeiro depois a explicação!!

import random #1

j1 = raw_input('(1° jogador) Digite seu nome: ')#2
j2 = raw_input('(2° jogador) Digite seu nome: ')#3
j2 = raw_input('(3° jogador) Digite seu nome: ')#4

sort = random.randint(1,3) #5

if sort == 1:#6
    print 'Parabéns',j1,'Você Ganhou!!'
elif sort == 2:#7
    print 'Parabéns',j2,'Você Ganhou!!'
elif sort == 3: #8
    print 'Parabéns',j3,'Você Ganhou!!'

Na linha 1, importamos a biblioteca Random ( que em inglês significa aleatório) , vai nos proporcionar o essencial dessa aplicação o sorteio (vamos ver melhor mais adiante)

Na linha 2 – Pede o nome do 2° usuário
Na linha 3 – Pede o nome do 3° usuário
Na linha 4 – Pede o nome do 4° usuário

Criamos uma variável que vai conter o valor sorteado com o seguinte comando:

sort = random.randint(1,3)

sort – nome da variável
random.randint(1,3) – Sorte- ia um numero de 1 a 3

Na linha 6,  fazemos um teste para saber se o numero sorteado é  1, se for escreve que o vencedor é o jogador 1
Na linha 7, fazemos um teste para saber se o numero sorteado é 2, se for o vencedor é o jogador 2
Na linha 8, fazemos um teste para saber se o numero sorteado é 3, se for, então ganhador é o jogador 3

Saídas:

>>>
(1° jogador) Digite seu nome: Samir
(2° jogador) Digite seu nome: Matheus
(3° jogador) Digite seu nome: Carlos
Parabéns Samir Você Ganhou!!
>>>

>>>
(1° jogador) Digite seu nome: carlos
(2° jogador) Digite seu nome: marcos
(3° jogador) Digite seu nome: silva
Parabéns silva Você Ganhou!!
>>>

>>>
(1° jogador) Digite seu nome: Jose
(2° jogador) Digite seu nome: Maria
(3° jogador) Digite seu nome: Antonio
Parabéns Maria Você Ganhou!!
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 20 de March de 2012 às 17:16

March 19, 2012

PowerPython

decisao-17

Olá Programadores!!

Continuando a lista de exercícios da Estrutura de Decisão Python…

Hoje aprenderemos a como criar um programa que peça que ao usuário que informe um ano, e em seguida mostre se ele é bissexto, ou não

O 16° Exercício diz assim:
“Faça um Programa que peça um número correspondente a um determinado ano e em seguida informe se este ano é ou não bissexto.” 

Nota importante : O simbolo % que aparece no Fluxograma a seguir, não significa por cento ou porcentagem, mais o resto da divisão. 
EX:  4%2 = 0
| 0 porque o resto da divisão de 4 / 2 é 0

EX: 15%8 = 7
|o resto da divisão de 15 / 8 é 7
Resto não é o resultado!! 

O Fluxograma:

O Programa:

ano = input("digite um ano (XXXX): ")
if (ano%4 == 0 and ano%100!= 0) or ano%400 == 0:
    print ano, " O ano informado é Bissexto"
else:
    print ano, " O ano informado não é bissexto"

Saídas

>>>
digite um ano: 2012
2012 O ano informado é bissexto
>>>

>>>
digite um ano: 2011
2011 O ano informado não é bissexto
>>>

>>>
digite um ano: 1500
1500 O ano informado não é bissexto
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 19 de March de 2012 às 19:22

powerpython

Olá Programadores!!

Hoje vamos construir um programa que faz a equação do 2° grau
E que em seguida escreva as raízes reais, se houver..

O 16° exercício diz assim:
“Faça um programa que calcule as raízes de uma equação do segundo grau, na forma ax2 + bx + c. O programa deverá pedir os valores de a, b e c e fazer as consistências, informando ao usuário nas seguintes situações:

  1. Se o usuário informar o valor de A igual a zero, a equação não é do segundo grau e o programa não deve fazer pedir os demais valores, sendo encerrado;
  2. Se o delta calculado for negativo, a equação não possui raizes reais. Informe ao usuário e encerre o programa;
  3. Se o delta calculado for igual a zero a equação possui apenas uma raiz real; informe-a ao usuário;
  4. Se o delta for positivo, a equação possui duas raiz reais; informe-as ao usuário”

Estou com alguns trabalhos para fazer… Então esse post só vai conter o programa, e não vai haver Fluxograma 

O Programa:

import math

print("digite os termos da equacao a, b e c da equacao ax^2 + bx + c")
a = input("digite o termo a ---> ")
if a == 0:
    print("nao eh uma equacao de segundo grau")
else:
    b = input("digite o termo b  ---> ")
    c = input("digite o termo c ---> ")
    delta = (math.pow(b,2) - (4*a*c))
    if delta < 0:         print "delta = ",delta," a equacao nao possui raizes reais"     if delta == 0:         print "delta = ",delta," a equacao possui uma raiz"         raiz = ((-1)*b + math.sqrt(delta))/(2*a)         print "raiz da equacao = ", raiz     if delta > 0:
        print "delta = ",delta," a equacao possui duas raizes"
        raiz1 = ((-1)*b + math.sqrt(delta))/(2*a)
        raiz2 = ((-1)*b - math.sqrt(delta))/(2*a)
        print "raiz1 da equacao = ", raiz1
        print "raiz2 da equacao = ", raiz2

Fonte: http://diego.wikidot.com/ - Importante!

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 19 de March de 2012 às 17:00

March 17, 2012

PowerPython

tkinter3-3

Olá Programadores!!

Hoje aprenderemos a usar a função Canvas do Tkinter, que traduzindo do inglês,significa ‘Tela’, que nada mais que do que uma função que desenha objetos na tela. Para entender melhor veja o exemplo abaixo:

Esse programa em especifico desenha um retângulo azul na tela.
O seu código fonte é bem simples, vou lhes mostrar em seguida eu explicarei, como faço de costume :D

from Tkinter import *

master = Tk()

w = Canvas(master, width=200, height=100) #1

w.create_rectangle(50, 25, 150, 75, fill="blue")  #2
w.pack()         #3
mainloop()

Na linha 1, criamos um retângulo, e definimos sua posição na tela
- width=200  (largura)
       - height=10 (altura)

Na linha 2,Definimos seu tamanho e sua cor:

- (50, 25, 150, 75, fill=”yellow”)

50 , 25 -  Margem da esquerda (50), Margem de ‘cima’ (25)
150, 75 - Largura do retângulo (150), e sua altura (75)
fill=”yellow” - Preenche o retângulo com a cor amarela (yellow)

Saídas:

Podemos também trocar a cor do retângulo
Ex: fill=”yellow”

Vermelho EX: fill=”red”

Podemos também alterar o tamanho do retângulo:

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 17 de March de 2012 às 15:02

March 16, 2012

PowerPython

powerpython

Olá Programadores!!

Hoje vou lhes mostrar uma pequena lista de alguns programas que foram feitos na linguagem de programa Python, a que tanto ensino neste blog ;D

Games!!

  • Além do famoso filme Star Wars, que usou Python nos efeitos especiais.

Você até pode achar pequena essa lista, e eu concordo com você.
Python tem muito mais aplicações, e hoje ultrapassa PHP em popularidade, provando ser uma ótima linguagem de programação.  Se quiser ver a lista completa acesse esse post da Wikipédia (em inglês) clicando aqui


por powerpython em 16 de March de 2012 às 19:16

decisao-15

Olá Programadores!! 

Hoje vamos criar um programa que peça três lados de um triângulo, e informe ao usuário que esse valores pode ser um triângulo, depois informa seu tipo
(Triângulo Equilátero,Triângulo Isósceles,etc)

O 15° exercício diz assim:
“Faça um Programa que peça os 3 lados de um triângulo. O programa deverá informar se os valores podem ser um triângulo. Indique, caso os lados formem um triângulo, se o mesmo é: equilátero, isósceles ou escaleno.

  • Dicas:
  • Três lados formam um triângulo quando a soma de quaisquer dois lados for maior que o terceiro;
  • Triângulo Equilátero: três lados iguais;
  • Triângulo Isósceles: quaisquer dois lados iguais;
  • Triângulo Escaleno: três lados diferentes”

Para entender melhor esse exercício, veja o fluxograma: 

O Fluxograma:

Traduzindo o Fluxograma:

(1) – O programa salva o valor do primeiro lado do triangulo na variável l1
(2) -O programa salva o valor do segundo lado do triangulo na variável l2
(3) -O programa salva o valor do terceiro lado do triangulo na variável l3

(4) -Se o primeiro lado e o segundo lado do triângulo for maior que o 3:
#Agora o programa tenta descobrir o tipo triângulo
- Se todos os lados forem iguais – O triângulo é um Equilátero
- Se 2 quaisquer lados (l1 e l2 ou l2 e l3, etc) forem iguais – Isósceles
- Se Todos os lados forem diferentes – Triângulo Escale

(5) – Caso o primeiro lado e o segundo lado do triângulo for maior que o 3 o todos os lados não podem ser um Triângulo.

O Programa:

l1 = input('Digite o tamanho do primeiro lado: ')
l2 = input('Digite o segundo lado: ')
l3 = input('Digite o segundo lado: ')

if l1 + l2 > l3:
    if l1 == l2 and l1 == l3:
        print 'Triângulo Equilátero'
    elif l1 == l2 or l2 == l3 or l1 == l3:
        print 'Triângulo Isósceles'
    elif l1 != l2 and l3 or l2 != l1 and l3 or l1 != l3:
        print 'Triângulo Escaleno'

else:
    print 'É impossivel ser um triângulo'

 Saídas:

>>>
Digite o tamanho do primeiro lado: 5
Digite o segundo lado: 5
Digite o segundo lado: 2
Triângulo Isósceles
>>>

>>>
Digite o tamanho do primeiro lado: 5
Digite o segundo lado: 8
Digite o segundo lado: 9
Triângulo Escaleno
>>>

>>>
Digite o tamanho do primeiro lado: 8
Digite o segundo lado: 8
Digite o segundo lado: 8
Triângulo Equilátero
>>>

>>>
Digite o tamanho do primeiro lado: 2
Digite o segundo lado: 2
Digite o segundo lado: 10
É impossivel ser um triângulo
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 16 de March de 2012 às 15:00

March 15, 2012

PowerPython

calendario3

Olá Programadores!!

Hoje vamos aprender a construir um programa que peça um numero, e retorne o calendário correspondente. EX: 12 – Dezembro, 1 – Janeiro,etc

Para esse programa, vamos precisar usar um biblioteca simples e eficaz de ser usada, seu nome é calendar. Para usa-lá, a importamos dessa maneira:

import calendar

O Programa:

Primeiro vou lhes mostrar o programa inteiro, em seguida eu explico ;D

import calendar

mes = input('Digite o numero do mês: ')   #2

if mes >=1 and mes <=12:              #3
    cal = calendar.month(2012, mes)   #4
    print "Esse é o Calendário do mês",mes
    print '--------------------------------'  #5
    print cal;             #6
else:
    print 'Intrada invalida'         #7

Explicando o Programa:

Linha 2: Pegamos o numero do mês com o usuario (1,2,3…)
Linha 3: Criamos uma condição para o programa ser executado:
O código só sera executado se o numero digitado for de 1 a 12
Linha 4: Criamos uma variável que contem o valor do mês que o usuário digitar. Se não tivesse a variável mes, teriamos nós que escolher o mes, não o usuario, ficaria assim:

calendar.month(2012, 1) #1 de janeiro, podia ser 5,9,12

Linha 5: Pulamos uma linha marota ;D
Linha 6: Escrevemos o valor da variável cal, que contem o mês
Linha 7: Caso o usuário digite um numero invalido (15 , 16 ,13, etc) Mostre uma mensagem de erro, ou algo tipo :D

Saídas:

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 15 de March de 2012 às 19:57

decisao-14

Aula de Hoje:

Nesta aula realizaremos o exercício 14, nele vamos aprender a como verificar a nota de um aluno, calcular sua media, responder sua nota correspondente (A B C D E ), e depois mostrar se foi aprovado ou não.

O 14° exercício diz assim:
Faça um programa que lê as duas notas parciais obtidas por um aluno numa disciplina ao longo de um semestre, e calcule a sua média. A atribuição de conceitos obedece à tabela abaixo:

  •   Média de Aproveitamento  Conceito
      Entre 9.0 e 10.0        A
      Entre 7.5 e 9.0         B
      Entre 6.0 e 7.5         C
      Entre 4.0 e 6.0         D
      Entre 4.0 e zero        E"

 Para entender melhor… eis o fluxograma:

O Fluxograma:

O Programa:

v1 = input(‘Digite o valor da primeira nota: ‘)
v2 = input(‘Digite o valor da segunda nota: ‘)

nota = (v1 + v2) /2

#nota A

if nota >= 9 and nota <= 10:
    print ‘A nota da primeira prova: ‘,v1
    print ‘A nota da segunda prova: ‘,v2
    print ‘——————————’
    print ‘Você tirou um A!’
    print ‘Sua media é de:’,nota
    print ‘você foi aprovado!!’

#nota B

elif nota >= 7.5 and nota < 9:
    print ‘A nota da primeira prova: ‘,v1
    print ‘A nota da segunda prova: ‘,v2
    print ‘——————————’
    print ‘Você tirou um B!’
    print ‘Sua media é de:’,nota
    print ‘você foi aprovado!!’

#nota C

elif nota >= 6.5 and nota < 7.5:
    print ‘A nota da primeira prova: ‘,v1
    print ‘A nota da segunda prova: ‘,v2
    print ‘——————————’
    print ‘Você tirou um C!’
    print ‘Sua media é de:’,nota
    print ‘você foi aprovado!!’

#nota D

elif nota >= 4 and nota < 6:
    print ‘A nota da primeira prova: ‘,v1
    print ‘A nota da segunda prova: ‘,v2
    print ‘——————————’
    print ‘Você tirou um D!’
    print ‘Sua media é de:’,nota
    print ‘você foi reprovado!!’

#nota E

elif nota < 4:
    print ‘A nota da primeira prova: ‘,v1
    print ‘A nota da segunda prova: ‘,v2
    print ‘——————————’
    print ‘Você tirou um E!’
    print ‘Sua media é de:’,nota
    print ‘você foi reprovado!!’

Saídas:

>>>
Digite o valor da primeira nota: 4
Digite o valor da segunda nota: 5
A nota da primeira prova: 4
A nota da segunda prova: 5
——————————
Você tirou um D!
Sua media é de: 4
você foi reprovado!!
>>>

Saída2:

>>>
Digite o valor da primeira nota: 7
Digite o valor da segunda nota: 8
A nota da primeira prova: 7
A nota da segunda prova: 8
——————————
Você tirou um C!
Sua media é de: 7
você foi aprovado!!
>>>

Saída3:

>>>
Digite o valor da primeira nota: 7
Digite o valor da segunda nota: 8
A nota da primeira prova: 7
A nota da segunda prova: 8
——————————
Você tirou um C!
Sua media é de: 7
você foi aprovado!!
>>>

Saída4:

>>>
Digite o valor da primeira nota: 10
Digite o valor da segunda nota: 9
A nota da primeira prova: 10
A nota da segunda prova: 9
——————————
Você tirou um A!
Sua media é de: 9
você foi aprovado!!
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 15 de March de 2012 às 13:27

March 14, 2012

PowerPython

decisao-13

Nesta aula vamos realizar o exercício 13 da lista de exercícios originais Python  este exercício é bem simples e vem facil de ser compreendido. Acompanhe o fluxograma e programa.

O 13° exercício diz assim:

“Faça um Programa que leia um número e exiba o dia correspondente da semana. (1-Domingo, 2- Segunda, etc.), se digitar outro valor deve aparecer valor inválido” 

O Fluxograma:

O Programa:

numero = input('Digite um numero: ')

if numero == 1:
    print '1-Domingo'
elif numero == 2:
    print '2-Segunda'
elif numero == 3:
    print '3-Terça'
elif numero == 4:
    print '4-Quarta'
elif numero == 5:
    print '5-Quinta'
elif numero == 6:
    print '6-Sexta'
elif numero == 7:
    print '7-Sabádo'
else:
    print 'Intrada invalida'

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 14 de March de 2012 às 21:49

decisao-12

Continuando a lista de exercícios Python da Estrutura de Decisão…

O 12° exercício diz assim:
“Faça um programa para o cálculo de uma folha de pagamento, sabendo que os descontos são do Imposto de Renda, que depende do salário bruto (conforme tabela abaixo) e 3% para o Sindicato e que o FGTS corresponde a 11% do Salário Bruto, mas não é descontado (é a empresa que deposita). O Salário Líquido corresponde ao Salário Bruto menos os descontos. O programa deverá pedir ao usuário o valor da sua hora e a quantidade de horas trabalhadas no mês.

  • Desconto do IR:
  • Salário Bruto até 900 (inclusive) – isento
  • Salário Bruto até 1500 (inclusive) – desconto de 5%
  • Salário Bruto até 2500 (inclusive) – desconto de 10%
  • Salário Bruto acima de 2500 – desconto de 20% Imprima na tela as informações, dispostas conforme o exemplo abaixo. No exemplo o valor da hora é 5 e a quantidade de hora é 220.
            Salário Bruto: (5 * 220)        : R$ 1100,00
            (-) IR (5%)                     : R$   55,00
            (-) INSS ( 10%)                 : R$  110,00
            FGTS (11%)                      : R$  121,00
            Total de descontos              : R$  165,00
            Salário Liquido                 : R$  935,00"

 O Flugrama:

O Programa:

Atenção: Estou tendo problemas para colocar os meus códigos no Wordpress, por esse motivo ficara assim:

horas = input(‘Digite o numero de horas trabalhadas: ‘)
ghoras = input(‘Digite o ganho por horas: ‘)

bruto = ghoras * horas

cinco = (5 / 100.0) * bruto
dez = (10 / 100.0) * bruto
vinte = (20 / 100.0) * bruto
onze = (11 / 100.0) * bruto

if bruto <= 900:
       print ‘Seu salário bruo é de:’,bruto – cinco
       print ‘(-) IR (5%) :’,’ R$’,cinco
       print ‘(-) INSS ( 10%):’,’ R$’,dez
       print ‘FGTS (11%): ‘,’ R$’,onze
       print ‘Total de descontos:’,'R$’,cinco + dez + onze
       print ‘Salário Liquido :’,’ R$’,bruto – (cinco + dez + onze)
elif bruto >= 900 and bruto <= 1500:
       print ‘Seu salário bruo é de:’,bruto – dez
       print ‘(-) IR (5%) :’,’ R$’,cinco
       print ‘(-) INSS ( 10%):’,’ R$’,dez
       print ‘FGTS (11%): ‘,’ R$’,onze
       print ‘Total de descontos:’,'R$’,cinco + dez + onze
elif bruto > 1500:
       print ‘Seu salário bruo é de:’,bruto – vinte
       print ‘(-) IR (5%) :’,’ R$’,cinco
       print ‘(-) INSS ( 10%):’,’ R$’,dez
       print ‘FGTS (11%): ‘,’ R$’,onze
       print ‘Total de descontos:’,'R$’,cinco + dez + onze

 

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 14 de March de 2012 às 14:08

Elcio Luiz Ferreira

HTML5 é mais que canvas

Acesse o HTML5 Please. Clique em use e dê uma olhada na lista. Agora clique em use with caution e confira a lista. Viu quanta coisa?

Por que a maioria dos exemplos de site em HTML5 brasileiros, dois anos depois de começarmos a usar esse treco, ainda são um mark-up levemente vitaminado e canvas?

Onde estão nossas aplicações offline? Web sockets? Drag-and-drop? Geolocation? Micro-data? Device orientation? Novos campos de formulário? SVG? History API?

Mas não tem demanda…

Você pode se desculpar por estar usando os mesmos velhos recursos de sempre, dizendo que os clientes da agência ou produtora onde você trabalha não querem os recursos novos, que seu chefe não quer saber dessas coisas, que tem trabalho pra caramba pra simplesmente recortar os layouts que recebe e não quer arrumar sarna pra se coçar…

Você vai mesmo querer passar o resto da vida recortando layouts? O mundo vai mudar, e você vai ser extinto, dinossauro. Se não tem demanda, crie a demanda. Comece a desenvolver projetos pessoais com o que você acha que seus clientes deveriam estar usando. Em seguida, mostre para todo mundo. Você vai ver se a demanda não aparece.

Todo mundo tem celular conectado. Todos os navegadores (até o IE) estão se esforçando para funcionar direito. É um momento mágico. É uma oportunidade que você não quer deixar passar. Um pouquinho de esforço aí, galera.


por elcio em 14 de March de 2012 às 14:07

March 13, 2012

PowerPython

arquivos2

Olá Programadores!!

Hoje aprenderemos a como editar arquivos de texto usando Python!!
Antes de tudo, crie um arquivo txt com o nome que preferir. Assim : texto.txt
Primeiro vou lhes mostrar o programa completo depois eu explico ;D

O Programa: 

arquivo = open('texto.txt', 'w') #1

#2 Começa o texto
texto = """          

Bem vindo a aula de Programação usando Python
---------------------------------------------
Hoje aprendi a editar arquivos usando Python
           :D 

"""                     #Termina o texto

print 'O arquivo foi editado com sucesso!!'
arquivo.write(texto)   #3
arquivo.close()        #4

Na linha 1, criamos uma variável que contem o local do arquivo txt

arquivo = open('texto.txt', 'w') #1

Depois com ‘, w’  especificamos que tipo de edição vamos fazer. Sendo elas:

w = Write -> Que escreve em cima de tudo que tiver no arquivo
r = Read -> Que somente lê o arquivo
etc – Existe varias outras, ou não…

Na linha 2, criamos o texto que sera escrito no arquivo

texto = """          #2 Começa o texto

Bem vindo a aula de Programação usando Python
---------------------------------------------
Hoje aprendi a editar arquivos usando Python
           :D 

"""                     #Termina o texto

Na linha 3, Escrevemos o arquivo com o conteúdo da variável texto. Depois encerramos a conexão com o arquivo

arq.write(texto)   #3
arq.close()        #4

Também podemos informar ao usuário que o arquivo foi editado:

print 'O arquivo foi editado com sucesso!!'
arq.write(texto)   #3
arq.close()        #4

Saída:

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 13 de March de 2012 às 19:12

tkinter4

Ola Programadores !!

Hoje aprenderemos como criar uma ‘mine’ aplicação gráfica usando TKinter !!
O programa consiste em uma pergunta básica (Quanto é 1+1 ?), e três botões para responder ( 1  - 2 – 3) . E quado você aperta o botão errado, ele escreve “Você errou!!”, e quando aperta o botão certo – “Você Acertou!!”.

Escrevendo o Programa:

Primeiro vamos apresentar o programa completo, e em seguida vamos explicar!

O Programa:

from Tkinter import *

master = Tk()

#(1)função para a resposta 1
def um():
    v.set('Você errou!!')
#função para a resposta 2
def dois():
    v.set('Você acertou!!')
#função para a resposta 3
def tres():
    v.set('Você errou!!')

#(2)Aqui criamos uma Label(Texto)
v = StringVar()
Label(master, textvariable=v, font=("Helvetica",45)).pack()
#(3)Aqui criamos uma variável para o texto da Label
v.set("Quanto é 1 + 1 ?")

#(3)Aqui criamos os botões para as respostas
um = Button(master, text="1",command=um, font=("Helvetica",20))
dois = Button(master, text="2",command=dois, font=("Helvetica",20))
tres = Button(master, text="3",command=tres, font=("Helvetica",20))

#(4)Aqui mostramos os botões na tela, e estipulamos o lugar
um.place(x=80, y=100, width=100, height=50)
dois.place(x=180, y=100, width=100, height=50)
tres.place(x=280, y=100, width=100, height=50)

mainloop()

Entendo o Programa:

Na linha 1 (#1) Criamos funções para quando o usuário clicar nos botões. Vamos entender melhor: O comando abaixo muda a variável da Label. Você entendera melhor mais adiante

v.set('Você errou!!')

Na linha 2, Criamos uma Label, depois estipulamos seu texto, sua fonte , e seu tamanho

v = StringVar()  #variável que contem o texto da Label
Label(master, textvariable=v, font=("Helvetica",45)).pack()

#textvariable=v Estipula que o texto é a variável v
#font=("Helvetica",45) Estipula a fonte e o tamanho

v.set("Quanto é 1 + 1 ?")

Na linha 3, Criamos os botões para as respostas, entenda melhor:

um = Button(master, text="1",command=um, font=("Helvetica",20))
dois = Button(master, text="2",command=dois, font=("Helvetica",20))
tres = Button(master, text="3",command=tres, font=("Helvetica",20))

Um, dois ou tres, são os nomes dos botões
text=”1″,text=”2″… É o texto dos botões
command=um, command=dois… É o comando a ser executado quando clicarmos no botão, aquelas funções que criamos no começo ;D

Na linha 4, Mostramos o botões criados acima, em seguida estipulamos o seu lugar na tela. Entenda Melhor:

um.place(x=80, y=100, width=100, height=50)
dois.place(x=180, y=100, width=100, height=50)
tres.place(x=280, y=100, width=100, height=50)

mainloop()

x= … Estipula a coordenada ‘x’ da interface
y= …Estipula a coordenada ’y’ da interface
width=100 Estipula a altura do botão
height=100 Estipula a largura do botão

mainloop() –> Roda o programa

Saída: 

!Atenção!: Não consegui achar uma maneira de fazer o programa abrir de forma correta. Se você souber como, responda nos comentários.
Sendo eu sem solução, ‘estique’ ele. Assim:

Saída1:

Saída2:

Saída3:

SE VOCÊ GOSTOU CLIQUE AQUI!!

Não se esqueça de deixar a resposta!! – Obrigado

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 13 de March de 2012 às 15:04

March 12, 2012

Artificial Intelligence in Motion

Some data and machine learning talks videos from PyCon Us 2012



Unfortunately this year I couldn't participate of the PyCon, the world meeting of Python developers. I had a poster accepted this year, but I had some problems that didn't allow me to go. Apart from that, the best part is that I could watch talks, tutorials and keynotes from the congress.

Thanks to the PyVideo team, they uploaded all the videos from the PyCon quickly! The best ones that I enjoyed (of course related to data mining, natural language processing and machine learning) I will share with you:







17. IPython: Python at your fingertips




There are some of talks and tutorials that I enjoyed a lot. I recommend you to take a look at all the videos available from PyCon at this link.

I really hope next  year I can go to this meeting :)

Cheers,

Marcel

por Marcel Caraciolo (noreply@blogger.com) em 12 de March de 2012 às 21:47

PowerPython

powerpython

Continuando a lista de exercícios Python, da Estrutura de Decisão…

O 11° exercício diz assim:
“As Organizações Tabajara resolveram dar um aumento de salário aos seus colaboradores e lhe contraram para desenvolver o programa que calculará os reajustes.

  • Faça um programa que recebe o salário de um colaborador e o reajuste segundo o seguinte critério, baseado no salário atual:
  • salários até R$ 280,00 (incluindo) : aumento de 20%
  • salários entre R$ 280,00 e R$ 700,00 : aumento de 15%
  • salários entre R$ 700,00 e R$ 1500,00 : aumento de 10%
  • salários de R$ 1500,00 em diante : aumento de 5% Após o aumento ser realizado, informe na tela:
  • o salário antes do reajuste;
  • o percentual de aumento aplicado;
  • o valor do aumento;
  • o novo salário, após o aumento.”

Entendo o Programa:

Para realizar o exercício precisamos saber efetuar porcentagens em Python, que praticamente a mesma coisa em qualquer linguagem programa. Veja:

por = (20 / 100.0) * 150

Analizando:
 por nada mais é que uma variável que recebe o valor da conta
20 é a porcentagem (20%, 30% 15%, etc)
100.0 –> de 100%
* 150 é de quem queremos a porcentagem -> 20 % de 150 ;D

Sabendo realizar porcentagens, o programa praticamente já esta completo, vamos apenas utilizar if e else para realizar testes. Tais como:

salario = input('Digite seu salário: ')

if salario <= 280:      #SE O SALARIO FOR MENOR QUE 280
    {executa alguma função}

O Programa:

salario = input(‘Digite seu salário: ‘)

#Se o salario for maior que 280

if salario <= 280.00:
      por = (20 / 100.0) * salario
      resultado = salario + por
      print ‘Seu salário antes do reajuste: R$’,salario
      print ‘Percentual aumentado: %’,20
      print ‘O valor do aumento é: R$’,por
      print ‘Com o reajuste, o seu salário é: R$’,resultado

#Se o salario é maior que 280 e menor que 700

elif salario > 280.00 and salario <= 700.00:
        por = (15 / 100.0) * salario
        resultado = salario + por
        print ‘Seu salário antes do reajuste: R$’,salario
        print ‘Percentual aumentado: %’,15
        print ‘O valor do aumento é: R$’,por
        print ‘Com o reajuste, o seu salário é: R$’,resultado

#Se o salario é maior que 700 e menor que 1500

elif salario > 700.00 and salario <= 1500.00:
        por = (10 / 100.0) * salario
        resultado = salario + por
        print ‘Seu salário antes do reajuste: R$’,salario
        print ‘Percentual aumentado: %’,10
        print ‘O valor do aumento é: R$’,por
        print ‘Com o reajuste, o seu salário é: R$’,resultado

#Se o salario é maior que 1500

elif salario > 1500.00:
        por = (5 / 100.0) * salario
        resultado = salario + por
        print ‘Seu salário antes do reajuste: R$’,salario
        print ‘Percentual aumentado: %’,5
        print ‘O valor do aumento é: R$’,por
        print ‘Com o reajuste, o seu salário é: R$’,resultado

Saídas:

Saída1:

>>>
Digite seu salário: 250
Seu salário antes do reajuste: R$ 250
Percentual aumentado: % 20
O valor do aumento é: R$ 50.0
Com o reajuste, o seu salário é: R$ 300.0
>>>

Saída2:

>>>
Digite seu salário: 678
Seu salário antes do reajuste: R$ 678
Percentual aumentado: % 15
O valor do aumento é: R$ 101.7
Com o reajuste, o seu salário é: R$ 779.7
>>>

Saída3:

>>>
Digite seu salário: 4000
Seu salário antes do reajuste: R$ 4000
Percentual aumentado: % 5
O valor do aumento é: R$ 200.0
Com o reajuste, o seu salário é: R$ 4200.0
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 12 de March de 2012 às 19:46

PUG - PE

Jogo desenvolvido por Matheus com PyGame e Python 3

Olá pessoal,

Nesta última quinta-feira (08.03.2012) realizamos o XIX Encontro do Grupo de Usuários de Python de Pernambuco. A principal diferença para os últimos 8 encontros realizados foi que desta vez foi realizado à noite dia de semana no ITBC sediado no Recife Antigo, bairro famoso do Recife conhecido pela história e por sediar várias empresas de TI e startups :D

Foi um encontro bem dinâmico e bem mais curto mais muito bem organizado! Quero agradecer a todos os membros, em especial, ultimamente ao Gileno e Fernando que estão dando uma força muito grande nas atividades do nosso grupo! Valeu pessoal!! E também a todos os presentes que estavam por lá.

Algumas fotos do público presente:

Público no XIX Encontro

Público no XIX Encontro

Público no XIX Encontro

Público no XIX Encontro

A nossa primeira palestra foi ministrada por Marcel Caraciolo sobre o @pugpe apresentando institucionalmente o grupo e algumas estatísticas sobre o grupo realizada em 2011. A palestra já bem conhecida pelo público e dá umas boas vindas a todos que chegam!

Material da palestra

A segunda palestra foi ministrada por Matheus Melo, que aceitou o desafio de aprender python em 1 semana e decidiu dar uma palestra sobre jogos com pygame. Foi bem legal especialmente porque ele não sabia Python e decidiu aprender e usar suas habilidades em construir um simples jogo com PyGame e também porque foi um jogo todo escrito com Python 3! :D  Muito show! Parabéns Matheus!

Matheus palestrando sobre PyGame

Matheus palestrando sobre PyGame

Jogo desenvolvido por Matheus com PyGame e Python 3

Jogo desenvolvido por Matheus com PyGame e Python 3

Seguem os slides e o código-fonte da palestra:

Código-fonte do jogo

A próxima palestra foi ministrada por Gileno e Fernando sobre tópicos avançados com Django onde eles apresentaram boas práticas a serem utilizadas nos Forms de Django e como criar um Custom -Widget  e também falaram como usar o South para migrações de forma fácil com banco de Dados.

Material das suas palestras.

Código bitbucket Forms Django

Código bitbucket South

Slides da palestra migrando com South 

Por fim tivemos 2 palestras relâmpago. A primeira foi ministrada por Alvaro da Ogilvy que apresentou a empresa e os novos projetos que eles estão trabalhando inclusive com oportunidades para trabalho com Python! Pessoal interessado em trabalhar com Python com web eis uma ótima oportunidade! A última da noite foi pelo membro Thiago Souza, um dos líderes técnicos do projeto educacional Amadeus, um software livre CMS para os estudantes de todo o Brasil poderem estudar à distância. Ele foi todo escrito em Java e agora que estão decidindo fazer uma versão 2.0, decidiram fazer todo ele em Python!  Valeu pessoal!! E parabéns pela iniciativa!!! :D

Slides da palestra sobre o Amadeus


E assim tivemos o nosso XIX Encontro, não tão longo mais muito produtivo! E com muito conteúdo legal!  Quero parabenizar a todos os palestrantes e nossos patrocinadores Orygens, Hostech e a Idealizza em especial que nos ajudou com o espaço!! :D

A boa notícia da noite é que iniciaram os preparativos para o XX Encontro do Usuários de Python de Pernambuco e que promete ser um dos maiores encontros da história do grupo! Sim, bem maior que o X Encontro do grupo.  Muitas novidades, muitas atividades e muito conteúdo por vir! Se você for membro do grupo e deseja ajudar na organização do encontro, envie-me um email e estarei à disposição para ajudar ou coloque um comentário abaixo com seu e-mail explicaremos como participar!

Valeu pessoal !

Atenciosamente,

Marcel Caraciolo

Links para os assuntos discutidos


por marcelcaraciolo em 12 de March de 2012 às 04:01

March 10, 2012

PowerPython

powerpython

Olá Programadores, ontem postei que não tinha conseguido resolver o exercício 9 da Estrutura de Decisão, e o inteligentíssimo Henrique Lopes Resolveu para nós!!

Escrevendo o Programa!! – Por Henrique Lopes!!

# coding: utf-8
"""
	>>> decrescente(1, 2, 3)
	3
	2
	1
	>>> decrescente(100, 101, 102)
	102
	101
	100
	>>> decrescente(1, 9, 3)
	9
	3
	1
"""
def decrescente(*args):
	"""
		Função que ordena número da forma decrescente::
	"""
	numero = sorted(args, reverse=True)
	print "\n".join(map(str, numero))

if __name__ == '__main__':
	n1 = input("Digite o 1° numero: ")
	n2 = input("Digite o 2° numero: ")
	n3 = input("Digite o 3° numero: ")

	decrescente(n1, n2, n3)

Saídas:

Saída 1:

>>>
Digite o 1° numero: 5
Digite o 2° numero: 4
Digite o 3° numero: 3
5
4
3
>>>

Saída 2:

>>>
Digite o 1° numero: 1
Digite o 2° numero: 1
Digite o 3° numero: 1
1
1
1
>>>

Saída 3:

>>>
Digite o 1° numero: 32
Digite o 2° numero: 54
Digite o 3° numero: 98
98
54
32
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 10 de March de 2012 às 12:22

March 09, 2012

PowerPython

tkimter

Olá Programadores!
Hoje vamos aprender a criar um programa com GUI!
Para quem não sabe o que é GUI, lá vai : Graphics User Interface, traduzindo uma interface gráfica

Hello World!

Para nossa primeira aplicação vamos fazer o famoso HELLOWORLD!
Basicamente, vai ser um programa que contem um botão, ao clicar nos mostra uma mensagem!

Escrevendo o Programa:

Antes de tudo, vamos importar a biblioteca TKinter! E é ela que vai nos proporcionar toda a interface. Por isso é obrigatório importálo !

import Tkinter

Depois criar um objeto root (estudaremos melhor depois)

root = Tkinter.Tk()

Agora podemos criar a função que sera executada ao clicar no botão:

def helloworld():
    print 'helloworld'  #escreve helloworld

Agora criamos um botão:

b = Tkinter.Button(root, text ="Hello", command = helloworld)

Entendendo Melhor –> b : é o nome do botão (!não o texto!)
text =”Hello” :  é o texto do botão
command = helloworld : é a função a ser executado

Agora colocamos o botão na tela, e iniciamos um loop (um programa sem fim, sempre executando)

b.pack()
root.mainloop()

Programa inteiro:

import Tkinter

root = Tkinter.Tk()

def helloCallBack():
    print 'oi'

b = Tkinter.Button(root, text ="Hello", command = helloCallBack)

b.pack()
root.mainloop()

Saída:

SE VOCÊ GOSTOU CLIQUE AQUI!!

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 09 de March de 2012 às 17:49

decisao-10

Andei postando pouco ultimamente poque estou trabalhando em um projeto pessoal, e anda faltando tempo para postar, mais não vou parar!!

Atenção: Pulei o exercício 9, porque não consegui resolver. Ele pede que mostre os três números digitados pelo usuário em forma decrescente, se souber resolver, responda nos comentários, eu me envie um Email powerpython@hotmail.com.br

Exercício 9:

n1 = input('Digite o 1° numero: ')
n2 = input('Digite o 2° numero: ')
n3 = input('Digite o 3° numero: ')

if n1 > n2 and n1 >n3:
    print n1
elif n2 > n3 and n2 > n1:
    print n2
elif n3 > n1 and n3 > n2:
    print n3

#agora o numero do meio
if n1 > n3 and n1 < n2:     print n1 elif n2 > n1 and n2 < n3:     print n2 elif n3 > n2 and n3 > n1:
    print n3
elif n2 < n1 and n2 > n3:
    print n2

if n1 < n2 and n1 < n3:
    print n1
elif n2 < n3 and n2 < n1:
    print n2
elif n3 < n1 and n3 < n2:
    print n3

Saida:

>>>
Digite o 1° numero: 1
Digite o 2° numero: 9
Digite o 3° numero: 3
9
1
>>>

Continuando a lista de exercícios Python, da Estrutura de Decisão…

O 10° diz assim:
“Faça um Programa que pergunte em que turno você estuda. Peça para digitar M-matutino ou V-Vespertino ou N- Noturno. Imprima a mensagem “Bom Dia!”, “Boa Tarde!” ou “Boa Noite!” ou “Valor Inválido!”, conforme o caso” 

O Fluxograma:

Escrevendo o programa:

turno = raw_input('Digite seu turno: M-matutino ou V-Vespertino ou N- Noturno: ')

if turno == 'M':    #o usuario estuda de manha?
    print 'Bom Dia !!'
elif turno == 'V':  #o usuario estuda a tarde?
    print 'Boa Tarde!!'
elif turno == 'N':  #o usuario estuda de noite?
    print 'Boa Noite!!'
else:
    print 'Intrada invalida'

Saídas:

Saída1:

>>>
Digite seu turno: M-matutino ou V-Vespertino ou N- Noturno: M
Bom Dia !!
>>>

Saída2:

>>>
Digite seu turno: M-matutino ou V-Vespertino ou N- Noturno: V
Boa Tarde!!
>>>

Saída3:

>>>
Digite seu turno: M-matutino ou V-Vespertino ou N- Noturno: N
Boa Noite!!
>>>

Saída4:

>>>
Digite seu turno: M-matutino ou V-Vespertino ou N- Noturno: nao estudo
Intrada invalida
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 09 de March de 2012 às 14:09

March 07, 2012

PowerPython

powerpython

Continuando a lista de exercícios Python, da Estrutura de Decisão…

8° exercício diz assim:
“Faça um programa que pergunte o preço de três produtos e informe qual produto você deve comprar, sabendo que a decisão é sempre pelo mais barato”

Entendendo o programa:

Esse programa é simplesmente simples. Praticamente o mesmo da aula 6. Só que da aula 6 mostra o valor, neste mostraremos o menor valor.

Escrevendo o programa:

p1 = input("Digite o 1° preço: ")
p2 = input("Digite o 2° preço: ")
p3 = input("Digite o 3° preço: ")

def menor():
    if p1 < p2 and p3 and p1:
        print 'O produto 1 é o mais barato!!'
    elif p2 < p1 and p3:
        print 'O produto 2 é o mais barato!!'
    elif p3 < p1 and p2:
        print 'O produto 3 é o mais barato!!'

    #Se alguns numeros forem iguais

    elif p1 == p2 and p1 and p2 < p3:
        print 'O produto 1 e 2 são os mais baratos!!'
    elif p1 == p3 and p1 and p3 < p2:
        print 'O produto 1 e 3 são os mais baratos!!'
    elif p2 == p3 and p2 and p3 < p1:
        print 'O produto 1 e 2 são os mais baratos!!'

    #Se todo os numero forem iguais

    else:
        print 'Todos os preços são iguais!!'

menor()  #chame a função menor

Deixando o programa mais amigável:

Para deixar o  programa mais amigável, vamos colocar uma apresentação do que se trata o programa:

print'Bem vindo ao exercicio 8 da Estrutura de Decisão'

Após feito isso, vamos separar esse apresentação do resto do programa. Deste jeito:

print '-------------------------------------------------'

Mais para deixar o programa mais interessante vamos colocar um ‘delay’ entre a apresentação e a execução do Programa.
Oque é um delay? – A tradução literal é ‘atrasar’, ou seja vamos apresentar o programa, esperar um pouco, e executar o programa. Assim:

import timer # é preciso importar a biblioteca time!!

print 'Bem vindo ao exercicio 8 da Estrutura de Desição'

time.sleep(0.8)   #o programa espera 0.800 milisegundos
print '-------------------------------------------------'
print ''       #não escrevemos nada para dar uma quebra de linha

O programa completo:

import time

print 'Bem vindo ao exercicio 8 da Estrutura de Desição'

time.sleep(0.8)
print '-------------------------------------------------'
print ''

p1 = input("Digite o 1° preço: ")
p2 = input("Digite o 2° preço: ")
p3 = input("Digite o 3° preço: ")

def menor():
    if p1 < p2 and p3 and p1:
        print 'O produto 1 é o mais barato!!'
    elif p2 < p1 and p3:
        print 'O produto 2 é o mais barato!!'
    elif p3 < p1 and p2:
        print 'O produto 3 é o mais barato!!'

    #Se alguns numeros forem iguais

    elif p1 == p2 and p1 and p2 < p3:
        print 'O produto 1 e 2 são os mais baratos!!'
    elif p1 == p3 and p1 and p3 < p2:
        print 'O produto 1 e 3 são os mais baratos!!'
    elif p2 == p3 and p2 and p3 < p1:
        print 'O produto 1 e 2 são os mais baratos!!'

    #Se todo os numero forem iguais

    else:
        print 'Todos os preços são iguais!!'

menor() # chama a função menor!

Saídas:

>>>
Bem vindo ao exercicio 8 da Estrutura de Desição
————————————————-

Digite o 1° preço: 5
Digite o 2° preço: 2
Digite o 3° preço: 2.20
O produto 2 é o mais barato!!
>>>

Saída2

>>>
Bem vindo ao exercicio 8 da Estrutura de Desição
————————————————-

Digite o 1° preço: 5
Digite o 2° preço: 5
Digite o 3° preço: 5
Todos os preços são iguais!!
>>>

Saída3

>>>
Bem vindo ao exercicio 8 da Estrutura de Desição
————————————————-

Digite o 1° preço: 5
Digite o 2° preço: 2
Digite o 3° preço: 1
O produto 2 é o mais barato!!
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 07 de March de 2012 às 16:37

March 06, 2012

PowerPython

powerpython

Andei postando pouco ultimamente poque estou trabalhando em um projeto pessoal, e anda faltando tempo para postar, mais não vou parar!!

Continuando a lista de exercícios Python, da Estrutura de Decisão…

O 7° exercício diz assim:
“Faça um Programa que leia três números e mostre o maior e o menor deles”

Entendo o programa:

Na aula passada (aula 6, clique aqui para ver) fizemos um programa parecidíssimo com este, a unica diferença era que ele só exibia o maior numero, e agora precisamos exibir o maior e o menor.
Para isso vamos utilizar praticamente o mesmo código, mudando algumas coisinhas para fazer ele mostrar o menor numero. E então dividimos o código em duas funções (veja aula sobre funções) : uma para o menor numero, e a outra para o maior. Assim:

#o código fico beeeem grande...
def maior():
    if n1 > n2 and n3 and n1:
        print n1, 'é o maior numero!!'
    elif n2 > n1 and n3:
        print n2,'é o maior numero!!'
    elif n3 > n1 and n2:
        print n3,'é o maior numero!!'

    #Se alguns numeros forem iguais

    elif n1 == n2 and n1 and n2 > n3:
        print n1,'é','o maior!!'
    elif n1 == n3 and n1 and n3 > n2:
        print n1,'é','o maior!!'
    elif n2 == n3 and n2 and n3 > n1:
        print n2,'é','o maior!!'
    #todos os numeros iguais
    elif n1 == n2 and n3:
        print 'todos o numeros são iguais'

def menor():
    if n1 < n2 and n3 and n1:
        print n1, 'é o menor numero!!'
    elif n2 < n1 and n3:
        print n2,'é o menor numero!!'
    elif n3 < n1 and n2:
        print n3,'é o menor numero!!'

    #Se alguns numeros forem iguais

    elif n1 == n2 and n1 and n2 < n3:
        print n1,'é','o menor!!'
    elif n1 == n3 and n1 and n3 < n2:
        print n1,'é','o menor!!'
    elif n2 == n3 and n2 and n3 < n1:
        print n2,'é','o menor!!'

O Programa Completo:

n1 = input('Digite o 1° numero: ')
n2 = input('Digite o 2° numero: ')
n3 = input('Digite o 3° numero: ')

def maior():
    if n1 > n2 and n3 and n1:
        print n1, 'é o maior numero!!'
    elif n2 > n1 and n3:
        print n2,'é o maior numero!!'
    elif n3 > n1 and n2:
        print n3,'é o maior numero!!'

    #Se alguns numeros forem iguais

    elif n1 == n2 and n1 and n2 > n3:
        print n1,'é','o maior!!'
    elif n1 == n3 and n1 and n3 > n2:
        print n1,'é','o maior!!'
    elif n2 == n3 and n2 and n3 > n1:
        print n2,'é','o maior!!'
    #todos os numeros iguais
    elif n1 == n2 and n3:
        print 'todos o numeros são iguais'

def menor():
    if n1 < n2 and n3 and n1:
        print n1, 'é o menor numero!!'
    elif n2 < n1 and n3:
        print n2,'é o menor numero!!'
    elif n3 < n1 and n2:
        print n3,'é o menor numero!!'

    #Se alguns numeros forem iguais

    elif n1 == n2 and n1 and n2 < n3:
        print n1,'é','o menor!!'
    elif n1 == n3 and n1 and n3 < n2:
        print n1,'é','o menor!!'
    elif n2 == n3 and n2 and n3 < n1:
        print n2,'é','o menor!!'

maior()   #chama metodo para descubrir o maior
menor()   #chama metodo para descubrir o menor

Saídas:

Saida1:

>>>
Digite o 1° numero: 5
Digite o 2° numero: 5
Digite o 3° numero: 1
5 é o maior!!
1 é o menor numero!!
>>>

Saida2:

>>>
Digite o 1° numero: 3
Digite o 2° numero: 3
Digite o 3° numero: 3
todos o numeros são iguais
>>>

Saida3

>>>
Digite o 1° numero: 5
Digite o 2° numero: 8
Digite o 3° numero: 3
8 é o maior numero!!
5 é o menor numero!!
>>>

SE VOCÊ GOSTOU CLIQUE AQUI!!

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 06 de March de 2012 às 22:37

powerpython

Sejam bem vindos a mais uma aula de Python!!!

Funções“Funções são blocos de código com nome e argumentos (algumas funções não possuem argumentos), usadas para realizar tarefas. Algumas funções já estão presentes no interpretador, como exemplo a usada no cálculo do seno de um ângulo que está presente na biblioteca math.sin de Python, ou até função print”

Criando funções em Python!

É muito simples criar funções, vamos imaginar que temos de fazer um programa que usa muito essa instrução:

print 'Código registrado com sucesso'
print 'Digite outro Código: '

E em vez de sempre ficar escrevendo sempre de novo, criamos uma função para isso:

def codigo(): #codigo é o nome da função
    print 'Código registrado com sucesso'
    print 'Digite outro Código: '

codigo()     #assim que chamamos a função

Argumentos para funções:

Também podes fazer argumentos para nossas funções.
Imaginamos que temos de fazer uma função como esta:

n = input("digite um numero: ")

def teste():
    if n >= 5:
        print 'é maior que 5'
    elif n <= 5:
        print 'é menor que 5'

Só que imagine que em vez da variável n, queremos fazer toda essa função só que com outra variável. Então em vez de colocar n colocamos o valor de var( poderia ser qualquer outro nome). Exemplo:

n1 = input('Digite um numero: ')
n2 = input('Digite segundo numero: ')

def teste(var):
    if var >= 5:
        print 'é maior que 5'
    elif var <= 5:
        print 'é menor que 5' 

teste(var = n1)   #realiza teste com n1
teste(var = n2)   #realiza teste com n2

SE VOCÊ GOSTOU CLIQUE AQUI!!

DEIXE SUAS  DUVIDAS NOS COMENTÁRIOS, OU ENVIE UM EMAIL PARA: powerpython@hotmail.com.br.

Me segue no Twitter !!: @powerpython

COMENTEM!!


por powerpython em 06 de March de 2012 às 17:30

Elcio Luiz Ferreira

PUG - PE

Convite para o XIX Encontro do PUG-PE

Olá pessoal,

Segue o convite a todos interessados em participar do nosso XIX Encontro do Grupo de Usuários de Python de Pernambuco que será realizado nesta edição nas dependência do Auditório do prédio do ITBC sediado no Recife Antigo na rua da guia, no dia 08/03 (Quinta-feira) a partir das 19:00.

Convite para o XIX Encontro do PUG-PE

Convite para o XIX Encontro do PUG-PE

Site com  programação: http://pug.pe

Teremos palestras sobre Django e PyGame com os membros Fernando Rocha, Gileno Filho e Matheus Melo respectivamente.   Estas palestras focam no desenvolvimento de Django com tópicos avançados (vale a pena assistir a todos que já trabalham com Django) na fases de desenvolvimento, tdd e deploy.  Na palestra do Matheus, ele apresentará como desenvolver jogos iniciais com PyGame.  Vale a pena assistir! Fora as palestras relâmpagos e o bom networking gerado durante estes encontros. :D

O encontro é gratuito, e para quem não conhece Python eis uma excelente oportunidade de conhecer a plataforma de maior crescimento em 2010 segundo o índice Tiobe [2]. É uma linguagem de programação multi-plataforma e multi-paradigma presente em diversos nichos desde computação científica, web, embarcados e até gráfica! Para mais informações ver a entrevista do Marcel, moderador do grupo sobre a plataforma Python [3]. Uma ótima oportunidade de fazer networking, aprendizado e conversar sobre software livre e desenvolvimento colaborativo! Participe da nossa lista de discussão para troca de idéias [4]. O evento está sendo patrocinado pelas startups pernambucanas Orygens, Idealizza e Hostech e com apoio da Softex.

[1] http://pug.pe

[2] http://www.geeks3d.com/20110121/tiobe-index-january-2011-python-wins-the-tiobe-programming-language-award-of-2010/

[3] http://www.citi.org.br/blog/2010/12/14/python-entenda-a-tecnologia/

[4] https://groups.google.com/group/pug-pe?hl=pt

Aguardamos a presença de todos!

Atenciosamente,

Equipe PUG-PE


por marcelcaraciolo em 06 de March de 2012 às 12:13