Post on 29-Jun-2015
Por que Python?10 razoes para aprender Python
Marco Andre Lopes Mendes <marcoandre@gmail.com>
23 de agosto de 2011
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
Python Brasil[7]Encontro brasileiro da comunidade Python
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
Uma breve introducaodesse que vos fala
1 Mestre em Ciencia da Computacao pela UFSC
2 Professor desde 1995
1 Usuario Unix desde 1992 e Linux desde 1999
2 Entusiasta de software de codigo aberto
1 Membro da comunidade Python desde 2004
2 Membro-fundador da Associacao Python Brasil (APyB)
3 Membro da diretoria da APyB
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
Uma breve introducaoSobre a linguagem
1 Criada por Guido van Rossum em 1991
2 Origem do nome: grupo de humoristasMonty Python
3 Linguagem de altıssimo nıvel (VHLL)
4 Sintaxe simples e facil de ser assimilada
5 Orientada a objetos, estruturada e funcional
6 Tipagem forte e dinamica
7 Multiplataforma
8 Interpretada
9 Ambiente interativo
10 Licenca compatıvel com a GPL
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
1 - Python e legal
arquivo = open("emails.txt")
dominios = {}
for contato in arquivo:
resto , dominio = contato.split("@")
dominio = dominio.replace("\r\n", "")
if dominio in dominios:
dominios[dominio] += 1
else:
dominios[dominio] = 1
arquivo.close ()
arquivo = open("dominios.txt", "w")
for dominio in dominios.keys ():
registro = "%s;%s\n" %(dominio , dominios[dominio ])
arquivo.write(registro)
arquivo.close ()
1 Simples
2 Legıvel
3 Clara
4 Simplificada
5 Sofisticada
6 Poderosa
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
2 - Python ja vem com os acessorios
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
3 - Python e utilizado la fora
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
3 - Python e utilizado la fora
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
3 - Python e utilizado la fora
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
4 - Python e utilizado aqui dentro
LZT: AutoSystem
Async: Stoq
Instituto Nokia de Tecnologia
InVesalius
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
5 - Python e utilizado na web ao redor do mundo
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
5 - Python e utilizado na web ao redor do mundo
Diversos frameworks
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
6 - Python e utilizado na web aqui no Brasil
globo.com
uiner.com
vericia.com
brasil.gov.br
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
6 - Python e utilizado na web aqui no Brasilucs.br
serpro.gov.br
certsign.com.br
atepassar.com.br
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
7 - Tem emprego para programadores Pythonpython.org/community/jobs
twitter.com/python_jobs
empregos.trovitbrasil.com.br/python
google.com.br/intl/en/jobs/
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
8 - Python conversa com as outras linguagens
C e C++
void initspam(void);
static PyObject *spam_system(PyObject *self , PyObject *args);
static PyObject *spam_system(self , args)
PyObject *self;
PyObject *args; {
char *orden; int sts;
if (! PyArg_ParseTuple(args , "s", &orden))
return NULL;
sts = system(orden );
return Py_BuildValue("i", sts); }
static PyMethodDef SpamMethods [] = {
{"system", spam_system , METH_VARARGS},
{NULL , NULL} };
void
initspam (){( void) Py_InitModule("spam", SpamMethods );}
int main(int argc , char **argv){
Py_SetProgramName(argv [0]);
Py_Initialize ();
initspam ();
return 1; }
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
8 - Python conversa com as outras linguagens
import javax.swing as libswing
pnumero = libswing.JOptionPane.showInputDialog("Digite um Numero Inteiro: ")
snumero = libswing.JOptionPane.showInputDialog("Digite um Numero Inteiro: ")
soma = int(pnumero) + int(snumero)
libswing.JOptionPane.showMessageDialog(None , "Soma: %d " % soma)
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
8 - Python conversa com as outras linguagens
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import *
class FormV3(Form):
def __init__(self):
self.Text = ’Hello World ’
self.Controls.Add(Label(Text=’Enter Message:’))
self.txtMessage = TextBox(Left =100)
self.Controls.Add(self.txtMessage)
msgButton = Button(Text=’Message ’, Left =20, Top =25)
msgButton.Click += self.OnMsgButtonClick
self.Controls.Add(msgButton)
def OnMsgButtonClick(self , *args):
MessageBox.Show(self.txtMessage.Text ,"Message")
Application.Run(FormV3 ())
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
8 - Python conversa com as outras linguagens
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
9 - Python e multiplataforma
Ate aqui, nada de surpreendente, certo?
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
9 - Python e multiplataforma
XO/OLPCGrande parte do projeto e desenvolvida em Python, incluindo:
1 A interface grafica Sugar
2 Varias aplicacoes e jogos
3 O sistema de arquivos
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
9 - Python e multiplataforma
Dispositivos moveis
Maemo
Android
Iphone
Symbian
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
10 - Python e multiparadigma
Programacao Estruturada
import random
def jogaDados ():
dado1 = random.randrange (1,7)
dado2 = random.randrange (1,7)
somaTemp = dado1 + dado2
print "Jogador tirou %d + %d = %d" %(dado1 ,dado2 ,somaTemp)
return somaTemp
soma = jogaDados ()
if soma == 7 or soma == 11:
situacaoJogo = "GANHOU"
elif soma == 2 or soma == 3 or soma == 12:
situacaoJogo = "PERDEU"
else:
situacaoJogo = "CONTINUA"
meuPonto = soma
print "Ponto: ", meuPonto
while situacaoJogo == "CONTINUA":
soma = jogaDados ()
if soma == meuPonto: situacaoJogo = "GANHOU"
elif soma == 7: situacaoJogo = "PERDEU"
if situacaoJogo == "GANHOU": print "Jogador ganha"
else: print "Jogador perde"
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
10 - Python e multiparadigma
Programacao Orientada a Objetos
class Fracao(object ):
def __mdc(self , m, n):
if m % n == 0:
return n
else:
return self.__mdc(n, m%n)
def __init__(self , numerador , denominador =1):
g = self.__mdc(numerador , denominador)
self.numerador = numerador / g
self.denominador = denominador / g
def __repr__(self):
return "%d/%d" %(self.numerador ,
self.denominador)
def __mul__(self ,outro):
if isinstance(outro , int):
outro = Fracao(outro)
return Fracao(self.numerador * outro.numerador ,
self.denominador * outro.denominador)
__rmul__ = __mul__
python -i poo -fracoes.py
>>> a = Fracao (5,7)
>>> b = Fracao (3,4)
>> r1 = a * b
>>> print r1
15/28
>>> c = Fracao (3,5)
>> r2 = a * c
>>> print r2
3/7
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
10 - Python e multiparadigma
Programacao Funcional
# Primos menores que 1000
print filter(None ,map(lambda y:y*reduce(lambda x,y:x*y!=0,
map(lambda x,y=y:y%x,range(2,int(pow(y,0.5)+1))) ,1) , range (2 ,1000)))
# Fibonacci : 10 primeiros numeros
print map(lambda x,f=lambda x,f:(x<=1) or (f(x-1,f)+f(x-2,f)): f(x,f),
range (10))
# Conjunto de Mandelbrot
print (lambda Ru ,Ro,Iu ,Io,IM,Sx ,Sy:reduce(lambda x,y:x+y,map(lambda y,
Iu=Iu,Io=Io ,Ru=Ru,Ro=Ro,Sy=Sy,L=lambda yc,Iu=Iu ,Io=Io,Ru=Ru,Ro=Ro,i=IM,
Sx=Sx,Sy=Sy:reduce(lambda x,y:x+y,map(lambda x,xc=Ru,yc=yc,Ru=Ru ,Ro=Ro ,
i=i,Sx=Sx,F=lambda xc ,yc,x,y,k,f=lambda xc ,yc,x,y,k,f:(k<=0)or (x*x+y*y
>=4.0) or 1+f(xc ,yc,x*x-y*y+xc ,2.0*x*y+yc,k-1,f):f(xc ,yc,x,y,k,f):chr(
64+F(Ru+x*(Ro-Ru)/Sx ,yc ,0,0,i)),range(Sx))):L(Iu+y*(Io-Iu)/Sy),range(Sy
))))( -2.1 , 0.7, -1.2, 1.2, 30, 80, 24)
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
Bonus 1: 11 - Python e boa como primeira linguagemaprenda a programar com Python
1 Experiencia de ensino desde 2004
2 Varios iniciativas no Brasil e no mundo
3 MIT copiou nossa ideia :)
4 Faz bem a auto-estima do iniciante
5 Uso pode ser extrapolado para outras materias
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
Bonus 2: 12 - Existe uma comunidade fortevoce tem com quem contar
1 Lista python-brasil: +3650 membros, 500 mensagens/mes.
2 Associacao Python Brasil: amadurecimento da comunidade
3 PythonBrasil[7]: Sao Paulo
4 FISL, Latinoware: trilhas de Python
5 Grupos de Usuarios, PythOn Campus, #horaextra
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
Dorneles Tremea: 1979 - 2011
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?
1 Estes slides: slideshare.com/marrcandre
2 google*: marcoandre@gmail.com
3 twitter: @marrcandre
4 blog: marrcandre.blogspot.com
random.choice([’pergunta’, ’duvida’, ’discussao’])
Marco Andre Lopes Mendes <marcoandre@gmail.com> Por que Python?