


















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
uma apresentação sobre a linguagem de programação PYTHON
Tipologia: Notas de estudo
1 / 26
Esta página não é visível na pré-visualização
Não perca as partes importantes!
"Tendo, pois, tal esperança, usamos de muita ousadia no falar."
Jesus de Nazaré www.facebook.com/vsegueme www.twi�er.com/vemesegueme
O Python é uma linguagem de programação de alto nível criada por Guido Van Rossum, cuja primeira versão foi publicada em 1991. O Python suporta vários paradigmas de programação, como a programação
Tipos primitivos: são aqueles já embutidos no núcleo da linguagem Simples: números (int, long, float, complex) e cadeias de caracteres (st rings). Compostos: listas, dicionários, tuplas e conjuntos Tipos definidos pelo usuário: são correspondentes a classes (orienta -ção objeto).
VALORES NUMERICOS Como já foi dito acima, o Python suporta números inteiros, reais e complexos, que podemos manipular com as operações aritméticas convencionais (ver Tab. 2.1). Por exemplo Listagem 2.1:
n = 35*2 # Variável inteira x = 3.14 / 2.0 # Variável real z = 1 j # Variável complexa
Neste exemplo n = 3 · 52 = 75 e à variável z é atribuído o valor da unidade imaginária, que em Python é representada por j, mas que tem sempre que se seguir a um número para se distinguir da variável j. As operações que envolvam números inteiros e reais retornam um resultado real e as que envolvam dois inteiros devolvem um inteiro. Uma consequência importante desta última propriedade é que o mesmo operador divisão efetua a divisão inteira para dois valores inteiros, mas a divisão real quando um dos valores é real. Listagem 2.2:
print 1/3 #Imprime 0 print 1/3.0 #Imprime 0. prin t 1.0 / 3.0 #Imprime 0.
Este comportamento vai mudar na versão 3.0 do Python, sendo então o operador / sempre a divisão real, e utilizando // para a divisão inteira. Podemos forçar esse novo comportamento já na versão actual do Python se a primeira linha do nosso programa for:
Listagem 2.3:
from future import d i v i s i o n
Tabela 2.1: Operadores aritméticos
Operador Descrição
/ // ** %
Soma Subtração Multiplicação Divisão (real ou inteira) Divisão inteira Elevar a uma potência Módulo (resto da divisão inteira)
"Tendo, pois, tal esperança, usamos de muita ousadia no falar."
Jesus de Nazaré www.facebook.com/vsegueme www.twi�er.com/vemesegueme
print s [ : : 2 ] #Todos os elementos , incremento 2 , #imprime ' ace ' print s [ : : −1 ] #Todos os e lementos em ordem inv e r sa , #imprime ' f e d c b a ' print s [ 3 : ] #I n í c i o no í n d i c e 3 , imprime ' d e f '
Uma lista é um conjunto ordenado de objetos. Uma lista pode ser alterada,inserindo, apagando ou substituindo um ou mais elementos. Em Python as listas são delimitadas por parêntesis retos. Listagem 2.8:
l = [ 3. 1 4 , " pi " , 7 ] print l [ 0 ] #Imprime 3. l [ 2 ] += 3 # Agora l é [ 3. 1 4 , " p i " ,10] l. append (1 j ) #Ins e r e o número complexo 1 j #no f im da l i s t a
As listas, tal como as cadeias de caracteres e tuplos suportam inde usando sequências. Listagem 2.9:
l = [ 1 , "a" , 3. 1 4 , 2. 7 1 8 ] print l [ : 2 ] #Imprime [ 1 , ' a ' ]
Tabela 2.2: Métodos das listas
Método Descrição insert(i,v) append(v) remove(v) pop()
Insere o valor v na posição i Acrescenta o valor v ao 0 01 Cm da lista Remove da lista o primeiro item com valor v Retorna o último valor da lista, removendo-o.
index(v) count(v) sort() reverse()
Retorna o índice da primeira ocorrência de v. Se não existir retorna um erro. Número de vezes que v está na lista Ordena a lista Inverte a ordem dos elementos da lista
print s [ 4 : 2 ] #I n í c i o no í n d i c e 4 , termina no 2 , #como não corresponde a nenhum índice #p o s s í v e l , r e torna uma cadeia de #c a r a c t e r e s vaz ia , ' '
Em Python as cadeias de caracteres são imutáveis e embora possamos aceder a caracteres individuais não os podemos alterar:
In [1]: s = “abc” In [2]: s[0] = “z” TypeError: 'str' object does not support item assignment
Podemos no entanto atribuir à mesma variável um novo valor construído com base no anterior:
In [1]: s = “abc” In [2]: s = “z” + s[1:] In [3]: print s zbc
Os tuplos são sequências ordenadas de objectos, semelhantes às listas, mas imutáveis. Os tuplos são delimitados por parêntesis.
Listagem 2.10:
Classe.método(instância, argumento). Os métodos devem referenciar explicitamente a referência para o objeto incluindo o parâmetro self como o primeiro argumento do método.[23] Antes da versão 3.0, Python possuia dois tipos de classes: "old-style" e "new-style". Classes old-style foram eliminadas no Python 3.0, e todas são new-style. Em versões entre 2.2 e 3.0, ambos tipos de classes podiam ser usadas. A sintaxe de ambos estilos é a mesma, a diferença acaba sendo de onde objeto da classe é herdado, direta ou indiretamente (todas classes new- style herdam de object e são instancias de type). As classes new-styles nada mais são que tipos definidos pelo usuário.
TRATAMENTO DE EXCEÇÕES
Python suporta e faz uso constante de tratamento de exceções como uma forma de testar condições de erro e outros eventos inesperados no programa. É inclusive possível capturar uma exceção causada por um erro de sintaxe. O estilo da linguagem apóia o uso de exceções sempre que uma condição de erro pode aparecer. Por exemplo, ao invés de testar a disponibilidade de acesso a um recurso, a convenção é simplesmente tentar usar o recurso e capturar a exceção caso o acesso seja rejeitado (recurso inexistente, permissão de acesso insuficiente, recurso já em uso, ...). Exceções são usadas frequentemente como uma estrutura de seleção, substituindo blocos if-else, especialmente em situações que envolvem threads
. Uma convenção de codificação é o EAFP, do inglês, "é mais fácil pedir perdão que permissão". Isso significa que em termos de desempenho é preferível capturar exceções do que testar atributos antes de os usar. Segue abaixo exemplos de código que testam atributos ("pedem permissão") e que capturam exceções ("pedem perdão"): Teste de atributo if hasattr( spam, 'eggs') : ham = spam. eggs else : handle_error ()
Captura de exceção try : ham = spam. eggs except AttributeError : handle_error () Ambos os códigos produzem o mesmo efeito, mas há diferenças de desempenho. Quando spam possui o atributo eggs, o código que captura exceções é mais rápido. Caso contrário, a captura da exceção representa uma perda considerável de desempenho, e o código que testa o atributo é mais rápido. Na maioria dos casos o paradigma da captura de exceções é mais rápido, e também pode evitar problemas de concorrência. [27]^ Por exemplo, num ambiente multitarefa, o espaço de tempo entre o teste do atributo e seu uso de fato pode invalidar o atributo, problema que não acontece no caso da captura de exceções.
Exceções Em geral, com laços convencionais, todas as necessidades `normais' de controle de um programa podem ser implementadas. No entanto, quando algo inesperado ocorre, ou uma condição de erro conhecido é atingida, Python oferece uma forma adicional de controlar o fluxo de execução: a exceção. A exceção é um recurso de linguagens de programação modernas que serve para informar que uma condição incomum ocorreu. Embora existam outras aplicações, em geral comunicam-se através de exceções erros ou problemas que ocorrem durante a execução de um programa. Exceções são internamente geradas pelo interpretador Python quando situações excepcionais ocorrem. No exemplo abaixo,
a = [1, 2, 3] print a[5] o código interno do interpretador sabe que não podemos acessar uma lista através um índice não-existente, e gera uma exceção: Traceback (most recent call last): File "
", line 1, in? IndexError: list index out of range Vamos analisar a mensagem exibida. A primeira linha anuncia um traceback, que é a forma como é exibida a pilha de execução que gerou a exceção. A segunda indica a linha de código na qual ocorreu o problema, e o arquivo. Como estamos usando o modo interativo neste exemplo, o arquivo aparece como , que é a entrada padrão. A terceira linha indica o tipo de exceção levantada -- neste caso, IndexError -- e informa uma mensagem que descreve mais especificamente o problema. Tratando exceções A exceção normalmente imprime um traceback e interrompe a execução do programa. Uma ação comum é testar e controlar a exceção; para este fim, usamos uma cláusula try/except: a = [1, 2, 3] try: ... print a[5] ... except IndexError: ... print "O vetor nao possui tantas posições!" O vetor nao possui tantas posições!
Estrutura if E estrutura do if do Python não é muito diferente ao if de outras linguagens de programação, exceto pela ausência de delimitador de bloco de comandos, que no Python é feita pela indentação do texto. Sua sintaxe é apresentada abaixo: if <condição 1>:
1 2 3 4 5 6 7 8 9
#!/bin/env python
n = input("Entre com um inteiro: ") if type(n) == int: if (n % 2) == 0: print '%d é um par' % n else : print '%d é impar' % n else: print 'Este número (%s) não é um inteiro!' % n O comando input , introduzido no código acima, permite a entrada apenas de valores numéricos. Para a entrada de strings , deve-se usar o raw_input , que possui uma sintaxe semelhante ao input.
Estrutura for A estrutura de laço for segue a mesma ideia do for do bash , com a adição da sentença else. No laço for , a variável do laço alterna seu conteúdo com os valores da lista passada e caso nenhum break seja encontrado, até que o último elemento da lista seja processado, os comandos da sentença else serão executados. Sua sintaxe segue a forma abaixo: for <variável> in
semana = ['dom', 'seg', 'ter', 'qua', 'qui', 'sex', 'sab'] for s in semana: ... print s, ... dom seg ter qua qui sex sab for d in range(30): ... if (d+1) % 7 == 0: ... print '%4s' % (d+1) ... else : ... print '%4s' % (d+1), ... 1 2 3 4 5 6 7 8 9 10 11 12 13 14
O break é empregado para interromper o for interno, a cada vez que o resto da divisão do número testado é nulo, que indica ter encontrado um divisor. List Comprehension List Comprehension é uma forma curta de se criar uma lista a partir de um laço for embutido. Sua sintaxe é apresentada a seguir: [ expressão_com_var for var in lista_de_valores if
O if é opcional. Os dois exemplos a segui geram uma lista de múltiplos de 4:
[ 4*x for x in range(1,11)] [4, 8, 12, 16, 20, 24, 28, 32, 36, 40] [ x for x in range(1,41) if x % 4 == 0 ] [4, 8, 12, 16, 20, 24, 28, 32, 36, 40] Vários List Comprehension podem ser associados em uma única lista: [ '%d%d' % (x, y) for x in range(2) for y in range(2)] ['00', '01', '10', '11'] Generator Expression Generator Expression são similares a List Comprehension , com um diferença fundamental, ele retorna um iterador a uma tupla e não uma lista. ( expressão_com_var for var in lista_de_valores if
) b = ( '%d%d' % (x, y) for x in range(2) for y in range(2)) for i in b: print i ... 00 01
10 11
b <generator object
at 0x7fece5bb8690>
Uma grande vantagem de Generator Expression com relação a List Comprehension é o uso de recursos, já que estas primeiras utilizam
estruturas mais simples, próprias para o uso em laços e acessos sequências, um iterador.
Estrutura while O laço while é empregado quanto se deseja realizar um teste a cada interação do laço. O while também suporta as sentenças break , continue e else , como no laço for. Sua sintaxe é apresentada a seguir: while <contição>:
#!/bin/env python
from math import sqrt
print 'Imprime os números primos de 1 até n. \n '
n = input('Entre com o limite superior para o primo: ')
print ' \n São primos:' a = range(n+1) r = int(sqrt(n)) for i in range(2, r): if a[i] == 0:
Programas são divididos em sub-programas, cada sub-programas é invocado por meio de um identificador e uma lista de entradas, os resultados computados por um sub-programa pode ser combinado com os de outro sub- programa. Em Python, subprogramas têm o nome de funções. FUNÇÕES Uma função é um bloco de código ao qual são opcionalmente passados parâmetros e pode retornar um único valor. Por exemplo podemos escrever o exemplo de uma tabuada como sendo Listagem 4.1: def tabuada (n ) : print "A tabuada do" ,n , " é : " for i in range ( 1 , 1 1 ) : print n , "" , i , "=" ,n i tabuada ( 9 ) #Chama a função tabuada que #acabamos de d e f i n i r para n=
Uma função é definida pela instrução def, que é seguida pelo nome da função e por parêntesis, que contêm a lista de parâmetros. Opcionalmente uma função pode usar a instrução return, que termina a função e retorna ao chamador. A instrução return pode ser seguida de um valor, sendo esse o valor da chamada da função. Listagem 4.2: def soma ( a , b ) : return a+b c = soma ( 2 , 3 ) print soma ( " abc " , " de f " ) # Imprime a b c d e f
Neste exemplo de0 01 C nimos uma função que retorna a soma de dois números,