curso de pythonaluno

Upload: marco-andre-argenta

Post on 07-Apr-2018

218 views

Category:

Documents


0 download

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/