Python:
 simples e produtiva




Álvaro Justen aka Turicas
   http://twitter.com/turicas
   http://github.com/turicas
http://CursoDeArduino.com.br/
Álvaro Justen aka Turicas, prazer!




      www.CursoDeArduino.com.br
          @turicas
alvaro@CursoDeArduino.com.br
História




Guido van Rossum
Aplicações
●   Shell scripts
●   Administração de sistemas/redes
●   Aplicações científicas
●   Computação gráfica
●   Jogos
●   Interfaces com o usuário/GUI
●   Aplicações Web
●   Robótica
●   “glue-language”
●   ...
Principais características
●   Uso geral
●   Interpretada, VHLL
●   Criada por Guido van Rossum em 1989
●   Multiplataforma
●   OO, Procedural e funcional
●   Software livre
●   Baterias incluídas!
●   Sintaxe elegante, simples e clara
●   Tipagem dinâmica e forte
Por que Python?

●   Fácil de aprender
●   Poderosa
●   Alta produtividade
●   Estruturas de dados de alto nível
● Blocos de código são delimitados por
indentação! (?)
Quem usa? Onde é usada?
●   YouTube
●   Google/Google App Engine
●   NASA
●   Industrial Light & Magic
●   Globo.com
●   ...
●

●   GIMP
●   Blender
●   Ubuntu
●   ...
Onde roda?

●   GNU/Linux
●   Mac OS
●   *nix
●   Windows
●   Android
●   Nokia S60
●   Microcontroladores
●   ...
Como instalar?


  GNU/Linux e Mac OS: já tem!

    Windows: www.python.org

Android: Android Scripting Layer
             (SL4A)
iPython

●   Debian/Ubuntu/derivados:
    sudo aptitude install ipython

●   Dica: no Ubuntu:
    sudo apt-get install aptitude
Tipos básicos
●   Inteiro: 42
●   Ponto flutuante: 3.14
●   Complexo (!): 1.5 + 5.3j
●   String: “””minha string”””
●   Tuplas: (1, “aaa”)
●   Listas:
    [1, 2.3, “abc”, [1, “b”]]
●   Dicionários:
    {'a': 1, 2: 'b', [1, 2]: [3, 4]}
Nada de parênteses,
           nada de chaves!
if expressao1:
    comando1
    if expressao2:
        comando2
    elif expressao3:
        comando3
elif expressao4:
    comando4
else:
    comando5
Listas, strings e slices
In [1]: l = [1, 3, 4, 'LdG', 'Arduino']

In [2]: print l[1]
3

In [3]: print l[1:4]
[3, 4, 'LdG']

In [4]: for elemento in l:
    ....:    print elemento
    ....:
    ....:
1
3
4
LdG
Arduino
Listas, strings e slices (2)
In [5]: virus = 'nome-do-virus.exe'

In [6]: print virus[-3:]
exe

In [7]: print virus[5:]
do-virus.exe

In [8]: print virus.split('.')
['nome-do-virus', 'exe']

In [9]: novo_virus = 'nome.do.virus.exe'

In [10]: print novo_virus.split('.')
['nome', 'do', 'virus', 'exe']

In [11]: print novo_virus.split('.')[-1]
exe

In [12]: print 'nome.do.virus.pl'.split('.')[-1]
pl
Trabalhando com arquivos


arquivo = open('nome.txt')
for linha in arquivo:
    print linha

arquivo_2 = open('nome-2.txt', 'w')
arquivo_2.write('Python rules!')
arquivo_2.close()
Baterias incluídas!
   sys, os, re, string, zlib
   socket, urrlib, httplib, imaplib
   time, datetime, math, random
   doctest, unittest, xml, xmlrpclib
   struct, pickle, cPickle, threading
   logging, decimal
   ...
Navegando com Python




import urllib
url = 'http://www.CursoDeArduino.com.br/'
pagina = urllib.urlopen(url)
print pagina.read()
Rola?




   +
pySerial - Instalação

●   Debian/Ubuntu/derivados:
    sudo aptitude install python-serial


●   Dica: no Ubuntu:
      sudo apt-get install aptitude
Comandando o Arduino
           com Python


import serial
porta = '/dev/ttyUSB0'
baud_rate = 9600
arduino = serial.Serial(porta, baud_rate)
arduino.write('H')
print arduino.read()
arduino.close()
Onde aprender?
●   Tutoriais:
             http://www.python.org.br/
          http://docs.python.org/tutorial
               “Google Python Class”
●   Lista Python-Brasil e locais
●   #python-br @ irc.freenode.net
●   Eventos:
         http://www.PythOnCampus.org/
        http://www.PythonBrasil.org.br/
●   Cursos:
     http://www.WelcomeToTheDjango.com.br/
        http://www.CursoDePython.com.br/
Ficou interessado?




http://CursoDeArduino.com.br/pesquisa
São Paulo
   29/setembro a 1º/outubro


http://www.pythonbrasil.org.br/
http://www.HackNRio.org/
        Dezembro/2011
              na
   Cidade maravilhosa! o/
import this




  http://twitter.com/turicas
  http://github.com/turicas
http://CursoDeArduino.com.br/
  http://blog.justen.eng.br/
 alvaro@CursoDeArduino.com.br

