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