Python Uma introdução Klaus Natorf Quelhas Novembro de 2009 Python • Introdução Características Tipos de dados Tipos numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • Criada por Guido van Rossum no final de 1989, no Instituto Nacional de Matemática e Ciência da Computação da Holanda (CWI); • Tinha como engenheiros; principal foco auxiliar físicos e • O nome é uma homenagem ao grupo humorístico britânico Monty Python, criador do programa Monty Python's Flying Circus; • Linguagem de programação desenvolvimento comunitário; livre, com Python Introdução • Características Tipos de dados Tipos numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • É uma linguagem interpretada (com Perl, Shell script, etc) – Não é necessário compilar o programa; • Os arquivos fonte podem ser executados diretamente pelo interpretador, que os converte em byte codes (que são multiplataforma); • O Python pode ser executado diretamente no terminal: python (executa o python no modo interativo) python teste.py (executa o programa teste.py) • É ideal para ser usado como linguagem de scripts, automatizando tarefas; • É uma linguagem de aprendizado fácil, com sintaxe clara e concisa. Python Introdução • Características Tipos de dados Tipos numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • É uma dinâmica; linguagem com tipagem forte, porém • Estrutura simples (não é necessário digitar pontoe-vírgula ao final de cada linha de instruções – caso seja preciso continuar na linha seguinte pode-se fazer uso da barra invertida); • Também não é necessário abrir e fechar blocos de código com chaves, como o C, por exemplo; • A identificação identação, Ex: (1) (2) (3) (4) de while x<100: s=s+x x=x+1 print s blocos é feita através de Python Introdução • Características Tipos de dados Tipos numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • É uma linguagem orientada a objetos; Tudo em python é objeto, até mesmo os inteiros. Desta forma, até os tipos mais básicos possuem métodos específicos; • Oferece ferramentas para: - Programação funcional; - Processamento de imagens; - Interface gráfica; - Processamento distribuído; - Integração com C e C#. Python Introdução • Características Tipos de dados Tipos numéricos • Integração com outros programas como linguagem de script. Strings • Listas O Python permite acessar todas as estruturas do Blender (operações 3D, manipulação de materiais, texturas e ambientes de cenas); Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • Blender: BrOffice.org: Dá suporte ao Python como linguagem de Macro (automatiza determinadas tarefas); Python Introdução Características • Tipos de dados • Numéricos Strings Listas Tipos numéricos: • inteiro (int): >>>a=10 • inteiro longo (long): Tuplas >>>a=9999999999999 Dicionários • Booleanos >>>a=1.294 (ou ainda 12.94e-1) ponto flutuante (float): Conversão • Controle de fluxo >>>a=1+2j if for while Exemplos complexo (complex): Python Introdução Características • + (Soma) - (Subtração) * (Multiplicação) / (Divisão) // (Divisão inteira) ** (Exponenciação) % (Resto de divisão inteira) • Tipos de dados • Numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos Operadores: • Métodos: a.real (Retorna a parte real do complexo a) a.imag (Retorna a parte imaginária do complexo a) Python Introdução Características • Tipos de dados Numéricos • Strings • Strings são constantes; • A indexação de seus caracteres é feita através de colchetes. Entretanto os caracteres da String não podem ser modificados; Exemplos: Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos >>> st='UERJ' >>> print st[0] U >>> print st[-4] U >>> print st[-len(st)] U • Todos os exemplos caractere da string st. acima retornam o último Python Introdução • Mais exemplos: >>> st='Departamento de Sistemas e Computacao' Características • Tipos de dados Numéricos • Strings >>> print st[:15] Departamento de >>> print st[27:] Listas Tuplas Computacao Dicionários >>> print st[:15],st[27:] Booleanos Departamento de Computacao Conversão Controle de fluxo >>> print st[15:27] if Sistemas e for >>> print st[::-1] while Exemplos oacatupmoC e sametsiS ed otnematrapeD Python Operações envolvendo strings: Introdução • Características >>> st='estou' >>> s=' em casa' >>> print st+s estou em casa >>> s='estou' ' em casa' >>> print s • Tipos de dados Numéricos • Strings Listas Tuplas Dicionários Booleanos • Concatenação: Interpolação: >>> st='vida boa' >>> print “o comprimento de %s é %d” % (st,len(st)) o comprimento de vida boa é 8 Conversão • Controle de fluxo >>> for c in s: ... print c ... U E R J if for while Exemplos Uso da string como sequencia: Python Introdução Características • Tipos de dados Numéricos • Repetição de strings: >>>3*'string' 'stringstringstrig‘ • Métodos: • Strings Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos >>> s='UERJ' >>> print s.lower() #retorna a string com caracteres minúsculos uerj >>> if s.startswith('U'): #verifica se a string começa com 'U' ... print 'começa' ... começa >>> if s.endswith('J'): #verifica se a string termina com 'J' ... print 'termina' ... termina Python Introdução Características • Tipos de dados Numéricos Strings • Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • São coleções de objetos, que podem ser de qualquer tipo, até mesmo outras listas; • Os elementos da lista não precisam ser do mesmo tipo; • Os tratamento dado às listas é semelhante ao dado às strings. • Exemplos: >>> lista = ['ab','bc',3,45] >>> print lista[0] ab >>> print lista[3] 45 >>> a=lista[0]+lista[1] >>> print a abbc >>> num=lista[2]+lista[3] >>> print num 48 Python Introdução Características • Tipos de dados Numéricos Strings • Listas Tuplas Dicionários Booleanos • O sistema de indexação é idêntico ao das strings. Da mesma forma, pode-se selecionar intervalos na lista. Exemplo: >>> lista = ['ab','bc',3,45] >>> print lista[:2] ['ab', 'bc'] >>> print lista[2:] [3, 45] >>> print lista[::-1] [45, 3, 'bc', 'ab'] • As operações de concatenação, enumeração e repetição das strings também são aplicáveis às listas. Conversão Controle de fluxo if for while Exemplos >>> lista = ['a','casa',456,44.5,23+5j] >>> lista2=[1,2,3,4] >>> lista3=lista+lista2 # concatenando as listas >>> print lista3 ['a', 'casa', 456, 44.5, (23+5j), 1, 2, 3, 4] Python Introdução Características • Tipos de dados Numéricos Strings • Listas Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos >>> for c in lista: #usando a lista como uma sequencia ... print c ... a casa 456 44.5 (23+5j) >>> print 3*lista2 # repetindo a lista [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4] • Ao concatenar uma string a uma lista, os caracteres da string são separados em elementos da lista. >>> lista=[1,2,3] >>> lista+='casa' >>> print lista [1, 2, 3, 'c', 'a', 's', 'a'] Python Introdução Características • Tipos de dados • Os elementos da lista podem ser alterados. Exemplo: >>> lista=[1,2,3] >>> lista[2]='elemento' >>> print lista [1, 2, 'elemento'] Numéricos • Strings >>> lista.append(8) #incluindo elemento • Listas Métodos úteis: >>> lista.remove(lista[1]) #removendo elemento a partir do índice Tuplas Dicionários >>> lista.remove(2) #removendo o elemento a partir da descrição do mesmo Booleanos Conversão >>> lista.sort() #ordena a lista Controle de fluxo >>> lista.reverse() #inverte a lista if for while Exemplos • O uso do método pop() em conjunto com o método append() faz da lista uma pilha. Python Introdução Características • Tipos de dados Numéricos Strings Listas • Tuplas Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • Uma tupla é como uma lista, a mesma não pode ser alterada. Entretanto seus elementos podem ser mutáveis. Exemplo: >>> tupla=([1,2,3],'abc','de') >>> tupla[0].remove(2) >>> print tupla ([1, 3], 'abc', 'de') • O tratamento dado às tuplas no que se refere à indexação de seus elementos é idêntico ao dado às listas e strings. Python Introdução Características • Tipos de dados Numéricos Strings Listas Tuplas • Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos • Dicionários são listas onde a indexação é feita por associação. É definida uma chave e aquela chave estará associada a um elemento do dicionário. Exemplo: >>> dic={'a':10,'b':20,'c':30} #declarando um dicionário >>> print dic['b'] #retornando um elemento através da chave 20 >>> dic['b']=56 #modificando um elemento através de sua chave >>> print dic {'a': 10, 'c': 30, 'b': 56} • As chaves do dicionário são imutáveis, porém os valores associados à chave são mutáveis. Não há garantia de que as chaves do dicionário estarão ordenadas. Python Introdução • Operações com dicionários: Numéricos >>> dic={'a':10,'b':20,'c':30} #declarando o dicionário >>> dic['d']=40 #adicionando um novo elemento >>> del dic['b'] #removendo um elemento >>> print dic {'a': 10, 'c': 30, 'd': 40} Strings • Características • Tipos de dados Métodos úteis com dicionários: Listas Tuplas • Dicionários Booleanos Conversão Controle de fluxo if for while Exemplos >>> print dic.items() #retorna os itens do dicionário [('a', 10), ('c', 30), ('b', 20)] >>> print dic.keys() #retorna as chaves do dicionário ['a', 'c', 'b'] >>> print dic.values() #retorna os valores do dicionário [10, 30, 20] >>> print dic.keys()[1] #retorna uma chave do dicionário através de seu índice c Python Introdução Características • Tipos de dados • O tipo booleano é uma implementação do tipo inteiro. Numéricos • Ele pode assumir os valores True ou False. Strings • São considerados como False: Listas Tuplas Dicionários • Booleanos Conversão Controle de fluxo if for while Exemplos - False; None (nulo); 0 (zero); “” (string vazia); [] (lista vazia); () (tupla vazia); {} (dicionário vazio); qualquer outra estrutura com tamanho zero. Python Introdução Características • Tipos de dados Numéricos Strings Listas Tuplas Dicionários Booleanos • Conversão Controle de fluxo if for while Exemplos • Existem funções que são utilizadas para retornar uma variável convertida para um tipo específico. Exemplos: >>> x=25 >>> str(x) # retorna x convertido para string '25' >>> float(x) # retorna x convertido para float 25.0 >>> x='25' >>> int(x) # retorna x convertido para inteiro 25 >>> float(x) # retorna x convertido para float 25.0 >>> Python Introdução Características Tipos de dados Numéricos • A construção if é utilizada para controle condicional e tem a seguinte sintaxe: Strings Listas Tuplas Dicionários Booleanos Conversão • Construções • if for while Exemplos if <condição>: <expressão 1> elif <condição 2>: <expressão 2> else: <expressão 3> Python Introdução • Características and - retorna verdadeiro caso todas as entradas forem verdadeiro; Tipos de dados Numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Operadores lógicos: or - retorna verdadeiro caso uma das entradas for verdadeiro; not - se a entrada for verdadeira passará a falsa e viceversa; is - retorna verdadeiro caso receba duas referências ao mesmo objeto (útil para comparar strings); • Construções in - retorna verdadeiro caso receba uma entrada que é encontrada uma ou mais vezes em uma lista. • • if for while Exemplos Expressões condicionais: <variavel>=<valor1> if <condição> else <valor2> Python Introdução Características Tipos de dados Numéricos • Utilizado para percorrer processar iteradores. Strings • Listas Tuplas Dicionários Booleanos Conversão • Construções if • for while Exemplos Sintaxe: for <referência> in <sequencia>: <bolco de expressões> continue break else: <bolco de expressões> listas ,sequencias e Python Introdução Características Tipos de dados Numéricos Strings Listas Tuplas Dicionários Booleanos Conversão • Construções if • for while Exemplos • O laço não percorre somente sequencias estáticas, mas também sequencias geradas por iteradores. Exemplo: >>> lista=[1,2,3] >>> for i in lista: ... lista.append(len(lista)+1) ... print i ... if i>5:break ... 1 2 3 4 5 6 Python Introdução Características Tipos de dados Numéricos Strings Listas Tuplas Dicionários Booleanos Conversão • Construções if • for while Exemplos • A função range(m, n, p) define uma sequencia de inteiros iniciada em m, menor do que n (ou maior, depende da direção da sequencia), a um passo p (que pode ser negativo). Exemplo: >>> for i in range(1,10,2): ... print i ... 1 3 5 7 9 Python Introdução Características Tipos de dados Numéricos Strings Listas Tuplas Dicionários Booleanos Conversão • Construções if for • while Exemplos • É utilizada para realizar iterações condicionais, onde não se sabe o momento em que as iterações terminam. • Sintaxe: while<condição>: <bloco de expressões> continue break else: <bloco de expressões> • Exemplo: >>> a=0 >>> while a<5: ... print a ... a+=2 ... 0 2 4 Python Introdução Características Tipos de dados Numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Construções if for while • Exemplos • Adivinhe o que este programa faz: >>>print 'Hello World!' Python Introdução Características Tipos de dados Numéricos Strings Listas Tuplas Dicionários Booleanos Conversão Construções if for while • Exemplos • O programa abaixo implementa a música “99 Bottles of Beer”: for quant in range(99, 0, -1): if quant > 1: print quant, "bottles of beer on the wall,", quant, "bottles of beer." if quant > 2: suffix = str(quant - 1) + " bottles of beer on the wall." else: suffix = "1 bottle of beer on the wall." elif quant == 1: print "1 bottle of beer on the wall, 1 bottle of beer." suffix = "no more beer on the wall!" print "Take one down, pass it around,", suffix print "--" Referências: [1] Curso de Python – Gustavo Noronha Silva, Fórum Mineiro de Software Livre [2] Python para desenvolvedores – Luis Eduardo Borges [3] Computação Gráfica em Python – Luis Eduardo Borges [4] Tutorial Python, Release 2.4.2 – Guido Van Rossum , Fred L. Drake, Jr. [5] Por que as pessoas usam... Python? - Emerson Henrique, Thiago Paiva, I Jornada de Iniciação Científica da ASPER Ciências da Computação e Processamento de Dados