Introdução a linguagem Python: simples e produtiva

  • 1.
    Python: simples eprodutiva Álvaro Justen aka Turicas http://twitter.com/turicas http://github.com/turicas http://CursoDeArduino.com.br/
  • 2.
    Álvaro Justen akaTuricas, prazer! www.CursoDeArduino.com.br @turicas alvaro@CursoDeArduino.com.br
  • 7.
  • 9.
    Aplicações ● Shell scripts ● Administração de sistemas/redes ● Aplicações científicas ● Computação gráfica ● Jogos ● Interfaces com o usuário/GUI ● Aplicações Web ● Robótica ● “glue-language” ● ...
  • 10.
    Principais características ● Uso geral ● Interpretada, VHLL ● Criada por Guido van Rossum em 1989 ● Multiplataforma ● OO, Procedural e funcional ● Software livre ● Baterias incluídas! ● Sintaxe elegante, simples e clara ● Tipagem dinâmica e forte
  • 11.
    Por que Python? ● Fácil de aprender ● Poderosa ● Alta produtividade ● Estruturas de dados de alto nível ● Blocos de código são delimitados por indentação! (?)
  • 12.
    Quem usa? Ondeé usada? ● YouTube ● Google/Google App Engine ● NASA ● Industrial Light & Magic ● Globo.com ● ... ● ● GIMP ● Blender ● Ubuntu ● ...
  • 13.
    Onde roda? ● GNU/Linux ● Mac OS ● *nix ● Windows ● Android ● Nokia S60 ● Microcontroladores ● ...
  • 14.
    Como instalar? GNU/Linux e Mac OS: já tem! Windows: www.python.org Android: Android Scripting Layer (SL4A)
  • 17.
    iPython ● Debian/Ubuntu/derivados: sudo aptitude install ipython ● Dica: no Ubuntu: sudo apt-get install aptitude
  • 18.
    Tipos básicos ● Inteiro: 42 ● Ponto flutuante: 3.14 ● Complexo (!): 1.5 + 5.3j ● String: “””minha string””” ● Tuplas: (1, “aaa”) ● Listas: [1, 2.3, “abc”, [1, “b”]] ● Dicionários: {'a': 1, 2: 'b', [1, 2]: [3, 4]}
  • 19.
    Nada de parênteses, nada de chaves! if expressao1: comando1 if expressao2: comando2 elif expressao3: comando3 elif expressao4: comando4 else: comando5
  • 20.
    Listas, strings eslices In [1]: l = [1, 3, 4, 'LdG', 'Arduino'] In [2]: print l[1] 3 In [3]: print l[1:4] [3, 4, 'LdG'] In [4]: for elemento in l: ....: print elemento ....: ....: 1 3 4 LdG Arduino
  • 21.
    Listas, strings eslices (2) In [5]: virus = 'nome-do-virus.exe' In [6]: print virus[-3:] exe In [7]: print virus[5:] do-virus.exe In [8]: print virus.split('.') ['nome-do-virus', 'exe'] In [9]: novo_virus = 'nome.do.virus.exe' In [10]: print novo_virus.split('.') ['nome', 'do', 'virus', 'exe'] In [11]: print novo_virus.split('.')[-1] exe In [12]: print 'nome.do.virus.pl'.split('.')[-1] pl
  • 22.
    Trabalhando com arquivos arquivo= open('nome.txt') for linha in arquivo: print linha arquivo_2 = open('nome-2.txt', 'w') arquivo_2.write('Python rules!') arquivo_2.close()
  • 23.
    Baterias incluídas!  sys, os, re, string, zlib  socket, urrlib, httplib, imaplib  time, datetime, math, random  doctest, unittest, xml, xmlrpclib  struct, pickle, cPickle, threading  logging, decimal  ...
  • 24.
    Navegando com Python importurllib url = 'http://www.CursoDeArduino.com.br/' pagina = urllib.urlopen(url) print pagina.read()
  • 25.
  • 27.
    pySerial - Instalação ● Debian/Ubuntu/derivados: sudo aptitude install python-serial ● Dica: no Ubuntu: sudo apt-get install aptitude
  • 28.
    Comandando o Arduino com Python import serial porta = '/dev/ttyUSB0' baud_rate = 9600 arduino = serial.Serial(porta, baud_rate) arduino.write('H') print arduino.read() arduino.close()
  • 29.
    Onde aprender? ● Tutoriais: http://www.python.org.br/ http://docs.python.org/tutorial “Google Python Class” ● Lista Python-Brasil e locais ● #python-br @ irc.freenode.net ● Eventos: http://www.PythOnCampus.org/ http://www.PythonBrasil.org.br/ ● Cursos: http://www.WelcomeToTheDjango.com.br/ http://www.CursoDePython.com.br/
  • 30.
  • 31.
    São Paulo 29/setembro a 1º/outubro http://www.pythonbrasil.org.br/
  • 32.
    http://www.HackNRio.org/ Dezembro/2011 na Cidade maravilhosa! o/
  • 33.
    import this http://twitter.com/turicas http://github.com/turicas http://CursoDeArduino.com.br/ http://blog.justen.eng.br/ alvaro@CursoDeArduino.com.br