curso de pythonaluno
TRANSCRIPT
-
8/4/2019 Curso de PythonALUNO
1/93
Prof. Marco Andr Argenta
Grupo de bioengenhariaCESEC/UFPR
SciPy
PyCUDA
-
8/4/2019 Curso de PythonALUNO
2/93
Neste curso de introduo linguagem de programao Python,pretende-se trabalhar com oscomponentes bsicos e fundamentais dalinguagem, fazendo com que o alunotenha plena capacitao de iniciar odesenvolvimento em python.
Alm do bsico e dofundamental da linguagem, serodiscutidos alguns aspectos como oambiente de programao, os pacotesmais teis para a programao cientfica,
visualizao, gerao de ambiente, etc.Por fim, uma introduo ao PyCUDA,wrapper para programao em placasde video da nvidia usando o python e oCUDA.
2
-
8/4/2019 Curso de PythonALUNO
3/93
Mdulo I
1. Um pouco de histria
2. Introduo
3. Configurando o Eclipse
4. Introduo Sintaxe
5. Construes Bsicas
6. Tipos Bsicos7. Biblioteca Padro
8. Referncias
3
-
8/4/2019 Curso de PythonALUNO
4/93
Nascimento do python, bases do python e o ambiente deconcepo, quem usa?
4
-
8/4/2019 Curso de PythonALUNO
5/93
Criada em 1989 pelo holands Guido van Rossum no Centrum voorWiskunde en Informatica (CWI), em Amsterd, Holanda.
Influenciada pela linguagem ABC, desenvolvida no CWI por Guido eoutros nas dcadas de 70 e 80. ABC tinha um foco bem definido: ser uma
linguagem de programao para usurios inteligentes de computadoresque no eram programadores: Fsicos, engenheiros, cientistas sociais e atlinguistas.
O projeto de sistema operacional distribudo Amoeba precisava de umalinguagem de script. Nasce o Python.
5
-
8/4/2019 Curso de PythonALUNO
6/93
Elementos que eram bem sucedidos no ABC.
Estruturas de dados poderosas inclusas: Listas, Dicionrios, Strings.
Usar indentao para delimitar blocos, eliminando chaves.
Fcil extenso (lio aprendida com os erros do ABC).
Fcil de portar: alm do Amoeba, gostaria de executar em Unix,Macintosh e Windows.
Influncias de Modula-2 e Modula-3: mdulos e namespaces.
6
-
8/4/2019 Curso de PythonALUNO
7/93
Universidade: pessoas altamente especializadas para desenvolver eopinar sobre os elementos do projeto;
Descontrado: o nome Python vem da srie de humor Monty PythonsFlying Circus;
7
Monty Python's Flying Circus (em Portugal tambm conhecido, masraramente, por Os Malucos do Circo) foi um srie para televisobritnica transmitido pela BBC entre 1969 a 1974. Consistiu de 45episdios divididos em 4 temporadas.
A srie, que foi ao ar pela primeira vez em 5 de outubro de 1969,foi criada, roterizada e estrelada pelos Monty Python GrahamChapman, John Cleese, Terry Gilliam, Eric Idle, Terry Jones e MichaelPalin.
Sem prazos, Sem presso: o desenvolvimento no foipressionado por estratgias de marketing, prazos,clientes ou qualquer outro fator que pudesseinfluenciar nas decises de projeto, resultando emmaior qualidade;
Software Livre: garante a vida da tecnologia.
-
8/4/2019 Curso de PythonALUNO
8/93
NASA: repositrio de CAD/CAE/PDM, gerncia de modelos, integrao esistema colaborativo: We chose Python because it provides maximumproductivity, code thats clear and easy to maintain, strong and extensive(and growing!) libraries, and excellent capabilities for integration withother applications on any platform.
University of Maryland: ensino: I have the students learn Python in ourundergraduate and graduate Semantic Web courses. Why? Becausebasically theres nothing else with the flexibility and as many web
libraries.
Maior case Python da atualidade (Help Gmail, GoogleGroups, etc):Python has been an important part of Google since the beginning, and
remains so as the system grows and evolves. Today dozens of Googleengineers use Python, and were looking for more people with skills in this
language. Peter Norvig, director of search quality at Google, Inc.
8
-
8/4/2019 Curso de PythonALUNO
9/93
Caractersticas bsicas, caractersticas importantes.
9
-
8/4/2019 Curso de PythonALUNO
10/93
Interpretada: usa mquina virtual, facilita portabilidade.
Interativa: pode-se programar interativamente, os comandos soexecutados enquanto so digitados. Facilita testes, desenvolvimentorpido e outros. Facilitadores esto presentes help(obj).
Orientada a Objetos: tudo1 objeto: nmeros, strings, funes, classes,instncias, mtodos, ...
Fortemente Tipada: No existe casts e nem converso automtica, no semistura tipos automagicamente.
Tipagem Dinmica: A tipagem de um objeto feita em
tempo de execuo. Um objeto tem tipo, uma varivel no.
10
-
8/4/2019 Curso de PythonALUNO
11/93
Sintaxe clara, sem caracteres inteis:
blocos so marcados por indentao
parnteses so opcionais, s precisam ser utilizados para
eliminar ambiguidades.
palavras-chave (keywords) e formaes que ajudam na leitura,
como for ... in ....
Fcil extenso: codificar nos mdulos muito fcil, podendo utilizar bibliotecas nativas, aproveitando desempenho,
caractersticas nativas das plataformas, etc.
API Python/C bem simples
Diversos conversores automticos (SWIG, SIP, ...) Jython: usando Python em Java e vice-versa.
PyRex: pseudo linguagem para facilitar integrao Python + C/C++.
11
-
8/4/2019 Curso de PythonALUNO
12/93
Tipos bsicos poderosos: listas, dicionrios (hash tables), strings, ...otimizados e de fcil uso.
Baterias Inclusas: biblioteca padro contm diversos recursos teis:Interface Grfica (Tk), XML, Servidores (TCP, UDP, HTTP, ...), HTML,protocolos de internet (email, http, ...), xmlrpc, ...
Grande base de cdigo e bibliotecas de terceiros
Grande comunidade de desenvolvedores
Software Livre: liberdade de uso, distribuio. Licena prpria,compatvel com GPL, porm pode distribuir somente o binrio.
Independente: a entidade sem fins lucrativos Python Software Foundationcuida da propriedade intelectual do Python.
12
-
8/4/2019 Curso de PythonALUNO
13/93
Python(x,y), interpretador, projeto.
13
-
8/4/2019 Curso de PythonALUNO
14/9314
Python (x,y) um software livre para computao numrica, cientfica, deengenharia, para anlise de dados e visualizao de dados baseado nalinguagem de programao Python, usando as interfaces grficas dousurio Qt e o ambiente de desenvolvimento integrado Eclipse.
O que exatamente o Python (x,y)?
Python (x, y) uma distribuio do cientfica-orientada do Pythonbaseada no Qt e Eclipse. Sua finalidade ajudar os programadorescientficos que utilizam linguagens interpretadas (como MATLAB ou IDL) ou
linguagens compiladas (C/C++ ou Fortran), a mudar para Python.Programadores de C/C++ ou Fortran vo apreciar poder reutilizar seuscdigos tal como esto usando um wrapper e podendo assim cham-losdiretamente a partir de scripts em Python.
-
8/4/2019 Curso de PythonALUNO
15/9315
Atalhos: Documentao:
-
8/4/2019 Curso de PythonALUNO
16/9316
Aps iniciar um novoprojeto, deve-seconfigurar ointerpretador Python.
Isso feito indo emwindows > preferences> PyDev > interpreterPython
Basicamente, clica-seem Auto Config eaps OK.
-
8/4/2019 Curso de PythonALUNO
17/93
Sintaxe bsica, comantrios, identao, literais e operadores.
17
-
8/4/2019 Curso de PythonALUNO
18/93
Um programa em Python constitudo de linhas lgicas: Linhas Lgicas so terminadas com uma nova linha;
Exceto quando explicitamente continuadas na prxima linha fsica, para istousa-se o \.
Ou implicitamente continuadas na prxima linha fsica por expresses queusam parnteses, colchetes ou chaves.
18
-
8/4/2019 Curso de PythonALUNO
19/93
Aps o caractere # at o final da linha, tudo considerado umcomentrio e ignorado, exceto pelos comentrios funcionais.
Comentrios funcionais geralmente so usados para: alterar a codificao do arquivo fonte do programa acrescentando um comentrio com
o texto #-*- coding: -*#- no inicio do arquivo, aonde a
codificao do arquivo (cp1251 para portugus usando o windows PT-BR, utf-8 nolinux). Alterar a codificao necessrio para suportar caracteres que no fazemparte da linguagem inglesa, no cdigo fonte do programa.
definir o interpretador que ser utilizado para rodar o programa em sistemas UNIX,atravs de um comentrio comeando com #! no inicio do arquivo, que indica ocaminho para o interpretador (geralmente a linha de comentrio ser algo como
#!/usr/bin/env python).
19
-
8/4/2019 Curso de PythonALUNO
20/93
Em Python, os blocos de cdigo so delimitados pelo uso de indentao.
A indentao no precisa ser consistente em todo o arquivo, s no blocode cdigo, porm uma boa prtica ser consistente no projeto todo.
Cuidado ao misturar TAB e Espaos: configure seu editor!
Utilitrio tabnanny (geralmente est na instalao do seu python, como/usr/lib/python2.3/tabnanny.py) verifica indentao.
20
-
8/4/2019 Curso de PythonALUNO
21/9321
sada
-
8/4/2019 Curso de PythonALUNO
22/93
Devem comear com uma letra a-z, sem acentuao ou underline _.
Depois pode ser seguido por uma letra a-z, sem acentuao, dgitos eunderline _.
Alguns identificadores so palavras-chave reservadas:
and, del, for, is, raise, assert, elif, from,lambda, return, break, else, global, not, try,
class, except, if, or, while, continue, exec,
import, pass, yield, def, finally, in, print
Python case sensitive, ou seja, Maisculas e Minsculas so diferentes!
22
-
8/4/2019 Curso de PythonALUNO
23/93
Strings Convencional: texto ou texto
Multi-Line: texto vrias linhas
ou texto vrias linhas
Unicode: utexto unicode ou utexto, ...
Raw: rtexto bruto\n
Strings em vrias linhas so concatenadas.
Nmeros parecido com outras linguagens, C, C++, Java: Inteiro: 123 (decimal), 0632 (octal), 0xff00 (hexadecimal)
Longo: 123L ou 123l
Ponto Flutuante: 3.14, 10., .12, 1.23e-9 Complexos: 10.0 + 3j
23
-
8/4/2019 Curso de PythonALUNO
24/93
24
Para maiores informaes import operator; help(operator).
Operador Descrio Mtodo correspondente
+ adio __add__
- subtrao __sub__
* multiplicao __mul__
** potenciao __pow__
/ diviso __div__
// diviso por baixo (floor) __floordiv__
% mdulo (resto) __mod__
> deslocamento direita __rshift__
& e lgico (and) bit-a-bit __and__
| ou lgico (or) bit-a-bit __or__
^ ou exclusivo (xor) bit-a-bit __xor__
~ Inverte __inv__
< menor __lt__
> maior __gt__
= maior ou igual __ge__
== igual lgico __eq__
!= diferente lgico __ne__
-
8/4/2019 Curso de PythonALUNO
25/93
Variveis, controles de fluxos, laos e funes.
25
-
8/4/2019 Curso de PythonALUNO
26/93
Python usa tipagem dinmica: uma varivel no tem tipo fixo, ela tem otipo do objeto que ela contm.
Para criar um novo contedo para a varivel necessrio apenas umaatribuio.
Um contedo destrudo e recolhido pelo coletor de lixo quandonenhuma varivel ou estrutura aponta mais para ele.
26
-
8/4/2019 Curso de PythonALUNO
27/93
Utilizar o Python no modo interativo como calculadora e calcular:
Respostas:
27
250250 . 3
250 . 3 1000400.0
250+ 50
-
8/4/2019 Curso de PythonALUNO
28/93
Executando instrues de forma condicional do tipo
if :
elif :
elif :
else:
Sendo:
: sentena que possa ser avaliada como verdadeira ou falsa.: seqncia de linhas de comando.
As clausulas elif e else so opcionais e podem existir vrios elifs para o mesmo if.
Parnteses s so necessrios para evitar ambigidades.
28
-
8/4/2019 Curso de PythonALUNO
29/93
Em Python
29
Sendo raw_input( ) o comando para a entrada pelo teclado em tempo de execuo.
Usando diversas condies:
Apartir da verso 2.5, python suporta tambm o seguinte tipo de expresso:
= if else
-
8/4/2019 Curso de PythonALUNO
30/93
30
Os operadores lgicos so: and, or, not, is e in. and: retorna verdadeiro se e somente se receber duas expresses que forem verdadeiras. or: retorna falso se e somente se receber duas expresses que forem falsas.
not: retorna falso se receber uma expresso verdadeira e vice-versa.
is: retorna verdadeiro se receber duas referncias ao mesmo objeto e falso em caso contrrio.
in: retorna verdadeiro se receber um item e uma lista e o item ocorrer uma ou mais vezes na
lista e falso em caso contrrio. Os seguintes valores so considerados falsos:
Os seguintes valores so considerados falsos:
False (falso).
None (nulo).
0 (zero).
'' (string vazia). [] (lista vazia).
() (tupla vazia).
{} (dicionrio vazio).
Outras estruturas com o tamanho igual a zero.
-
8/4/2019 Curso de PythonALUNO
31/93
31
Implementar o seguinte conjunto de regras em Python: Se a for verdadeiro e b for falso, imprima Caso 1
Seno, Caso a for falso e b for verdadeiro, imprima Caso 2
Caso contrrio:
Caso c for maior que 10 e d estiver entre 0.0 e 100.0, imprima Caso 3
Caso e estiver na lista lst, imprima Caso 4
Seno imprima Caso 5
-
8/4/2019 Curso de PythonALUNO
32/93
32
So dois tipos de laos em python:while CONDICAO :
BLOCO_DE_CODIGO
for VARIAVEL in SEQUENCIA :
BLOCO_DE_CODIGO
Em python:
-
8/4/2019 Curso de PythonALUNO
33/93
33
continue interrompe a execuo da iterao atual e vai para a prxima,se esta existir.
break interrompe a execuo do lao.
Sada:
-
8/4/2019 Curso de PythonALUNO
34/93
34
Visando facilitar a vida do programador, Python fornece a clusula else para oslaos. Esta ser executada quando a condio do lao for falsa, eliminando anecessidade do programador manter uma varivel de estado.
Sada:
Sada:
No exemplo acima, a mensagem Lao chegou ao fim s imprimida
caso no existir um elemento que seja igual a parada.
-
8/4/2019 Curso de PythonALUNO
35/93
35
Dada uma lista de palavras lista e uma palavra chave imprimir o ndice do
elemento que encontrou a palavra, seno imprimir Palavra no encontrada.
Sada:
-
8/4/2019 Curso de PythonALUNO
36/93
36
enumerate(sequencia) um iterador que retorna pares (indice,sequencia[indice])
Em python, a construo a seguir vlida:
Ento for ndice, palavra in enumerate(lista) tambm vlido!
Sada:
-
8/4/2019 Curso de PythonALUNO
37/93
37
Funes so blocos de cdigo identificados por um nome, que podemreceber parmetros pr-determinados.
No Python, as funes: Podem retornar ou no objetos. Aceitam Doc Strings. Aceitam parmetros opcionais (com defaults). Se no for passado o parmetro
ser igual ao default definido na funo. Aceitam que os parmetros sejam passados com nome. Neste caso,a ordem em
que os parmetros foram passados no importa. Tem namespace prprio (escopo local), e por isso podem ofuscar definies de
escopo global.
Podem ter suas propriedades alteradas (geralmente por decoradores).
Doc Strings so strings que esto associadas a uma estrutura do Python.Nas funes, as Doc Strings so colocadas dentro do corpo da funo,geralmente no comeo. O objetivo das Doc Strings servir dedocumentao para aquela estrutura.
-
8/4/2019 Curso de PythonALUNO
38/93
38
Sintaxe:def NOME_DA_FUNCAO ( LISTA_DE_PARAMETROS ):
BLOCO_DE_CODIGO
Em python:
Sada:
-
8/4/2019 Curso de PythonALUNO
39/93
39
Pode-se ter parmetros com valores padro, estes devem vir depois dosparmetros sem valor padro.
Cuidado!
O valor do padro para um parmetro calculado somente uma vezquando o programa carregado, caso voc use um objeto mutvel, todasas chamadas usaro a mesma instncia.
Sada:
-
8/4/2019 Curso de PythonALUNO
40/93
40
Exemplo do objeto mutvel:
Talvez seja este o comportamento que voc quer, mas talvez no. Caso desejeque uma nova instncia seja criada para cada chamada, utilize algo como:
ou
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
41/93
41
Argumentos sem nome: os argumentos so passados para a funo na forma deuma lista, na ordem em que foram digitados:
Argumentos com nome: os argumentos so passaos para a funo na forma deum dicionrio, o nome do argumento a chave.
Usando Ambos:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
42/93
42
Faa uma funo que dado um nmero, retorne o prximo na sequncia deRobert Morris (http://www.ocf.berkeley.edu/~stoll/number_sequence.html)
1, 11, 21, 1211, 111221, ...
Sada:
-
8/4/2019 Curso de PythonALUNO
43/93
43
Um bloco vazio criado com o keyword pass
Qualquer string solta (no atribuda a variveis) considerada umadocstring e contribui para a documentao do bloco, no atributo
__doc__:
-
8/4/2019 Curso de PythonALUNO
44/93
Nmeros, Sequncias (listas, tuplas, dicionrios), Mapeamento eStrings.
44
-
8/4/2019 Curso de PythonALUNO
45/93
45
Python oferece alguns tipos numricos na forma de builtins:
Inteiro (int): i = 1
Real de ponto flutuante (float): f = 3.14
Complexo (complex): c = 3 + 4j
Alm dos nmeros inteiros convencionais, existem tambm os inteiroslongos, que tem dimenso arbitrria e so limitados pela memriadisponvel. As converses entre inteiro e longo so realizadas de formaautomtica. A funo builtin int() pode ser usada para converter outrostipos para inteiro, incluindo mudanas de base.
-
8/4/2019 Curso de PythonALUNO
46/93
46
Exemplo:
Os nmeros reais tambm podem ser representados em notaocientifica, por exemplo: 1.2e22.
Sada:
-
8/4/2019 Curso de PythonALUNO
47/93
47
O Python tem uma srie de operadores definidos para manipularnmeros, atravs de clculos aritmticos, operaes lgicas (que testam seuma determina condio verdadeira ou falsa) ou processamento bit-a-bit (em que os nmeros so tratados na forma binria).
Operaes aritmticas:
Soma (+).
Diferena (-).
Multiplicao (*).
Diviso (/): entre dois inteiros funciona igual diviso inteira. Emoutros casos, o resultado real.
Diviso inteira (//): o resultado truncado para o inteiroimediatamente inferior, mesmo quando aplicado em nmeros reais,
porm neste caso o resultado ser real tambm. Mdulo (%): retorna o resto da diviso.
Potncia (**): pode ser usada para calcular a raiz, atravs deexpoentes fracionrios (exemplo: 100 ** 0.5).
Positivo (+).
Negativo (-).
Operaes lgicas:
Menor ().
Menor ou igual (=).
Igual (==).
Diferente (!=).
Operaes bit-a-bit (bitwise): Deslocamento para esquerda ().
E bit-a-bit (&).
Ou bit-a-bit (|).
Ou exclusivo bit-a-bit (^).
Inverso (~).
-
8/4/2019 Curso de PythonALUNO
48/93
48
Durante as operaes, os nmeros sero convertidos de forma adequada(exemplo: (1.5+4j) + 3 resulta em 4.5+4j).
Alm dos operadores, tambm existem algumas funes builtin para lidarcom tipos numricos: abs(), que retorna o valor absoluto do nmero, oct(),que converte para octal, hex(), que converte para hexadecimal, pow(),
que eleva um nmero por outro eround(), que retorna um nmero realcom o arredondamento especificado.
Sada:
-
8/4/2019 Curso de PythonALUNO
49/93
49
Operadores de atribuio:
= Operador de atribuio simples ( c = a + b vai atribuir o valor de a+ b em c).
+= Adiciona e atribui (c += a equivalente a c = c + a).
-= Subtrai e atribui ( c-= a equivalente a c = ca)
*= Multiplica e atribui (c *= a equivalente a c = c * a)
/= Divide atribui (c /= a equivalente a c = c / a)
%= Usa o mdulo e atribui (c %= a equivale a c = c % a)
**= Calcula o expoente atribui (c **= a equivalente a c = c ** a)
//= Diviso por baixo e atribui (c //= a equivalente a c = c // a)
-
8/4/2019 Curso de PythonALUNO
50/93
Listas so colees heterogneas de objetos, que podem ser de qualquertipo, inclusive outras listas. As listas no Python so mutveis, podendo seralteradas a qualquer momento.
Criao de uma lista:
Acessando elementos pelo ndice:
Mudando elementos j existentes (a posio j deve existir):
Acessando pedaos da lista:
50
Sada:
Mostrando a lista:
Mostrando as novas listas:
-
8/4/2019 Curso de PythonALUNO
51/93
Acrescentando mais um item ao final da lista:
Estendendo a lista com outra:
Ordenando a lista (altera as posies na lista):
Invertendo a lista (tambm altera as posies):
Contar ocorrncias de um elemento:
Sada:
Sada:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
52/93
Mostrando a posio do elemento na lista CORRIGIR index():
Inserir um elemento em certa posio na lista:
Apagando um elemento da lista:
Apagando um pedao da lista:
Apagando certo elemento na lista:
Mudando um pedao da lista:
Sada:
Sada:
Sada:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
53/93
Repetindo uma lista:
Mostrando o tamanho da lista:
Criando uma lista numerada com as posies:
Criando uma lista numerada com as posies em formato string:
Criando uma lista com o ndice ao quadrado, mas somente se for mltiplode 2:
Sada:
Sada:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
54/93
Criando uma lista de de 0 a 30 indo de 10 em 10:
Juntando duas listas formando tuplas (as listas no precisam ter o mesmotamanho, no entanto as tuplas se formaro at o tamanho da menor lista):
Somando os elementos de uma lista:
Esses so as principais operaes com listas. Para mais informaes: help(list) no console do python ou
http://www.python.org/doc/2.3/lib/typesseq-mutable.html ou http://docs.python.org/tutorial/datastructures.html
Sada:
Sada:
Sada:
http://www.python.org/doc/2.3/lib/typesseq-mutable.htmlhttp://docs.python.org/tutorial/datastructures.htmlhttp://docs.python.org/tutorial/datastructures.htmlhttp://www.python.org/doc/2.3/lib/typesseq-mutable.htmlhttp://www.python.org/doc/2.3/lib/typesseq-mutable.htmlhttp://www.python.org/doc/2.3/lib/typesseq-mutable.htmlhttp://www.python.org/doc/2.3/lib/typesseq-mutable.htmlhttp://www.python.org/doc/2.3/lib/typesseq-mutable.htmlhttp://www.python.org/doc/2.3/lib/typesseq-mutable.html -
8/4/2019 Curso de PythonALUNO
55/93
1. Crie uma lista lista, verifique se valor est dentro dela, caso verdadeimprima Sim, seno imprima No.
2. Crie outra lista. Uma lista lista, itere sobre a lista, imprimindo cada umde seus elementos.
3. Usando a lista de 10 componentes, cada componente com o valor do seuindice, crie uma nova lista rotaciona_3 que cada posio estrotacionada, ou corrida, ou caminhada na lista em 3 posies para a
esquerda, por exemplo, o ndice zero ficaria:0 = 0 + 3
Dica: existe uma forma simples de se fazer isso em python.
-
8/4/2019 Curso de PythonALUNO
56/93
Semelhantes as listas, porm so imutveis: no se pode acrescentar,apagar ou fazer atribuies aos itens.
Criao da tupla:
Mostrando elemento:
Outros exemplos:
Tuplas podem ser convertidas em listas e vice-versa:
As tuplas so mais eficientes do que as listas convencionais, poisconsomem menos recursos computacionais.
Sada:
Sadas:
Sadas:
-
8/4/2019 Curso de PythonALUNO
57/93
Um dicionrio uma lista de associaes compostas por uma chave nicae estruturas correspondentes. Dicionrios so mutveis, tais como as listas.
A chave tem que ser de um tipo imutvel, geralmente strings, mas tambmpodem ser tuplas ou tipos numricos. O dicionrio do Python no fornecegarantia de que as chaves estaro ordenadas.
Estrutura:
Criao:
57
ElementosImutveis
Chaves
Material
Young
Limites
Objetosquaisquer
Valores
Ao
210e9
(210,380)(0, 0) (30,190)
-
8/4/2019 Curso de PythonALUNO
58/93
Acessando elementos:
Adicionando elementos (a chave precisa sem imutvel, p. ex. n pode seruma lista):
Apagar um elemento do dicionrio:
Apagar completamente o dicionrio:
58
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
59/93
Obtendo itens chaves e valores:
Obtendo iteradores (otimizado para for):
59
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
60/93
Crie um dicionrio simulao e coloque nele os dados de uma simulaode elementos finitos: material, elemento, dof, fora, apoio
Usando o dicionrio criado anteriormente, imprima material e acrescentemodos ao dicionrio com o valor de 5 e exclua a chave dof.
Tambm usando simulao, imprima todos os itens do dicionrio no
formato chave : valor, ordenado pela chave.
60
-
8/4/2019 Curso de PythonALUNO
61/93
As strings no Python so buitins para armazenar texto. So imutveis,sendo assim, no possvel adicionar, remover ou mesmo modificar algumcaractere de uma string. Para realizar essas operaes, o Python precisacriar um nova string.
Tipos: String padro: s = Led Zeppelin
String unicode: u = uBjrk
A string padro pode ser convertida para unicode atravs da funounicode().
A inicializao de strings pode ser: Com aspas simples ou duplas. Em vrias linhas consecutivas, desde que seja entre trs aspas simples ou duplas.
Sem expanso de caracteres (exemplo: s = r'\n', aonde s conter os caracteres \ en).
-
8/4/2019 Curso de PythonALUNO
62/93
Criao:
Acesso a elementos pelo ndice:
Acesso a pedaos da string:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
63/93
Funes de procura por substrings: No incio:
No final:
Em qualquer posio:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
64/93
Funes de verificao de contedo: Se so somente letras:
Se so somente nmeros:
Se so letras e nmeros:
Se so somente espaos:
Sada:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
65/93
Transformar sequncia em texto e texto em sequncia: Juntando textos de uma lista em um texto s:
Quebrando um texto em uma lista:
Transformar a caixa do texto (ser criada uma nova instncia): Para maiscula:
Para minscula:
Inverter maisculas e minsculas:
Sada:
Sada:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
66/93
Verificar se est em maiscula, minscula, com a primeira letra maiscula:
Retirada de caracteres (ser criada uma nova instncia): Da esquerda:
Da direita:
De ambos os lados:
Sada:
Sada:
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
67/93
Troca de caracteres (ser criada uma nova instncia): Troca de pedaos:
Troca de caracteres individuais baseados em uma tabela:
Formatao de strings: Operador % usado para fazer a formatao da string.
O formato deve seguir a conveno do printf() do C. Pode-se usar valores nomeados, passando um dicionrio.
Operadores extra, como o %r so usados para a representao do objeto.
Mais informaes em http://docs.python.org/lib/typesseq-strings.html (item 6.6.2).
Sada:
Sada:
http://docs.python.org/lib/typesseq-strings.htmlhttp://docs.python.org/lib/typesseq-strings.htmlhttp://docs.python.org/lib/typesseq-strings.htmlhttp://docs.python.org/lib/typesseq-strings.html -
8/4/2019 Curso de PythonALUNO
68/93
Operador % usado para fazer interpolao de strings. Ainterpolao mais eficiente no uso de memria do que a concatenaoconvencional.
Smbolos usados na interpolao: %s: string.
%d: inteiro. %o: octal.
%x: hexacimal.
%f: real.
%e: real exponencial.
%%: sinal de percentagem. Os smbolos podem ser usados para apresentar nmeros em diversos
formatos.
-
8/4/2019 Curso de PythonALUNO
69/93
Exemplos:
Sada:
-
8/4/2019 Curso de PythonALUNO
70/93
A partir da verso 2.6, est disponvel outra forma de interpolao almdo operador %, o mtodo de string e a funo chamados format().
Sada:
-
8/4/2019 Curso de PythonALUNO
71/93
1. Converta uma string para maiscula e imprima.2. Dado o texto abacate troque as letras a por 4 e imprima.
3. Dado o texto bin:x:1:1:bin:/bin:/bin/false, quebre-o na ocorrncia de:.
4. Dado uma tupla (a, b, c), transforme-a em uma string, separada por
*.5. Uma mensagem est criptografada usando o ROT13:
fr ibpr rfgn yraqb rfgr grkgb, cnenoraf. pnfb anb graun hgvyvmnqb bgenafyngr(), gragr qrabib!.
Decodifique essa mensagem considerando somente letras minsculas.
ROT13 ou rotate by 13 places um esquema de substituio de cifras,bastante usado em foruns on-line. Mais sobre esse esquema em:http://en.wikipedia.org/wiki/ROT13
http://en.wikipedia.org/wiki/ROT13http://en.wikipedia.org/wiki/ROT13 -
8/4/2019 Curso de PythonALUNO
72/93
Matemtica, Arquivos, Sistemas de arquivo, Arquivos compactados,Arquivos de dados, Sistema operacional, Tempo, Expressesregulares.
72
-
8/4/2019 Curso de PythonALUNO
73/93
comum dizer que o Python vem com baterias inclusas, em referncia avasta biblioteca de mdulos e pacotes que distribuda com ointerpretador.
Alguns mdulos importantes da biblioteca padro: Matemtica: math, cmath, decimal e random.
Sistema: os, glob, shutils e subprocess.
Threads: threading.
Persistncia: pickle e cPickle.
XML: xml.dom, xml.sax e elementTree (a partir da verso 2.5).
Configurao: ConfigParser e optparse. Tempo: time e datetime.
Outros: sys, logging, traceback, types e timeit.
-
8/4/2019 Curso de PythonALUNO
74/93
Alm dos tipos numricos builtins do interpretador, na biblioteca padrodo Python existem vrios mdulos dedicados a implementar outros tipos eoperaes matemticas. O mdulo math define funes logartmicas, de exponenciao, trigonomtricas,
hiperblicas e converses angulares, entre outras.
O mdulo cmath, implementa funes similares, porm feitas para processar nmeroscomplexos.
-
8/4/2019 Curso de PythonALUNO
75/93
O mdulo random traz funes para a gerao de nmeros aleatrios.
Sada:
Sada:
-
8/4/2019 Curso de PythonALUNO
76/93
Na biblioteca padro ainda existe o mdulo decimal, que defineoperaes com nmeros reais com preciso fixa.
Com este mdulo, possvel reduzir a introduo de erros dearredondamento originados da aritmtica de ponto flutuante.
Sada:
-
8/4/2019 Curso de PythonALUNO
77/93
Na verso 2.6, tambm est disponvel o mdulo fractions, que trata denmeros racionais.
As fraes podem ser inicializadas de vrias formas: como string, comoum par de inteiros ou como um nmero real. O mdulo tambm possuiuma funo chamada gcd(), que calcula o maior divisor comum (MDC)entre dois inteiros.
Sada:
-
8/4/2019 Curso de PythonALUNO
78/93
Os arquivos no Python so representados por objetos do tipo file, queoferecem mtodos para diversas operaes de arquivos. Arquivos podemser abertos para leitura ('r', que o default), gravao ('w') ou adio('a'), em modo texto ou binrio('b').
Em Python: sys.stdin representa a entrada padro. sys.stdout representa a sada padro. sys.stderr representa a sada de erro padro.
A entrada, sada e erro padres so tratados pelo Python como arquivosabertos. A entrada em modo de leitura e os outros em modo degravao.
Os objetos do tipo arquivo tambm possuem um mtodo seek(), quepermite ir para qualquer posio no arquivo. Na verso 2.6, est disponvel o mdulo io, que implementa de forma
separada as operaes de arquivo e as rotinas de manipulao de texto.
-
8/4/2019 Curso de PythonALUNO
79/93
Exemplo de escrita:
Sada:
-
8/4/2019 Curso de PythonALUNO
80/93
Exemplo de leitura:
Sada:
-
8/4/2019 Curso de PythonALUNO
81/93
Os sistemas operacionais modernos armazenam os arquivos em estruturashierrquicas chamadas sistemas de arquivo (file systems).
Vrias funcionalidades relacionadas a sistemas de arquivo estoimplementadas no mdulo os.path, tais como: os.path.basename(): retorna o componente final de um caminho.
os.path.dirname(): retorna um caminho sem o componente final.
os.path.exists(): retorna True se o caminho existe ou False em caso contrrio.
os.path.getsize(): retorna o tamanho do arquivo em bytes.
O glob outro mdulo relacionado ao sistema de arquivo. A funoglob.glob() retorna uma lista com os nomes de arquivo que atendem aocritrio passado como parmetro. (semelhante ao dir no prompt dowindows, ou ls no terminal do linux)
-
8/4/2019 Curso de PythonALUNO
82/93
Exemplo:
Sada:
-
8/4/2019 Curso de PythonALUNO
83/93
O Python possui mdulos para trabalhar com vrios formatos de arquivoscompactados.
Exemplo de gravao de um arquivo .zip:
-
8/4/2019 Curso de PythonALUNO
84/93
Exemplo de leitura de um arquivo .zip:
Sada:
-
8/4/2019 Curso de PythonALUNO
85/93
Na biblioteca padro, o Python tambm fornece um mdulo parasimplificar o processamento de arquivos no formato CSV (CommaSeparated Values). No formato CSV, os dados so armazenados emforma de texto, separados por vrgula, um registro por linha.
Sada:
-
8/4/2019 Curso de PythonALUNO
86/93
Alm do sistema dearquivos, os mdulosda biblioteca padrotambm fornecemacesso a outros
servios providos pelosistema operacional.
Sada:
-
8/4/2019 Curso de PythonALUNO
87/93
O Python possui dois mdulos para lidar com tempo: time: implementa funes que permitem utilizar o tempo gerado pelo sistema.
datetime: implementa tipos de alto nvel para realizar operaes de data e hora.
time.struct_time(tm_year=2010, tm_mon=3, tm_mday=7, tm_hour=18, tm_min=1, tm_sec=22, tm_wday=6, tm_yday=66, tm_isdst=0)Sun Mar 07 18:01:22 20101267995682.75 -> time.struct_time(tm_year=2010, tm_mon=3, tm_mday=7, tm_hour=21, tm_min=1, tm_sec=22, tm_wday=6, tm_yday=66,tm_isdst=0)
Sada:
-
8/4/2019 Curso de PythonALUNO
88/93
1268010082.0 -> time.struct_time(tm_year=2010, tm_mon=3, tm_mday=7, tm_hour=22, tm_min=1, tm_sec=22, tm_wday=6, tm_yday=66,tm_isdst=0)
O programa levou 3.831203312e-07 segundos at agora...1 segundo(s)2 segundo(s)3 segundo(s)4 segundo(s)5 segundo(s)
Sada:
Continuando...
-
8/4/2019 Curso de PythonALUNO
89/93
Sada:
Em datetime, esto definidos quatro tipos para representar o tempo: datetime: data e hora.
date: apenas data.
time: apenas hora.
timedelta: diferena entre tempos.
-
8/4/2019 Curso de PythonALUNO
90/93
Expresso regular uma maneira de identificar padres em sequnciasde caracteres.
Principais caracteres: Ponto (.): Em modo padro, significa qualquer caractere, menos o de nova linha. Circunflexo (^): Em modo padro, significa inicio da string. Cifro ($): Em modo padro, significa fim da string. Contra-barra (\): Caractere de escape, permite usar caracteres especiais como se fossem comuns. Colchetes ([]): Qualquer caractere dos listados entre os colchetes. Asterisco (*): Zero ou mais ocorrncias da expresso anterior. Mais (+): Uma ou mais ocorrncias da expresso anterior. Interrogao (?): Zero ou uma ocorrncia da expresso anterior. Chaves ({n}): n ocorrncias da expresso anterior. Barra vertical (|): ou lgico.
Parenteses (()): Delimitam um grupo de expresses. \d: Dgito. Equivale a [0-9]. \D: No dgito. Equivale a [^0-9]. \s: Qualquer caractere de espaamento ([ \t\n\r\f\v]). \S: Qualquer caractere que no seja de espaamento.([^ \t\n\r\f\v]). \w: Caractere alfanumrico ou sublinhado ([a-zA-Z0-9_]). \W: Caractere que no seja alfanumrico ou sublinhado ([^a-zA-Z0-9_]).
-
8/4/2019 Curso de PythonALUNO
91/93
Exemplo: Sada:
-
8/4/2019 Curso de PythonALUNO
92/93
1. Crie um arquivo compactado contendo um arquivo de texto com uma lista dedados de plataforma, usurio, o diretrio de trabalho e a data e hora completasdo momento da operao no formato do sistema, em cada linha do arquivo.
2. Converta os segundos armazenados no exerccio 1 para hexadecimal e octal.
3. Converta o nmero complexo 3.45 + 2.3j para a forma polar, com o ngulo emgraus, multiplique esse ngulo a um numero real randmico entre 0 e 1 e mostrena tela com 2 casas decimais.
4. Salve os dados dos exerccios 2 e 3 em um arquivos de dados do tipo CSV, com adescrio de cada dado.
-
8/4/2019 Curso de PythonALUNO
93/93
Referncias:Python para Desenvolvedores / Luiz Eduardo BorgesRio de Janeiro, Edio do Autor, 2010ISBN 978-85-909451-1-6
Livro licenciado sob uma Licena Creative Commons Atribuio-Uso No-Comercial-Compartilhamento pela mesma Licena 2.5 Brasil.
Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street,
Suite 300, San Francisco, California 94105, USA.
Site oficialA edio mais recente est disponvel no formato PDF em:http://ark4n.wordpress.com/python/