Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Python? Até vovó consegue!

Python? Até vovó consegue!

Apresentação básica com dicas e um overview sobre a linguagem pra quem está começando. (http://omadson.wordpress.com)

Madson Dias

April 14, 2016
Tweet

More Decks by Madson Dias

Other Decks in Programming

Transcript

  1. Ceará Python? Todo mundo consegue! Madson L Dantas Dias April

    8, 2017 Laborat´ orio de Inteligˆ encia Artificial (LIA) Programa de P´ os-Gradua¸ c˜ ao em Ciˆ encia da Computa¸ c˜ ao (PPGCC) Instituto Federal do Cear´ a (IFCE)
  2. Ceará Python? At´ e vov´ o consegue! Madson L Dantas

    Dias April 8, 2017 Laborat´ orio de Inteligˆ encia Artificial (LIA) Programa de P´ os-Gradua¸ c˜ ao em Ciˆ encia da Computa¸ c˜ ao (PPGCC) Instituto Federal do Cear´ a (IFCE)
  3. Agenda 1. O que ´ e Python? 2. Por que

    Python? 3. ´ E s´ o falat´ orio? 4. Por onde come¸ car? 5. Envolva-se Python? At´ e vov´ o consegue! – Madson L Dantas Dias 1
  4. Python Python ´ e um gˆ enero de r´ epteis

    da fam´ ılia Pythonidae. Pode ser encontrado na ´ Asia e ´ Africa. Popularmente s˜ ao denominadas de pit˜ ao (portuguˆ es europeu) ou p´ ıton (portuguˆ es brasileiro) [1]. Python ´ e uma linguagem de programa¸ c˜ ao de alto n´ ıvel [8]. Python? At´ e vov´ o consegue! – Madson L Dantas Dias 2
  5. Um pouco de hist´ oria... [3] A cria¸ c˜ ao

    [2] • Criada por Guido Van Rossum • Aumentar a produtividade do programador! • A linguagem ABC • O nome Linha do tempo [4] • 1982 – Concep¸ c˜ ao • 1989 – Hands on • 1991 – Primeira Release (0.9.0) • · · · • 2008 – 2.6 e 3.0 Fig. 1: O ditador Python? At´ e vov´ o consegue! – Madson L Dantas Dias 4
  6. Python • C´ odigo aberto! • Script • Multi paradigma

    • Procedural • Orientada a Objetos • E muito mais! • Tipagem dinˆ amica e forte • Alta expressividade • Baterias Inclu´ ıdas • Melhor que Java, mas isso vocˆ es j´ a sabiam. Python? At´ e vov´ o consegue! – Madson L Dantas Dias 5
  7. Por que python? • Simplicidade Python? At´ e vov´ o

    consegue! – Madson L Dantas Dias 6
  8. Simplicidade Se livrando da maldi¸ c˜ ao! Python? At´ e

    vov´ o consegue! – Madson L Dantas Dias 7
  9. Simplicidade C++ (∼5 linhas) 1 #include <iostream> 2 int main()

    3 { 4 std::cout << "Hello World!"; 5 } Python? At´ e vov´ o consegue! – Madson L Dantas Dias 8
  10. Simplicidade Java (∼5 linhas) 1 public class HelloWorld { 2

    public static void main(String[] args) { 3 System.out.println("Hello, World"); 4 } 5 } Python? At´ e vov´ o consegue! – Madson L Dantas Dias 9
  11. Simplicidade Python (Precisa contar?) 1 print "Hello, world" Python? At´

    e vov´ o consegue! – Madson L Dantas Dias 10
  12. Simplicidade mesmo! Lembra da sequˆ encia de fibonacci? φ =

    {1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, · · · } Python? At´ e vov´ o consegue! – Madson L Dantas Dias 11
  13. Simplicidade mesmo! C++ (∼12 linhas) 1 #include <iostream> 2 using

    namespace std; 3 int fib(int x) { 4 if (x == 1) { 5 return 1; 6 } else { 7 return fib(x-1)+fib(x-2); 8 } 9 } 10 int main() { 11 cout << fib(9) << endl; 12 } Python? At´ e vov´ o consegue! – Madson L Dantas Dias 12
  14. Simplicidade mesmo! Java (∼12 linhas) 1 public class Fib {

    2 static long fib(int n) { 3 if (n < 2) { 4 return n; 5 } else { 6 return fib(n-1) + fib(n-2); 7 } 8 } 9 public static void main(String[] args) { 10 System.out.print(Fib.fib(9) + "\n"); 11 } 12 } Python? At´ e vov´ o consegue! – Madson L Dantas Dias 13
  15. Simplicidade mesmo! Python (5 linhas) 1 def fib(n): 2 if

    n==1 or n==2: 3 return 1 4 return fib(n-1)+fib(n-2) 5 print fib(9) Python? At´ e vov´ o consegue! – Madson L Dantas Dias 14
  16. Simplicidade mesmo, mesmo! Pal´ ındromos • 1234321 • “A sogra

    m´ a e amargosa” (isso ´ e mentira!) • · · · Python? At´ e vov´ o consegue! – Madson L Dantas Dias 15
  17. Simplicidade mesmo, mesmo! C++ (∼22 linhas) 1 #include <iostream> 2

    using namespace std; 3 string palindrome(string txt) 4 { 5 bool palindrono = true; 6 int tInv = 0; 7 for (int i = txt.length() -1; i > 0; i--) 8 { 9 tInv = txt.length() - i - 1; 10 if (txt.substr(i, 1) != txt.substr(tInv, 1)) 11 { 12 palindrono = false; 13 break; 14 } 15 } 16 return (palindrono ? "Palindrome" : "Not palindrome"); 17 } 18 int main(void) 19 { 20 string txt = "mussum"; 21 cout << endl << palindrome(txt); 22 } Python? At´ e vov´ o consegue! – Madson L Dantas Dias 16
  18. Simplicidade mesmo, mesmo! Java (∼14 linhas) 1 package pal; 2

    public class Pal { 3 public static void main(String[] args) { 4 String txt = "mussum"; 5 System.out.println(new Pal().palindrome(txt)); 6 } 7 private String palindrome(String txt) { 8 char[] characters = txt.toCharArray(); 9 String tInv = ""; 10 for (int i = characters.length - 1; i >= 0; i--) 11 tInv = tInv + characters[i]; 12 return (txt.equals(tInv)) ? "Palindrome" : "Not palindrome"; 13 } 14 } Python? At´ e vov´ o consegue! – Madson L Dantas Dias 17
  19. Simplicidade mesmo, mesmo! Python (6 linhas) 1 def palindrome(txt): 2

    if str(txt) == str(txt)[::-1]: 3 return "Palindrome" 4 return "Not palindrome" 5 txt = "mussum" 6 print palindrome(txt) Python? At´ e vov´ o consegue! – Madson L Dantas Dias 18
  20. Por que python? • Simplicidade • Multiplataforma Python? At´ e

    vov´ o consegue! – Madson L Dantas Dias 19
  21. Multiplataforma • Unix ;) • Windows Windows Ruindows – Vai

    ter que baixar • WEB – Django, Pyramid, Flask, web2py, Bottle, · · · • Android – SL4A, Kivy • Arduino – PyFirmata • Microcontroladores – Micropython • Java, Java? – Jython • · · · Python? At´ e vov´ o consegue! – Madson L Dantas Dias 20
  22. Por que python? • Simplicidade • Multiplataforma • Muita gente

    usa Python? At´ e vov´ o consegue! – Madson L Dantas Dias 21
  23. Muita gente usa “Python tem sido uma importante parte do

    Google desde o in´ ıcio, e continua sendo ` a medida que o sistema cresce e evolui. Hoje, d´ uzias de engenheiros do Google utilizam Python, e estamos ` a procura de mais pessoas com habilidades nesta linguagem.” Fig. 2: Peter Norvig Teach Yourself Programming in Ten Years – Blog post Artificial Intelligence – Online Code Repository Python? At´ e vov´ o consegue! – Madson L Dantas Dias 22
  24. Muita gente usa Fig. 3: ´ Indice de popularidade de

    linguagens (08 de Abril de 2017) Python? At´ e vov´ o consegue! – Madson L Dantas Dias 23
  25. Muita gente usa Tabela 1: 5 linguagens de programa¸ c˜

    ao mais populares (fonte: TIOBE) Mar¸ co 2017 Mar¸ co 2016 Mudan¸ ca Linguagem Parcela (%) 1 1 Java 16.38 2 2 C 7.74 3 3 C++ 5.18 4 4 C# 4.40 5 5 Python 3.91 Python? At´ e vov´ o consegue! – Madson L Dantas Dias 24
  26. Muita gente usa (Brasil) SERPRO R Python? At´ e vov´

    o consegue! – Madson L Dantas Dias 26
  27. Muita gente usa (Cear´ a) Python? At´ e vov´ o

    consegue! – Madson L Dantas Dias 27
  28. Por que python? • Simplicidade • Multiplataforma • Muita gente

    usa • O Zen do python Python? At´ e vov´ o consegue! – Madson L Dantas Dias 29
  29. Um pouco do Zen do python [6] • Bonito ´

    e melhor que feio, expl´ ıcito ´ e melhor que impl´ ıcito, simples ´ e melhor que complexo e complexo ´ e melhor que complicado. • Casos especiais n˜ ao s˜ ao especiais o bastante para quebrar as regras. • Agora ´ e melhor que nunca, mas as vezes nunca ´ e melhor que j´ a. • Deveria haver um modo ´ obvio para fazer algo. Embora esse modo possa n˜ ao ser ´ obvio a princ´ ıpio a menos que vocˆ e seja holandˆ es. • Se a implementa¸ c˜ ao ´ e dif´ ıcil de explicar, ´ e uma m´ a id´ eia. Se a implementa¸ c˜ ao ´ e f´ acil de explicar, pode ser uma boa id´ eia. Python? At´ e vov´ o consegue! – Madson L Dantas Dias 30
  30. Por que python? • Simplicidade • Multiplataforma • Muita gente

    usa • O Zen do python • ´ E divertido! Python? At´ e vov´ o consegue! – Madson L Dantas Dias 31
  31. Calma a´ ı... Instalar o pip... O que ´ e

    pip? Pip Installs Packages ou Pip Installs Python [7] 1 sudo apt-get install python-pip Agora sim, mas como usar? 1 sudo pip install qualquer-coisa Python? At´ e vov´ o consegue! – Madson L Dantas Dias 34
  32. Dicas divinas [5] • Esque¸ ca begin e end •

    Esque¸ ca { e } • Esque¸ ca ; • Nunca esque¸ ca de identar! Python? At´ e vov´ o consegue! – Madson L Dantas Dias 35
  33. Falar ´ e f´ acil. Me mostre o c´ odigo!

    “Talk is cheap. Show me the code.” – Linus Torvalds Python? At´ e vov´ o consegue! – Madson L Dantas Dias 36
  34. O que posso fazer com python? Criar p´ aginas web!

    (Bottle) 1 sudo pip install bottle 1 from bottle import route, run, template, url 2 3 @route("/") 4 def index(): 5 return template("index.html", url=url) 6 7 run(host=’localhost’, port=8080) Dificil? Python? At´ e vov´ o consegue! – Madson L Dantas Dias 37
  35. O que posso fazer com python? Xingar muito no twitter!

    (Twython) 1 sudo pip install twython 1 from twython import Twython 2 3 apiKey = ’’ 4 apiSecret = ’’ 5 oathToken = ’’ 6 oathTokenSecret = ’’ 7 8 twitter = Twython(apiKey, apiSecret, oathToken, oathTokenSecret) 9 10 twitter.update_status(status=’Flisol 2017 <3’) ... o que ´ e apiKey, apiSecret, oathToken e oathTokenSecret? Resposta Python? At´ e vov´ o consegue! – Madson L Dantas Dias 38
  36. O que posso fazer com python? Acabar com a solid˜

    ao! (Telepot) 1 sudo pip install telepot 1 # coding: utf8 2 import telepot, time 3 4 def handle(msg): 5 content_type, chat_type, chat_id = telepot.glance(msg) 6 if (content_type == ’text’): 7 if ’/oi’ in msg[’text’]: 8 bot.sendMessage(chat_id, "Oi, tudo bem?") 9 10 bot = telepot.Bot(’’) 11 bot.message_loop(handle) 12 13 while True: 14 time.sleep(1) ... como conseguir um Token? Resposta Python? At´ e vov´ o consegue! – Madson L Dantas Dias 39
  37. O que posso fazer com python? • Interfaces gr´ aficas

    (GUI) – Tkinter, PySide, WxPython, PyObjC • Processamento de Imagens – PIL, scikit-image, OpenCV • Minera¸ c˜ ao de dados – urllib, Selenium, BeautifulSoup, Scrapy • Computa¸ c˜ ao Cient´ ıfica – Numpy, Scipy, Pandas, Scikit-learn Python? At´ e vov´ o consegue! – Madson L Dantas Dias 40
  38. O que quase n˜ ao posso fazer com python? •

    Em teoria, pode-se fazer tudo! – python ´ e Turing Completa ;) • Python n˜ ao ´ e muito bom com threads! :( • Aplica¸ c˜ oes que exigem manipula¸ c˜ oes de baixo-n´ ıvel Python? At´ e vov´ o consegue! – Madson L Dantas Dias 41
  39. Por onde come¸ car? Livros • Aprenda a Programar –

    Luciano Ramalho (@ramalhoorg) • Python para Desenvolvedores – Luiz Eduardo Borges (@ark4n) V´ ıdeo Aulas • Python para Zumbis – Fernando Masanori (@fmasanori) • Curso de Python 3 – Gustavo Guanabara (@guanabara) • Python e Django para Iniciantes – Allisson Azevedo (@allisson) Cursos gratuitos (Um pouco “avan¸ cados” ...) • Machine Learning – Coursera • Statistical Learning – Stanford Python? At´ e vov´ o consegue! – Madson L Dantas Dias 42
  40. Garanta j´ a a sua! Apresenta¸ c˜ ao dispon´ ıvel

    em: https://speakerdeck.com/omadson Esta apresenta¸ c˜ ao est´ a licenciada sobre uma licen¸ ca Creative Commons cba Python? At´ e vov´ o consegue! – Madson L Dantas Dias 44
  41. Referˆ encias I A. B. d. H. Ferreira. Novo dicion´

    ario da l´ ıngua portuguesa. Nova Fronteira, 1986. N. Hamilton. The az of programming languages: Python. Computerworld, 2008. M. Leno. A hist´ oria do python, oct 2014. M. Lutz. Learning python. ” O’Reilly Media, Inc.”, 2013. R. S. Oliveira. Introdu¸ c˜ ao ` a linguagem de programa¸ c˜ ao python, aug 2010. Python? At´ e vov´ o consegue! – Madson L Dantas Dias
  42. Referˆ encias II T. Peters. Pep 20 – the zen

    of python, aug 2004. Umair. What does pip stand for?, nov 2014. B. Venners. The making of python: A conversation with guido van rossum, part i. Artima Developer (Jan. 2003). url: http://www. artima. com/intv/pythonP. html, 2012. Python? At´ e vov´ o consegue! – Madson L Dantas Dias