Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Python Professor Marcio Antelio marcioantelio.cefet@gmail.com 2 Bibliografia Dawson M. Python Programming for the Absolute Beginner. 3º ed. Course Technology PTR, 2010. Barry P. Head First Python.1º ed. O'Relly, 2010. Lutz, Mark. Learning Python. 4º ed. O´Relly, 2011. 3 Python Por que este nome ? Guido Van Rossum Série de comédia da BBC “Monty Python’s Flying Circus” 4 Python Qualidade Sintaxe simples Segue um conjunto de conceitos principais Fácil de aprender Fácil de compreender Fácil de lembrar 5 Python Produtividade de desenvolvimento Menor esforço de programação Maior velocidade de implementação 6 Python Linguagem de script ? É uma linguagem de programação que é geralmente aplicado em regras de script Ferramentas shell Linguagem de controle de outros componentes Linguagem simples usada para a codificação de tarefas rápidas 7 Python Desvantagem ? Linguagem interpretada Depende do programa Maior performance do hardware 8 Python O que posso fazer ? Programação de sistemas Interfaces gráficas Script de internet Integração de componentes 9 Python O que posso fazer ? Banco de Dados Programação científica e numérica Jogos Imagens Robots 10 Python Vantagens OO Open Source Independente de plataforma Fácil de usar Fácil de aprender 11 Interpretador Python Execução do programa Visão do Desenvolvedor Visão do Processo Download http://www.python.org Versões 2.X e 3.X 12 Visão do desenvolvedor Um programa escrito em Python é apenas um arquivo texto contendo código fonte (script) Por convenção este arquivo possui a extensão “.py” 13 Visão do desenvolvedor O arquivo “exemplo.py” possui o seguinte script Python: print (‘Hello World’) print (2 ** 100) 14 Visão do desenvolvedor Saída do script Hello World 1267650600228229401496703205376 15 Visão do Processo Source Code Byte Code Python Virtual Machine exemplo.py exemplo.pyc PVM 16 Ciclo de Desenvolvimento Não existe distinção entre o ambiente de desenvolvimento e execução. O compilador está presente em tempo de execução e é parte do sistema que roda o programa. Experiência de programação dinâmica 17 Implementações alternativas IronPython Linguagem .NET CPython Linguagem C Jython Linguagem Java 18 Futuro Projeto Unladen Swallow Mais rápido do que C em alguns contextos. Projeto PyPy Implementação rápida e flexível de Python. Projeto Parrot Máquina virtual comum. 19 Rodando Programas 20 Prompt Python 21 Prompt iterativo Começa com informações sobre Python. “>>>” O prompt está esperando que você digite um comando ou expressão (Entrada). O resultado (Saída) é mostrado na linha seguinte. 22 Prompt Python 23 Prompt Python A sessão iterativa permite imprimir (Saída) o resultado de uma expressão que você digitou (Entrada). Estudar a linguagem. Testes. 24 Prompt Python 25 Rodando scripts Escrever o código fonte em arquivos. Estes arquivos são chamado módulos ou scripts. Extensão .py para os arquivos. 26 Rodando scripts 27 Rodando scripts : Prompt Python 28 Rodando scripts : Prompt DOS 29 Rodando scripts : Prompt DOS Salvando a saída em um arquivo 30 Rodando scripts : Prompt Python 31 Rodando scripts no Windows Explorer 32 Interface IDLE 33 Interface IDLE 34 Tipos de objetos Python 35 Objetos São estruturas de dados. Pode conter atributos (variáveis). Pode conter métodos (funções). 36 Objetos Tipos principais Numbers String List Dictionaries 37 Objetos Tipos principais Tuples Files Sets Boolean 38 Funções existentes Estrutura básica de uma função retorno nomeDaFunção ( argumentos) Veremos futuramente como criar nossas própias funções. Veremos como importar módulos. 39 Tipo Numérico 40 Tipo Numérico Números inteiros. Números reais. Números complexos. E outros. 41 Inteiros Tamanho ilimitado d = 1234 d = 0 d = - 10 d = 1234659786597431235997412949 42 Inteiros Podem ser codificados: Base 16 (hexadecimal) Começa com “0x” ou “0X” seguido por uma string de dígitos (0-9 e A-F) Base 8 (octal) Começa com “0o” ou “0O” seguido pelos dígitos (0-7) Base 2 (binário) Começa com “0b” ou “0B” seguido pelos dígitos (0-1) LETRA 43 Inteiros d = 0o177 d = 0x9ff d = 0b101010 44 Números reais Conhecidos como ponto flutuante Possui o ponto decimal “.” Expoente é definido por “e” ou “E” seguido opcionalmente pelo sinal 45 Números reais d = 1.23 d = 1. d = 1.0 d = 3.14e-10 d = 4E210 d = 4.0e+210 46 Números complexos São compostos pela parte real + parte imaginária Parte imaginária é terminada com “j” ou “J” Podem ser construídos chamando a função complex (real, imag). 47 Números complexos d= 3+4j d= 3.0 + 4.0j d= 3J d = complex(1, -2) (1 - 2j) d = complex(1,) (1 + 0j) d = complex(1) (1 + 0j) 48 Operadores de expressões Expressões são combinações de números (ou outros objetos) e operadores que computam um valor quando executados pelo Python. Para realizar a expressão (x + y), Python aplica o operador “+” aos valores dos objetos x e y. O resultado é a soma de x e y, ou seja, outro objeto. 49 Precedência dos operadores Quando uma expressão envolve mais de um operador, Python agrupa suas partes de acordo com as regras de precedência. Estas regras determinam a ordem com que estas partes serão computadas. 50 51 Precedência dos operadores X + Y * Z Primeiramente Python realiza a multiplicação de Y e Z, para depois somar com X. Isto porque “*” tem uma precedência maior do que “+”. 52 Parênteses (X + Y) *Z Python sempre avalia primeiro expressões em parênteses. Assim o operador + é aplicado aos objetos X e Y primeiro, o operador * é aplicado ao objeto Z e ao objeto resultante da soma. 53 Misturando tipos numéricos Expressões podem envolver operandos (objetos) de vários tipos. Python primeiramente converte operandos para o tipo mais complicado e então realiza o cálculo com todos os operandos no mesmo tipo. 54 Misturando tipos numéricos Ranking dos tipos numéricos em ordem crescente de complexidade Inteiro Real Número Complexo 55 Misturando tipos numéricos soma = 4 + 3.14 Primeiramente o valor inteiro (4) é convertido para ponto flutuante (4.0). Depois é realizado a soma de números reais. soma = 7.14 56 Conversões de tipos numéricos >>> int( 3.1415 ) 3 >>> float( 3 ) 3.0 57 Váriaveis São criadas quando elas recebem um valor pela primeira vez São substituídas por seus valores quando usadas em expressões Devem ser criadas antes de serem usadas em expressões Variáveis estão referenciando objetos. 58 Váriaveis e Expressões básicas 59 Comparações Resultam em valores booleanos True False 60 Comparações 61 Comparações 62 Divisões Verdadeira (X / Y) Retorna um resultado real Floor (X // Y) Retorna o valor mais próximo e abaixo do resultado truncado , retornando inteiro caso os operandos sejam inteiros ou real caso algum operando seja real. 63 Divisões >>> 10 / 4 2.5 >>> 10 // 4 2 >>> 10 / 4.0 2.5 >>> 10 // 4.0 2.0 64 Números Complexos >>> 1j * 1J (-1 + 0j) >>> 2 + 1j * 3 (2 + 3j) >>> (2+1j)*3 (6 + 3j) 65 Bases numéricas 0x01, 0x10, 0xff (1,16,255) >>> 0b1, 0b10000, 0b11111111 (1, 16, 255) >>> 0o1, 0o20, 0o377 (1, 16, 255) 66 Bases numéricas >>> oct(64), hex(64), bin(64) (‘0o100’,’0x40’,’0b1000000’) >>> int(‘64’), int(‘100’,8), int(‘40’,16), int(‘1000000’,2) (64,64,64,64) 67 Ferramentas numéricas Outras funções pré-definidas Funções que estão disponíveis quando executamos o interpretador Bibliotecas numéricas Módulos criados para atender diferentes áreas68 Bibioteca math 69 Bibioteca math Floor x Truncamento >>> import math >>> math.floor(2.5) 2 >>> math.floor(-2.5) -3 >>> math.trunc(2.5) 2 >>> math.trunc(-2.5) -2 70 Mais funções pré-definidas >>> pow(2,4), 2**4 (16,16) abs(-42.0),sum( (1,2,3,4 )) (42.0,10) min(3,1,2,4), max(3,1,2,4) (1,4) 71 Mais funções pré-definidas 72 Tipo Booleano 73 Tipo Booleano True ou False 1 ou 0 74 Tipo Booleano 75 Álgebra Booleana Complementação (ou Negação, ou Inversão) Operação cujo resultado é simplesmente o valor complementar ao que a variável apresenta. Como uma variável booleana pode assumir um entre dois valores, caso assuma o valor 1 (true), seu complemento é 0 (false) e vice-versa. 76 Álgebra Booleana AND (Multiplicação Lógica) Esta operação binária resulta em 0 (false) caso pelo menos uma entrada seja 0 (false) OR (Adição Lógica) Esta operação binária resulta em 1(true) se pelo menos uma das variáveis de entrada for 1(true) 77 Álgebra Booleana XOR Esta operação binária resulta em 1(true) caso as entradas possuam valores diferentes, caso contrário o resultado é 0(false) 78 Tabela Verdade 79 Exemplo de código 80 Tipo String 81 Tipo String Coleção ordenada de caracteres usados para armazenar e representar informação baseada em texto. Serve para codificar símbolos, palavras, urls, caminhos de arquivo … São objetos imutáveis. 82 Tipo String Strings com aspas simples ou duplas são as mesmas >>> “aluno”, ‘aluno’ ('aluno', 'aluno') >>> “knight’s”, ‘knight”s’ ("knight's", 'knight"s') 83 Tipo String Concatenação Operador + (Explícita) >>> title = "Sentido" + ' Da ' + " Vida" >>> title 'Sentido Da Vida' Implícita >>> title = "Sentido" ' Da ' " Vida" >>> title 'Sentido Da Vida' 84 Tipo String Repetição Operador * >>> s * 2 'spamspam' 85 Tipo String Sequências de Escape Estas sequências nos permite colocar byte codes na string que são difíceis de representar no teclado Começam com a barra invertida (\) 86 Sequencias de Escape >>> 'knight\'s', "knight\"s" ("knight's", 'knight"s') >>> s= 'a\nb\tc‘ >>> print(s) a b c 87 Tipo String Aspas triplas Também chamado de “block string” É uma conveniência sintática para codificar textos em várias linhas. 88 Tipo String Aspas triplas >>> frase=""" Getúlio Vargas foi presidente do Brasil""" >>> frase ' Getúlio Vargas\nfoi presidente do\nBrasil' 89 Funções Específicas Comprimento da string >>> s="abcdefghij" >>> len(s) 10 90 Funções Específicas Remover espaços em branco >>> s=" parado " >>> s.strip() 'parado‘ 91 Funções Específicas Substituições na String >>> s="bala“ >>> s.replace('a','o') 'bolo' 92 Funções Específicas Começa com uma substring >>> s="paralelepípedo“ >>> s.startswith('pa') True Termina com uma substring >>> s="paralelepípedo“ >>> s.endswith('do') True 93 Funções Específicas Verificar se a String é um número inteiro >>> s="8080" >>> s.isdigit() True >>> s="98e" >>> s.isdigit() False 94 Funções Específicas Todas as letras maiúsculas ou minúsculas. >>> nome="Getúlio Vargas" >>> nome.upper() 'GETÚLIO VARGAS' >>> nome.lower() 'getúlio vargas' 95 Funções Específicas String vazia s=“” Qual função usar ?? Primeira letra maiúscula >>> s="bom aluno" >>> s.capitalize() 'Bom aluno‘ 96 Tipo Conjunto 97 Tipo Conjunto Coleção não ordenada de objetos únicos e imutáveis que suportam operações correspondentes a Teoria dos Conjuntos Por definição, um item aparece apenas uma vez no conjunto, não importando quantas vezes ele foi adicionado no conjunto. 98 Tipo Conjunto >>> x=set('abcde') >>> y=set('bdxyz') >>> x {'a', 'c', 'b', 'e', 'd'} >>> y {'y', 'x', 'b', 'd', 'z'} >>> 'e' in x #pertence True 99 Tipo Conjunto >>> x - y #diferença {'a', 'c', 'e'} >>> x | y #união {'a', 'c', 'b', 'e', 'd', 'y', 'x', 'z'} >>> x & y #interseção {'b', 'd'} 100 Tipo Conjunto >>> x ^y #Diferença simétrica {'a', 'c', 'e', 'y', 'x', 'z'} >>> x > y, x < y #SuperConjunto, SubConjunto (False, False) 101 Métodos do tipo conjunto >>> s1 = {1,2,3,4} >>> s1.add(5) >>> s1 {1, 2, 3, 4, 5} >>> s1.remove(1) >>> s1 {2, 3, 4, 5} 102 Métodos do tipo conjunto >>> s1.union({6,7}) {2, 3, 4, 5, 6, 7} >>> s1.intersection({1,3,5}) {3, 5} >>> s1.issubset(range(-5,5)) False 103 Tipo Lista 104 Tipo Lista É um objeto que representa uma coleção de objetos. Nesta coleção a ordem dos objetos é importante. São objetos mutáveis. Objetos são indexados. 105 Tipo Lista Variação do tamanho da lista A lista pode conter objetos complexos como por exemplo outras listas. 106 Tipo Lista >>> l = [] # lista vazia >>> l = [1,2,3,4] # 4 itens, índice: 0...3 >>> l [1, 2, 3, 4] >>> l=['89'] # 1 item, índice: 0 >>> l ['89'] 107 Tipo Lista >>> l=['abc',['def','ghi']] # lista de listas >>> l ['abc', ['def', 'ghi']] >>> l = list('123456789') # itens iteráveis >>> l ['1', '2', '3', '4', '5', '6', '7', '8', '9'] 108 Tipo Lista >>> l= list(range(-5,5)) # sucessivos inteiros >>> l [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4] >>> l[0] # índice 0 da lista -5 >>> l[9] # último índice da lista 4 >>> l[len(l)-1] # ??? 4 109 Tipo Lista–Operações básicas Concatenação – Somente pode envolver o mesmo tipo de sequência. >>> [1,2,3] + [4,5,6] [1, 2, 3, 4, 5, 6] >>> [1,2,3] + [4,5,6] [1, 2, 3, 4, 5, 6] >>> str([1,2]) + "3,4" '[1, 2]3,4' >>> [1,2] + list("34") [1, 2, '3', '4'] 110 Tipo Lista–Operações básicas Repetição >>> ['NI'] * 4 ['NI', 'NI', 'NI', 'NI'] >>> ['NI',8,['A',3]] * 2 ['NI', 8, ['A', 3], 'NI', 8, ['A', 3]] 111 Tipo Lista–Operações básicas >>> 3 in [1,2,3] True 112 Tipo Lista – Indexação >>> l=['time','Time','TIME'] # a partir do zero >>> l[1] # acessando o item na posição 1 'Time' >>> l[-1] # Contagem negativa (direita) 'TIME' >>> l[-2] 'Time' >>> l[-3] 'time' 113 Tipo Lista – Fatias (Slice) A fatia resultante é uma nova lista contendo os elementos cujas posições vão do primeiro índice ao segundo, não incluindo o último elemento. Se omitirmos um dos índices na fatia, assume-se início ou fim da lista. 114 Tipo Lista – Fatias (Slice) >>> l=['time','Time','TIME'] >>> l[1:2] ['Time'] >>> l[1:] ['Time', 'TIME'] >>> l[:2] ['time', 'Time'] 115 Tipo Lista – Matrizes São listas de listas Arrays multidimensionais 116 Tipo Lista – Matrizes >>> matriz = [ [1,2,3],[4,5,6],[7,8,9] ] >>> matriz[1] # acessando a linha 1 [4, 5, 6] >>> matriz[1][1] # elemento da linha1, coluna 1 5 >>> matriz[2][0] 7 117 Tipo Lista Modificando uma lista >>> L = ['spam','Spam','SPAM'] >>> L[1]='eggs' >>> L ['spam', 'eggs', 'SPAM'] >>> L[0:2]=['eat','more'] >>> L ['eat', 'more', 'SPAM'] 118 Tipo Lista - Métodos S < e 119 Tipo Lista - Métodos >>> L=[1,2] >>> L.extend([3,4,5]) >>> L [1, 2, 3, 4, 5] >>> L.pop() 5 >>> L [1, 2, 3, 4] 120 Tipo Lista - Métodos >>> L.reverse() >>> L [4, 3, 2, 1] >>> list(reversed(L)) [1, 2, 3, 4] >>> 121 Tipo Lista – Estrutura de pilha >>>lista=[ ] >>>lista.append(1) >>>lista.append(2) >>>lista [1,2] >>>lista.pop() 2 >>>lista.pop() 1 >>>lista [ ] 122 Tipo lista - Métodos >>> L=['spam','eggs','ham'] >>> L.index('eggs') #Índice do objeto 1 >>> L.insert(1, 'toast')# Insere na posição >>> L ['spam','toast','eggs','ham'] 123 Tipo lista - Métodos >>> L.remove('eggs') #Deleta pelo valor >>> L ['spam','eggs','ham'] >>> L.pop(1) #Deleta pela posição 'toast' >>> L ['spam','ham'] 124 Tipo lista - Métodos >>> L ['spam','eat','more','please'] >>> del L[0] # deleta um item >>> L ['eat','more','please'] >>> del L[1:] # deleta uma seção >>>L ['eat'] 125 Esvaziando uma lista >>> L=['Already','got','one'] >>>L[1:]=[ ] >>>L ['Already'] >>>L[0]=[ ] >>>L [ [ ] ] 126 Tipo Dicionário 127 Tipo Dicionário Itens são armazenados e resgatados através de chaves. São conhecidos como arrays associativos ou hash. Podem conter qualquer tipo de objeto. Mapeamento de chaves para valores. 128 Chave valor 'Opcao1' x-salada 'Opcao2' egg-x-salada 'Opcao3' egg-x-bacon 129 Tipo Dicionário - Chaves Valor único. Acesso ao valor somente pela chave. Pode ser qualquer objeto imutável (String, números,tuplas …) 130 Dicionário – Operações básicas >>> D = {'spam':2,'ham':1,'eggs':3} #Construindo >>> D['spam'] #Acessando um valor pela chave 2 >>> D #A ordem não importa {'eggs': 3, 'ham': 1, 'spam': 2} 131 Dicionário – Operações básicas >>> len(D) # Tamanho do dicionário 3 >>> 'ham' in D #Verificando se existe chave True >>> list(D.keys()) # Criando uma lista ['eggs', 'ham', 'spam'] 132 Dicionário – Ações >>> D {'eggs': 3, 'ham': 1, 'spam': 2} >>> D['ham']=['grill','bake','fry'] #Entrada >>> D {'eggs': 3, 'ham': ['grill', 'bake', 'fry'], 'spam': 2} 133 Dicionário – Ações e Métodos >>> del D['eggs'] #Deletando uma entrada >>> D {'ham': ['grill', 'bake', 'fry'], 'spam': 2} >>> D['brunch']='bacon‘ #Adicionando >>> D {'brunch': 'bacon', 'ham': ['grill', 'bake', 'fry'], 'spam': 2} 134 Dicionário – Métodos >>> D = {'spam':2,'ham':1,'eggs':3} >>> list(D.values()) # Listando os valores [3, 1, 2] >>> list(D.items()) #Listando as tuplas [('eggs', 3), ('ham', 1), ('spam', 2)] 135 Dicionário – Métodos >>> D.get('spam') #Recuperando o valor pela chave 2 >>> print(D.get('toast')) #Chave não existe None 136 Dicionário – Métodos >>> D {'eggs': 3, 'ham': 1, 'spam': 2} >>> D2={'toast':4, 'muffin':5} >>> D.update(D2) #Atualizando >>> D {'toast': 4, 'muffin': 5, 'eggs': 3, 'ham': 1, 'spam': 2} 137 Dicionário – Métodos >>> D3={'spam':0,'toast':6} >>> D.update(D3) # Atualizando >>> D {'toast': 6, 'ham': 1, 'spam': 0, 'muffin': 5, 'eggs': 3} 138 Dicionário – Métodos >>> D.pop('muffin') #Retorna o valor e deleta o item 5 >>> D {'toast': 6, 'ham': 1, 'spam': 0, 'eggs': 3} 139 Dicionário – Estrutura de Dados >>> matriz={} >>> matriz[(1,2,3)]=88 >>> matriz[(4,5,6)]=99 >>> x=1;y=2;z=3 # “;” separador de comandos >>> matriz[(x,y,z)] 88 >>> matriz {(4, 5, 6): 99, (1, 2, 3): 88} 140 Dicionário – Estrutura de Dados >>> pessoa={ 'nome':'Fulano', 'idade':32, 'emprego': ['analista','advogado'], 'endereco':{'pais':'Brasil','estado':'RJ', 'cep':8053} } 141 Dicionário – Estrutura de Dados >>> pessoa['nome'] 'Fulano' >>> pessoa['emprego'][1] 'advogado' >>> pessoa['endereco']['estado'] 'RJ' 142 COMANDOS Comandos Condicionais Comandos de Repetição Comandos de Desvio 143 Estrutura de um programa Python Programas são compostos por módulos. Módulos possuem comandos. Comandos possuem expressões. Expressões criam e processam objetos. 144 Sintaxe de um programa Python A sintaxe é composta por comandos e expressões. Expressões modificam objetos. Comandos codificam a lógica de operações realizadas no programa. 145 Comando Condicional - IF Este comando seleciona ações a serem realizadas a partir de uma determinada condição. Este comando pode conter outros comandos, inclusive outros if `s 146 IF – Regras de Sintaxe x=8; y=5 If ( x > y ) : print(“O valor de x =”, x, “ é maior !”) y=0 print(“Fim do programa.”) “;" separa instruções na mesma linha TESTE, o '()'é opcional “:” é obrigatório para delimitar o fim do teste As instruções indentadas formam um bloco !!! 147 Delimitadores de Bloco: Regras de indentação x=1 If x : y=2 If y: print(“bloco 2”) print(“bloco 1”) print(“bloco 0”) 148 Comando Condicional – IF/ELIF/ELSE If (teste 1) : Bloco 1 elif (teste 2): # Comando opcional Bloco 2 else : # Comando opcional Bloco 3 149 Comando Condicional – IF/ELIF/ELSE If ( not 1) : print('true') else : print('false') 150 Comando Condicional – IF/ELIF/ELSE pedido='egg-x-salada' if(pedido=='x-salada'): print('R$ 3,00') elif(pedido=='egg-x-salada'): print('R$ 4,00') elif(pedido=='x-tudo'): print('R$ 5,00') else: print('No momento não temos ...') 151 Comando Ternário If x: a = y else: a = z a = y if x else z d=5;f=6 x=d if (d>f) else f d=5;f=6 if(d > f): x=d else: x=f 152 Comando de Repetição - WHILE Este comando irá executar repetidamente (loop) um bloco de instruções indentadas enquanto seu teste (condição) permanecer verdadeiro. O loop é executado até o teste ser falso. Neste caso o controle finaliza o comando while e passa para a próxima instrução. 153 Comando de Repetição - WHILE O loop pode ser infinito caso o teste nunca seja falso. O teste sempre é avaliado antes de um novo loop ser iniciado, portanto caso na primeira vez ele seja falso, o loop nunca será executado. 154 WHILE- Formato Geral while (teste) : # Teste de loop bloco 0 # Loop else: # Comando opcional bloco 1 155 WHILE- Formato Geral while (teste) : # Teste de loop bloco 0 # Loop 156 WHILE - Exemplos while True: print('Adeus') while 1: print('Adeus') 157 Exemplo – Fatiando uma String frase='Adeus!' while frase: print(frase) frase=frase[1:] Laço 6 Laço 2 Laço 1 Adeus! frase='deus!' deus! frase='eus!' ! frase='' SAÍDA 158 Exemplo – Imprimindo os números de 0 a 9 n=0 ; max=10 while (n < max) : print(n, end=' ') # saída na mesma linha n+=1 n=0 0 n=1Laço 1: 0 < 10 ? Laço 2: 1 < 10 ? n=1 0 1 n=2 Laço 10: 9 < 10 ? n=10 0 1 … 10 0 10 1 n=11 SAÍDA 159 Comandos de Desvio Break/Continue/Pass Pass: comando vazio. Continue: pula novamente para o teste. Break: Encerra o loop. Loop else: é executado apenas se o loop é finalizado normalmente, ou seja, sem um break ser chamado. 160 While – Formato Geral while (teste 1) : bloco 1 If (teste 2): break If (teste 3): break else : bloco 2 161 Pass É utilizado quando a sintaxe exige uma expressão ou comando mas por enquanto você não irá defini-la. while 1: pass #TODO: print('Adeus') 162 Continue Pulo imediato para o teste de um novo loop. Imprimindo os números divisíveis por 2 x=11 while x: x=x-1 If( x%2 != 0): continue print(x, end=' ') 163 Break Saída imediata do loop . Entre com um nome e idade de uma pessoa até o usuário digitar “stop" while True: nome=input('Entre com um nome ?') if(nome =='stop'): break idade=input('Entre com uma idade') print('Nome:', nome,'Idade: ', idade ) 164 Loop Else -Exemplo do programa para identificar se um número > 2 é primo Saída imediata do loop . numero = int(input("Entre com o possível numero primo maior que 2: ")) fator = numero // 2 print(fator) while (fator > 1): if(numero % fator == 0): print(numero, 'e divisivel por ', fator) break fator -=1 else: print('Primo') 165 Comando For É um iterador de sequência genérica. A cada laço e passa por uma sequência ordenada do objeto. 166 Formato geral for variável in objeto : instruções else: instruções Relaciona itens de um objeto ao objetivo A cada laço o objetivo é associado a um item Caso um break não seja executado 167 Formato completo for variável in objeto : instruções If (teste): break If (teste):continue else: instruções 168 Exemplos – Acessando os elementos for x in [“flamengo”,”vasco”,”fluminense”]:print (x, end=” ”) Laço 1 Laço 2 Laço 3 x=lista[0] x=lista[1] x=lista[2] flamengo flamengo vasco flamengo vasco fluminense SAÍDA 169 Exemplos – Somando os itens de uma lista soma = 0 for x in [1,2,3,4] : soma = soma + x print(soma) Laço 1 Laço 2 Laço 3 Laço 4 x=1;soma=0+1 x=2;soma=1+2 x=3;soma=3+3 x=4,soma=4+6 10 SAÍDA 170 Exemplos – Somando os números pares de uma lista de 1 a 7 soma = 0 for x in range(0,7,2) : soma = soma + x print(soma) Laço 1 Laço 2 Laço 3 Laço 4 x=0;soma=0+0 x=2;soma=0+2 x=4;soma=2+4 x=6,soma=6+6 12 SAÍDA 171 Exemplos – Multiplicando os itens de uma lista produto = 1 for item in range(1,5): prod * = item print(soma) Laço 1 Laço 2 Laço 3 Laço 4 item=1;prod=1*1 item=2;prod=1*2 item=3;prod=3*2 item=4,prod=4*6 24 SAÍDA 172 Exemplos – Iterando em uma String frase = 'PAZ' for letra in frase : print(letra, end = ' ') Laço 1 Laço 2 Laço 3 letra=frase[0] letra=frase[1] letra=frase[2] P SAÍDA P A P A Z 173 Exemplos – Iterando em um dicionário d = {'a':1,'b':2,'c':3} for key in d: print(key,'=>',d[key]) Laço 1 Laço 2 Laço 3 key='a' key='c' key='b' a=> 1 SAÍDA c=> 3 b=> 2 174 Exemplos – Iterando em um conjunto c = {'a','b','c'} for elemento in c: print(elemento, end=' ') Laço 1 Laço 2 Laço 3 elemento='a' elemento='c' elemento='b' a SAÍDA a c a c b 175 Exemplos – Acessando a posição de um elemento frase='uva!' i=0 while i < len(frase): if(frase[i]=="a" or frase[i]=="A"): print(i) i=i+1 Laço 1 Laço 2 Laço 3 elemento='u' elemento='v' elemento='a' SAÍDA 2 176 Funções 177 Funções Funções são dispositivos que agrupam um conjunto de comandos para que os mesmos possam ser executados mais de uma vez em um programa. Apresentam um valor como resultado. Especifica argumentos que são parâmetros de entrada da função. 178 Por que usar funções ??? Maximizar o reuso do código. Minimizar a redundância. Dividir o programa em partes bem definidas. 179 Funções - Comando def Este comando cria um objeto função e define um nome a este objeto def <nome> (arg1,arg2,arg3,...,argn): <comandos> return <valor> OPCIONAL 180 Funções - Exemplo # definindo a função def multiplica (x,y) return x*y #chamando a função prod = multiplica(8,2) print(prod) X 8 Y 2 prod 16 181 Polimorfismo É um comportamento dependente de tipo. Uma operação depende dos objetos operados. Uma função pode apresentar vários objetivos dependendo dos tipos de objetos e as operações feitas. 182 Polimorfismo - Exemplo # definindo a função def multiplica (x,y) return x*y #chamando a função com argumentos diferentes prod = multiplica(8,2) replicacao=multiplica('OI',2) zeros=multiplica([0],2) 183 Polimorfismo - Exemplo def intersecao (seq1,seq2): res=[ ] for x in seq1: if x in seq2: res.append(x) return res print(intersecao(“SPAM” , ”SCAM”) ) print(intersecao( [1,2,3 ], {1,4} ) 184 Escopo 185 Escopo Lugar onde as variáveis são definidas e acessadas. Python procura o nome das variáveis em seu namespace. Visibilidade do nome em seu código. O trecho de código onde você define um nome para a variável determina o namespace que ela estará e consequentemente o escopo de visibilidade. 186 Regras de Escopo Se uma variável é definida dentro de uma def, ela é local para esta função. Se uma variável é definida para um def aninhado, ela é não local para as funções aninhadas modificarem seu valor. Se uma variável é definida fora de todos os defs, ela é global para o arquivo (módulo) inteiro. 187 Regras de Escopo Cada módulo é um escopo global para a variável definida no topo do arquivo. Estas variáveis globais se tornam atributos do módulo objeto para o mundo externo e são apenas variáveis dentro do módulo. Cada chamada a uma função cria um novo escopo local. Variáveis definidas dentro de uma função por padrão são locais a menos que sejam declaradas globais ou não locais. 188 Resolução de Nomes: LEGB A procura pela referência de um nome segue a ordem dos 4 escopos: 1. Local 2. Não local 3. Global 4. Built-in 189 Exemplo de Escopos #Código do arquivo (módulo) escopo.py #escopo global : x é uma variável global x=99 def func(y): # escopo local : z e y são variáveis locais z = x + y # acessando X global return z print(func(1)) # imprime o valor 100 190 Escopo Global #Código do arquivo (módulo) escopo.py #escopo global : x é uma variável global x=99 def func( ): global x # acessando X global x=88 func() print(x) # imprime o valor 88 191 Escopo Global #Código do arquivo (módulo) escopo.py #escopo global : x é uma variável global y , z = 1 , 2 def todas_globais( ): global x # acessando X global x = y + z print(x) # imprime o valor 3 192 Acessando variáveis globais de outros módulos # módulo primeiro.py x= 99 # módulo segundo.py import primeiro print(primeiro.x) primeiro.x=88 193 Funções Aninhadas x= 99 # variável global nunca usada def f1( ) : # funcão pai x=88 # variável local def f2( ) : # função filha (aninhada) print(x) f2() >>> f1() 194 Funções Aninhadas def f1( ) : # funcão pai x= 99 def f2( ) : # função filha (aninhada) def f3( ): print (x) f3() f2() >>> f1() 195 Variáveis não locais def teste(inicio): estado = inicio # definição de uma variável local def teste_filho ( ): nonlocal estado #para poder modificar o valor estado +=1 print(estado) return teste_filho( ) >>> teste(0) # retorna o valor 1 196 Argumentos 197 Argumentos Sao objetos enviados as funções como entradas. Passagem de objetos imutáveis é feita por valor. Exemplo: objetos inteiros, reais e strings. Passagem de objetos mutáveis é feita por referência. Exemplo: listas, conjuntos e dicionários. 198 Passagem de argumentos por valor def f(a): a = 99 b=88 f(b) print(b) # o valor de b não muda >>> 88 199 Exemplo sem a chamada de função x=1 a=x a=2 print(x) >>> 1 200 Passagem de argumentos por referência def troca (b): b[0]='spam' # objeto compartilhado (mutável) l=[1,2] troca(l) print(l) >>> ['spam',2] 201 Exemplo sem a chamada de função L=[1,2] b=l b[0]='spam' print(l) >>> ['spam',2] 202 Evitando mudanças nos argumentos imutáveis def copia( a ): a = a[ : ] # copia a própria lista a[0]=5 a[1]=5 L=[1,2] copia(L) print(L) >>>[1,2] 203 Modos de Passagem de Argumentos Existem várias combinações de argumentos. Alguns exemplos: funcao(valor): Argumento definido pela posição funcao (nome=valor): Argumento definido pelo nome 204 Funcao(valor) def f(a,b,c): print(a,b,c) f(1,2,3) >>> 1 2 3 205 Funcao(nome=valor) def f(a,b,c): print(a,b,c) f(c=3,b=2,a=1) >>> 1 2 3 206 funcao(nome = valor padrão) def f(a=1,b=2,c=3): print(a,b,c) f(2,4) >>> 2 4 3 207 funcao(nome = valor padrão) def f(a=1,b=2,c=3): print(a,b,c) f(2,4) >>> 2 4 3 208 Recursividade 209 Recursividade Uma função é recursiva quando chama ela mesma. Ela deve apresentar dois casos: Caso base e o caso recursivo 210 Recursividade Caso base: É a solução do problema para o caso mais simples. Se não for o caso base: Quebre o problema em problemas menores. Carregue uma nova cópia da função para trabalhar com os casos menores (chamada recursiva) Convergir para o caso base Função faz uma chamada para ela mesma dentro do retorno da função. 211 Recursividade Exemplo: fatorial n! = n * ( n – 1 ) * ( n – 2 ) * … * 1 Caso base (1! = 0! = 1) Caso recursivo: ( n! = n * ( n – 1 )! ) 5! = 5 * 4! 4! = 4 * 3! 3! = 3 * 2! … 212 Recursividade def fat (n): if (n==0 or n==1): # caso base return 1 else: # caso recursivo n*(n-1)! return n * fat(n-1) print(fat(5)) 213 Números Pseudo-Aleatórios Criação de uma função f(x) que gera uma sequência de números a partir dovalor inicial x. X é chamado de semente para gerar a sequência de números. F(x) é chamado de gerador de sequência. 214 Exemplo def aleat(semente): semente = semente * 1103515245 + 12345 return int((semente / 65536) % 32768) for i in range(0,10): print(aleat(i),end='') >>> 0 16838 908 17747 1817 18655 2726 19564 3634 20472 215 Módulo Random # Retorna um inteiro determinado pelo range print(random.randrange(0, 101, 2)) >>> 30 # Retorna um elemento de uma sequência não vazia print(random.choice("abcdefghij")) >>> c print(random.choice(range(0,1000))) >>> 266 print(random.choice([1,2,3,4,5,6,7])) >>> 4 216 Módulo Random # importando a biblioteca random para ser chamada no programa import random # Retorna float x, 0.0 <= x < 1.0 print(random.random()) >>> 0.7974410192661805 # Retorna float x, 1.0 <= x < 10.0 print(random.uniform(1, 10)) >>> 6.263809049294528 # Retorna inteiro n, 0 <= n <=9 print(random.randint(0,9)) >>> 9 Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42 Slide 43 Slide 44 Slide 45 Slide 46 Slide 47 Slide 48 Slide 49 Slide 50 Slide 51 Slide 52 Slide 53 Slide 54 Slide 55 Slide 56 Slide 57 Slide 58 Slide 59 Slide 60 Slide 61 Slide 62 Slide 63 Slide 64 Slide 65 Slide 66 Slide 67 Slide 68 Slide 69 Slide 70 Slide 71 Slide 72 Slide 73 Slide 74 Slide 75 Slide 76 Slide 77 Slide 78 Slide 79 Slide 80 Slide 81 Slide 82 Slide 83 Slide 84 Slide 85 Slide 86 Slide 87 Slide 88 Slide 89 Slide 90 Slide 91 Slide 92 Slide 93 Slide 94 Slide 95 Slide 96 Slide 97 Slide 98 Slide 99 Slide 100 Slide 101 Slide 102 Slide 103 Slide 104 Slide 105 Slide 106 Slide 107 Slide 108 Slide 109 Slide 110 Slide 111 Slide 112 Slide 113 Slide 114 Slide 115 Slide 116 Slide 117 Slide 118 Slide 119 Slide 120 Slide 121 Slide 122 Slide 123 Slide 124 Slide 125 Slide 126 Slide 127 Slide 128 Slide 129 Slide 130 Slide 131 Slide 132 Slide 133 Slide 134 Slide 135 Slide 136 Slide 137 Slide 138 Slide 139 Slide 140 Slide 141 Slide 142 Slide 143 Slide 144 Slide 145 Slide 146 Slide 147 Slide 148 Slide 149 Slide 150 Slide 151 Slide 152 Slide 153 Slide 154 Slide 155 Slide 156 Slide 157 Slide 158 Slide 159 Slide 160 Slide 161 Slide 162 Slide 163 Slide 164 Slide 165 Slide 166 Slide 167 Slide 168 Slide 169 Slide 170 Slide 171 Slide 172 Slide 173 Slide 174 Slide 175 Slide 176 Slide 177 Slide 178 Slide 179 Slide 180 Slide 181 Slide 182 Slide 183 Slide 184 Slide 185 Slide 186 Slide 187 Slide 188 Slide 189 Slide 190 Slide 191 Slide 192 Slide 193 Slide 194 Slide 195 Slide 196 Slide 197 Slide 198 Slide 199 Slide 200 Slide 201 Slide 202 Slide 203 Slide 204 Slide 205 Slide 206 Slide 207 Slide 208 Slide 209 Slide 210 Slide 211 Slide 212 Slide 213 Slide 214 Slide 215 Slide 216
Compartilhar