Introdução ao python

392 visualizações

Publicada em

Introdução ao Python, slides de aula.

Publicada em: Ciências
  • Seja o primeiro a comentar

Introdução ao python

  1. 1. UAPI – Curso de Extensão IInnttrroodduuççããoo aaoo PPyytthhoonn PPrrooff.. MMsscc.. RRaayynneerr GGoommeess SSoouussaa –– rraayynneerrggoommeess@@ggmmaaiill..ccoomm
  2. 2. Objetivo do Curso Mostrar através de um acervo rico de exemplos as principais características da linguagem Python explorando recursos básicos a serem utilizados em uma infinidade de resolução de problemas e desenvolvimento de softwares, além de permitir um avanço gradual em outras plataformas do Python, como p. ex: Django.
  3. 3. História ● Iniciou em 1989 ● Holandês Guido van Rossun ● Homenagem ao programa humorístico Monty Python (adorado pelos Nerds) ● Pronuncia: Páithon ● Principal site: http://www.python.org/
  4. 4. Diversos usos do Python “Scikit-learn, é um dos mais populares projetos para algoritmos de aprendizagem de máquina em python e é claro open-source! Um Sheet cheat para ajudar quem está querendo ter uma overview dos algoritmos disponíveis!” Fonte: scikit-learn.org
  5. 5. Diversos usos do Python “Django é um framework para desenvolvimento rápido para web, escrito em Python, que utiliza o padrão MTV/MVC (model - template - view). Foi criado originalmente como sistema para gerenciar um site jornalístico na cidade de Lawrence, no Kansas. Tornou-se um projeto de código aberto e foi publicado sob a licença BSD em 2005. O nome Django foi inspirado no músico de jazz Django Reinhardt.” Fonte: http://pt.wikipedia.org/wiki/Django_(framework_web)
  6. 6. Diversos usos do Python “Twisted is an event-driven networking engine written in Python and licensed under the open source”
  7. 7. Diversos usos do Python
  8. 8. Interface Gráfica - Tkinter https://wiki.python.org/moin/TkInter
  9. 9. PIthon (Grupo no Facebook) hhttttppss::////wwwwww..ffaacceebbooookk..ccoomm//ggrroouuppss//ppiiaauuii..ppyytthhoonn//
  10. 10. Instalação ● LINUX: ● Heheheh.... na maioria das distibuições o python já vem instalado. ● Windows ● Fazer o download do site e executar o instalador
  11. 11. Interpretador OnLine
  12. 12. Primeiras Observações ● É uma linguagem INTERPRETADA ● O aninhamento é fundamenta! ● Um comando por LINHA.
  13. 13. Executando no LINUX
  14. 14. IDEs ● Eclipse, ou … ● Qualquer editor de texto, ● Ex: ● Notepad ● Gedit ● Vim idle-python
  15. 15. Observações ● Não misture espaços com TABs; ● Comentários: # Docstrings: Docstrings são strings normais ou multilinhas (“”” “””) que têm a função de documentar módulos, classes, funções e métodos. Qualquer string localizada na primeira linha de código de um módulo ou na primeira linha após a definição de classes, funções e métodos.
  16. 16. Exemplo de Comentário e Docstrings
  17. 17. Operadores Bit a bit & AND | OR ^ XOR ~ Inversor >> Deslocamento Dir << Deslocamento Esq Aritméticos + Adição - Subtração * Multiplicação / Divisão // Divisão Inteira % Módulo (resto) ** Potência Lógico == Igualdade != Diferença < Menor > Maior <= Menor igual >= Maior igual in Está contido Not in Não está contido is é Is not Não é and E lógico or OU lógico not Inversor lógico
  18. 18. Exemplo de uso de Operadores Exemplo: exe02.py
  19. 19. Exemplo de uso de Operadores Exemplo: exe03.py Atenção: ● not in ● is not
  20. 20. Operadores de atribuição acumulativa Operador acumulativo Substitui I + = V I = I + V I -= V I = I - V I *= V I = I * V Mesma lógica para todos os outros operadores Desafio 01: Qual será saída de (5 AND 6) OR 7?
  21. 21. Dica de Ouro Após cada desafio tem o código com a implementação da resposta, MAS é importante tentar fazer antes de olhar a resposta. O aprendizado vem com a tentativa de acerto e NÃO com a memorização do código pronto.
  22. 22. Resposta do Desafio 01 Dica: Isto pode ser útil em criptografias simétricas!
  23. 23. Comandos básicos Comando IF if expressão1: Comandos1 [elif expressão N*: ComandosN*:] [else: comandos2] Expressão if (operador ternário) Valor1 if expressão else valor2 Ex: “verdadeiro” if 4 > 3 else “falso” Pode-se ter vários elif!
  24. 24. Exemplo do uso do IF Exemplo: ex04.py
  25. 25. Desafio 02 Desafio 02: Dado três lados de um triângulo verifique se é possível formar um triângulo? E diz se é equilatero, isóceles ou escaleno. A B C Lembre-se: Não é possível formar triângulo quando um lado é maior do que os outros dois!! Lembrete: ● Equilatero: todos lados iguais iguais; ● Isóceles: um lado diferente; ● Escaleno: todos lados diferentes.
  26. 26. Resolução Desafio 02
  27. 27. Comandos de Repetição Comando while while expessão1: Comandos1 [else: comandos2]
  28. 28. Desafio 03 Faça um programa que escreva de 0 até 40. Para os múltiplos de 4 ou 10 escreva PIN na tela, quando for o último número escreva “FIM”. Exemplo: PIN 123 PIN 567 PIN 9 PIN … 39 FIM Dica de Matemática: Zero é multiplo de todos os números pois qualquer número vezez 0 é 0.
  29. 29. Resposta do Desafio 03
  30. 30. Comando de Repetição Comando FOR for elemento1, [elemntosN]* IN iterável: Comandos1 else: Comandos2 Listas são iteráveis Adiante será estudado Listas
  31. 31. Uso da função range() >>> help(range) Help on class range in module builtins: class range(object) | range(stop) -> range object | range(start, stop[, step]) -> range object | | Returns a virtual sequence of numbers from start to stop by step. | | Methods defined here: | | __contains__(...) | x.__contains__(y) <==> y in x | | __eq__(...) | x.__eq__(y) <==> x==y
  32. 32. Curiosidade Diferença do range() e xrange() Basicamente, range(n) cria uma lista contendo todos os inteiros de 0..n-1 ocupando memória para todos os seus elementos ao mesmo tempo. Já o xrange(n) retorna um objeto do tipo "xrange" que funciona mantendo apenas um valor na memória de cada vez, sendo este valor obtido de acordo com o índice solicitado. Fonte: http://b.martinusso.com/2012/08/diferenca-entre-range-e-xrange-em-python.html
  33. 33. Desafio 04 Faça a tabela de multiplicação dos números 1 até 9. Não precisa desenhar as brodas! Cada Tabuada sequencial!
  34. 34. Resposta do Desafio 04
  35. 35. Quebra de Repetição WHILE e o FOR aceitam os comandos BREAK e CONTINUE: 1. break: força a quebra de execução do bloco de repetição; 2. continue: desvia para o início do bloco de repetição. Exemplo: Veja que os dois blocos de código produzem a mesma saída. Cuidado com o uso do Break e Continue, geralmente são utilizados para deixar o código mais resumido, porém não pode comprometer o entendimento da lógica do código.
  36. 36. Comandos diversos É muito comum o uso do comando try para tratar de exceções nos códigos. Desafio: Faça um programa para ler dois números e dividir o número 1 ao número 2. Analise o caso e veja aonde o try pode ser usado. Exemplo: Tem algum problema este código? Podemos dividir um número por qualquer um?
  37. 37. Uso do try Exemplo: exe10.py
  38. 38. Depurar um programa Depuração é importante para que se possa acompanhar passo a passo a execução de um programa. python -m pdb exe10.py > /home/rayner/curso_python_rayner/exemplos/exe10.py(4)<module>() -> a = input("Numero 1:") (Pdb)
  39. 39. Python Debug = pdb
  40. 40. Pdb – Principais Comandos ● list: Mostra o código e o ponto de execução; ● next: Executa a linha corrente ● step: pula a linha corrente ● help(comando): informações sobre um comando ● quit: sair ● type(variável): mostra o tipo da variável ● print variável: mostra o valor da variável
  41. 41. Exemplo do pdb Abra o último exemplo e use os comandos básicos para aprender o seu funcionamento rayner@silver:~/curso_python_rayner/exemplos$ python -m pdb exe10.py > /home/rayner/curso_python_rayner/exemplos/exe10.py(4)<module>() -> a = input("Numero 1:") (Pdb) next Numero 1:2 > /home/rayner/curso_python_rayner/exemplos/exe10.py(5)<module>() -> b = input("Numero 2:") (Pdb) print a 2 (Pdb) type a *** SyntaxError: invalid syntax (<stdin>, line 1) (Pdb) type(a) <type 'int'>
  42. 42. Funções/Métodos def nome_da_função([parametro1],[parametros*]): comandos1 comandos2 return <valor> rayner@silver:~/curso_python_rayner/exemplos$ cat exe11.py #!/usr/bin/env python # -*- coding:utf-8 -* def multiplica(a,b): return a * b exec("a = multiplica(3,4)") print(a
  43. 43. Comandos Diversos: assert O comando assert permite fazer testes em tempo de execução, quando não satisfeito a condição ele gera uma exceção AssertionError. Geralmente é utilizado com isinstace(valor,tipo)
  44. 44. Números Existem e tipos: inteiros, longos e ponto flutuante. ● Inteiros: ● SO 32 bits = -2¹⁶ .. +2¹⁶ ● SO 64 bits = -2³² .. +2³² ● Longos = tamanho limitado pela memória ● Flutuante = tamanho limitado pela memória Tipos lógicos True e False podem ser expressos por 1 e 0
  45. 45. Print, ponto flutuante e Marcadores
  46. 46. Marcadores Marcadoes: %d, %s, ou %f
  47. 47. Exercício: Fazer o Fatorial
  48. 48. Resposta do Fatorial
  49. 49. Desafio: Faça o Fibonacci Em matemática, a Sucessão de Fibonacci (também Sequência de Fibonacci), é uma sequência de números inteiros, começando normalmente por 0 e 1, na qual, cada termo subsequente (numero de Fibonacci) corresponde a soma dos dois anteriores. A sequência recebeu o nome do matemático italiano Leonardo de Pisa, mais conhecido por Fibonacci (contração do italiano filius Bonacci), que descreveu, no ano de 1202, o crescimento de uma população de coelhos, a partir desta.2 Tal sequência já era no entanto, conhecida na antiguidade. Os números de Fibonacci são, portanto, os números que compõem a seguinte sequência (sequência A000045 na OEIS): 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, … (podendo ser omitido o zero inicial). Fonte: Wikipedia
  50. 50. Desafio: Fibonacci
  51. 51. Leitura de parâmetros python exe16.py rayner
  52. 52. Sequência: strings, listas e tuplas Slicing em sequencias
  53. 53. Interação em Sequencias
  54. 54. Jogo de Advinha
  55. 55. Strings
  56. 56. Formatação de String
  57. 57. Exibindo Octal ou Hexadecimal
  58. 58. Métodos de string Para cada uma delas faça um exemplo: ● split() # transforma um string em lista ● sort() # ordena ● capitalize() # primeira letra maiúscula ● center() #centraliza ver ljust e rjust ● count(substring) # conta a quantidade substring ● endwith(substring) # retornar verdadeiro se o fim for a substring ● find(substring) # procura uma substring ● index() # diferente da Find gera uma exceção ValueError ● join(iterável) # iterável lower() # converte para minúsculo ● partition(substring) #divide a string na substring ● replace(procura, valor) # substitui a substring procura por valor
  59. 59. Métodos de string Para cada uma delas faça um exemplo: ● startwith(substring) # retorna verdadeiro se começa com a substring ● stript() # remove os espaços brancos antes e depois ● swapcase() # transforma letras minúscula em maiúscula e vice-versa ● title() # transforma a letra de cada palavra em maiúscula ● upper() # transforma tudo em maiúsculo
  60. 60. Exemplo 22 - Strings
  61. 61. Variáveis Locais e Global ● Variável do bloco anterior pode ser acessada dentro de um bloco identado a direta ● Variável com mesmo nome dentro de um bloco identado se torna local e não altera o valor da global. ● Para usar uma variável global dentro de um bloco (função ou método) usar o comando global.
  62. 62. Exemplo 26
  63. 63. Principais Sequências Listas [] → conjunto de elementos separados por vírgula Tuplas () → parecido com Listas mas depois de criado seus valores são imutáveis Dicionário {} → O que diferencia de uma sequencia (lista e tuplas) é que seus objetos são indexados.
  64. 64. Listas Listas são representadas por colchetes [] Pode ter seus valores alterados e o tamanho também
  65. 65. Listas: principais métodos .append(elemento): adiciona no fim da lista .count(): conta quantas ocorrência de elemento dentro da lista .sort(): ordena .pop(): remove o último elemento .insert(posição, elemento) .extend(): estende a lista ocm todos os elementos do objeto iterável .index(): retorna a posição do primeiro elemento na lista, procurando a partir do início .remove(): remove a primeira ocorrência de um elemento .reverse(): inverte a lista
  66. 66. Listas: principais métodos Dica: para saber todos os métodos de um objeto use: >>> help(list)
  67. 67. Desafio 06 Faça um programa inserir elementos numa lista, respeitando as regras: 1. se for par adicione no início; 2. se for ímpar adicione no fim; 3. se for 0 no meio; 4. se número negativo encere o programa 5. mostre a lista ordenada Exemplo: 246000579
  68. 68. Resposta do Desafio 06
  69. 69. Map e Filter Map é unário Filter é unário
  70. 70. Desafio 6a Refazer o Desafio 6 usando Filter e/ou Map!!!!
  71. 71. Resposta Desafio 6a
  72. 72. Desafio 07 Faça um programa para sorteio de números inteiros: 1. o usuário informa os limites, tamanho máximo do número sorteado 2. o usuários informa quantos números serão sorteados 3. o programa mostra os números sorteados 4. não pode mostrar números já sorteados Dica: import random # random.randint(valor_inicial, valor_final) x = random.randint(1,10)
  73. 73. Resposta do Desafio 7
  74. 74. Desafio 08 Faça um programa mostre se um número é primo ou não!!!!
  75. 75. Resposta Desafio 08
  76. 76. Função Reduce Python 3.3 precisa importar a functools Reduce é uma função Binária!!!
  77. 77. Desafio 08 Faça um programa pra somar os números pares de uma lista usando apenas filter e reduce. Ex: Lista = [1,2,3,4,5,6,7,8] 20
  78. 78. Solução Desafio 08
  79. 79. Lambda: função anonima
  80. 80. Listas compreensivas Listas compreensivas é uma poderosa forma de trabalhar com listas; Devolve uma lista O que se faz com listas compreensivas se pode fazer com map e filter juntos Possui a seguinte forma: [ expressão for x in [lista] if expressão]
  81. 81. Map, Filter e Listas Compreensivas
  82. 82. Desafio 09 Usando apenas Listas Compreensivas faça um código para descobrir se um número é Primo.
  83. 83. Resposta do Desafio 09
  84. 84. Função como Parâmetro Uma outra grande função da lambda é usar uma variável com função, e com isto passá-la com parâmetro.
  85. 85. Função como Parâmetro
  86. 86. Tuplas Tuplas são sequencias que não podem ser alteradas depois de criadas. Tuplas disponibilizam apenas os métodos count() e index()
  87. 87. Dicionário Dicionários servem para armazenar objetos da mesma forma que em um sequencia. A diferença é a forma na qual os objetos são indexados. O índice utilizado para indexar um elemento é chamado de chave. dict(x) → dicionário Dic = {chave1:valor, chave2:valor,... chaveN:valorN} Chave pode ser de qualquer tipo Valor pode ser apenas um ou mais valores. Dic = {chave1:(valor1, valor2, … valorN)}
  88. 88. Exemplo de dicionário Principais métodos: .clear() = remove todos elementos . copy() = faz uma copia / cuidado dic1 = dic2 não é copia . get(chave) = retorna o valor .has_key(chave) = retorna True se tem o valor .items() = retorna a lista de tuplas .keys() = retorna a lista de chaves .values() = retorna a lista de valores .pop(chave) = retorna o valor associado a chave e remove .popitem() = retorna a tupla e remove .setdefault(chave,valor) = similar ao get, mas se não contiver o elemento é inserido .update(dict) = adiciona novos elementos
  89. 89. Exemplo de dicionário
  90. 90. Desafio 10 Segundo o dicionário abaixo, faça um lista compreensiva para retornar todas as pessoas com a idade maior que 18. pessoas = {"rayner":(123.000.000.00,37), "juliana":(222.000.000.00,40), "arthur":(333.000.000.00,5),"ana paula":(666,15)} Nome:(CPF, Idade)
  91. 91. Resposta do Desafio 09
  92. 92. Conjuntos Oferecem a funcionalidade de um conjunto em Python, sem ordenação e sem elementos repetitivos. Conjunto funcionam de forma similar a uma sequencia, exceto o fato de não ser possível acessar seus elementos por meio de índices ou fazer operações de slicing.
  93. 93. Conjuntos Pode se criar uma conjunto a partir de uma lista Conjunto = set([1,2,3,4]) Conjuntos compreensíveis Conjunto = {x % 5 for x in range(50)}
  94. 94. Set: Métodos Métodos: .isdisjoint(outro): retorna verdadeiro se a interseção de outro for o conjunto vazio .issubset(outro): True se conjunto contem outro. .issuperset(outro): Ture se outro estiver contido .union(outro): retorna a união .intesection(outro): retorna a intersecção .difference(outro): retorna a diferença .symmetric_difference(outro): retorna elementos que não estão nos dois .add(elemento): adiciona ao conjunto .remove(elemento): remove o elemento . discard(remove): igual ao remove() mas não gera exceção . pop(elemento): retorna e remove um elemento.
  95. 95. Bibliografia http://freepythontips.wordpress.com/2014/02/04/free-python-books/
  96. 96. Mais Desafios em: http://www.python.org.br/wiki/ListaDeExercicios
  97. 97. Python e POO Programação Orientada a Objeto é um paradigma de desenvolvimento baseada nos seguintes conceitos: ● Classe ● Objeto ● Métodos ● Propriedade ● Herança ● Polimorfismo
  98. 98. Exemplo
  99. 99. POO.Herança
  100. 100. Multi Herança
  101. 101. Fatorial POO
  102. 102. Atributo Privado __numero Use __ para ocultar. Mas não é privado.

×