Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1...

31
1 © Luís Cruz - 2004 53 Programação em Python Duas formas de executar instruções Python l Interactivamente: A instrução a executar é introduzida em frente ao prompt e após <Enter> ela é interpretada Exemplo : >>> dia=“Quarta-feira” >>> print dia Quarta-feira l Scripts: Cria-se ficheiro com as instruções a executar (script) e invoca-se intérprete sobre script. © Luís Cruz - 2004 54 Programação em Python No caso anterior o conteúdo do ficheiro programa (script) seria: dia=“Quarta-feira” print dia que ao ser executado produziria Quarta-feira

Transcript of Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1...

Page 1: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

1

© Luís Cruz - 2004 53

Programação em Python

Duas formas de executar instruções Python

l Interactivamente: A instrução a executar é introduzida em frente ao prompt e após <Enter> ela é interpretada

Exemplo : >>> dia=“Quarta-feira”>>> print diaQuarta-feira

l Scripts: Cria-se ficheiro com as instruções a executar (script) e invoca-se intérprete sobre script.

© Luís Cruz - 2004 54

Programação em Python

No caso anterior o conteúdo do ficheiro programa (script) seria:

dia=“Quarta-feira”print dia

que ao ser executado produziria

Quarta-feira

Page 2: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

2

© Luís Cruz - 2004 55

Um script mais complexo...

# # Autor : Luis Cruz# Data : 18 Setembro 2003# #cidade="Coimbra" # Cria uma cadeia de caracteresnome=raw_input("Qual o seu nome ? ") # Le uma cadeia de caracteresprint "Olá "+nome+" de "+cidade # Imprime uma saudação

personalizada

Programação em Python

Comentário

Criação de objecto “Coimbra”E atribuição de nome cidade

Instrução de entrada de dados.Espera entrada via teclado de uma cadeirade caracteres, cria objecto comconteúdo lido e atribui-lhe nome nome

Instrução de saída. Escreve no écran.

© Luís Cruz - 2004 56

Objectos e NomesQue acontece quando o intérprete encontra a instrução cidade=“Coimbra” ?

1.É criado um objecto num determinado local da memória, que consiste na sequência de valores ASCII relativos aos caracteres C,o,i,m,b,r,a

2.É criado um identificador (um nome) cidade que passa a referir o objecto criado em 1.

Daqui para a frente sempre que se faça referência a cidadeestaremos a referir-nos ao objecto criado em 1.

Page 3: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

3

© Luís Cruz - 2004 57

Nomes - Regras

1. O primeiro caracter tem de ser uma letra ou underscore(_), podendo os seguintes ser quaisquer caracteres alfanuméricos. Ou seja:• dois_pontos, _pontos são nomes válidos mas,• 2_pontos não é um nome válido

2. Notar que Dois_pontos e dois_pontos são nomes diferentes (case sensitive)

3. Há palavras reservadas que não podem ser utilizadas como nomes:and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while

© Luís Cruz - 2004 58

Dados – Tipos Suportados

Básicos

lNúmeros inteiroslNúmeros em vírgula flutuantelNúmeros complexoslCadeias de caracteres

Page 4: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

4

© Luís Cruz - 2004 59

Inteiros

Permitem representar números inteiros com os seguintes limites :

lNormal (32 bits)– Valores de -231=-2147483648 a 231-1= 2147483647

lLongos

– Gama de valores sem limite

© Luís Cruz - 2004 60

InteirosRepresentação de literais inteiros : são permitidos digítosdecimais, hexadecimais ou octais.

Exemplos :>>> 123 # Literal decimal123>>> 0xBABA # Literal hexadecimal começa por 0x ou 0X (zero X)47802>>> 077 # Literal Octal; começa por 0 (zero) 63>>> 078File "<stdin>", line 1

078^

SyntaxError: invalid token

Python converteu valor para decimal antes de imprimir

Python converteu valor para decimal antes de imprimir

} Erro !

Page 5: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

5

© Luís Cruz - 2004 61

Inteiros

Função type() devolve tipo de dado. No caso de inteiros...

>>> type(1)<type ´int´>>>> a=2>>> type(a)<type ´int´>>>> type(0xff)<type ´int´>>>> type(“0xff”) # ?<type ´string´>

Porquê ?

© Luís Cruz - 2004 62

Operações sobre Inteiros

Os inteiros suportam as operações aritméticas usuais...

Adição (+) e Subtracção (-) >>> 3+25

Multiplicação (*) >>> 3*26

Divisão (/) >>> 6/23>>> 5/22>>> -1/2-1

Divisão de inteirosResultado é quociente

Atenção !

Page 6: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

6

© Luís Cruz - 2004 63

Operações sobre Inteirose outras...

Potenciação (**) >>> 3**2 # Três ao quadrado9

Resto de Divisão (%) >>> 3%21

Divisão com Quociente e Resto >>> divmod(5,2)

(2,1)>>> divmod(-1,2)(-1,1)

© Luís Cruz - 2004 64

Vírgula Flutuante

Permitem representar reais de acordo com a norma IEEE 754, em precisão dupla (64 bits), que como vimos já, suporta valores com magnitude de 2.2e-308 a 1.8e308.

Os literais em vírgula flutuante seguem o formato +/-{mmm}e{exp}, +/-{mmm}E{exp} ou simplesmente ddd.ddd

Exemplos: >>> 1.2345e412345.0>>> 1e-20.01>>> 1.51.5

Page 7: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

7

© Luís Cruz - 2004 65

Vírgula FlutuanteA função type() devolve neste caso <type ´float´>.

Exemplo: >>> pi_apr=3.1415926>>> type(pi_apr)<type 'float'>>>> type(1.0)<type 'float'>

As operações suportadas pelos número em vírgula flutuante são as usuais; adição, subtracção, multiplicação e divisão. No entanto...

>>> 5.0/2.02.5 Divisão Real

© Luís Cruz - 2004 66

Números Complexos

Números complexos a+jb introduzidos usando a forma a+bj , a+bJ ou complex(a,b).

Exemplos: >>> 1+2j(1+2j)>>> complexo=3+4J>>> print complexo(3+4j)>>> complexo_2=complex(-1,1)>>> print complexo_2(-1+1j)>>> complexo_3=complex(-1,0)>>> print complexo_3(-1+0j)

Parte real e parte imaginária representadas com 64 bits de precisão.

Page 8: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

8

© Luís Cruz - 2004 67

Números Complexos

Para extrair a parte real ou imaginária de um complexo usam-se as instruções <nome_do_complexo>.real e <nome_do_complexo>.imag

Exemplos:>>> compl=3+4J>>> compl.real3.0>>> compl.imag4.0>>>compl.real**2+compl.imag**2 # Quadrado do

módulo25.0

© Luís Cruz - 2004 68

Números Complexos

O módulo (valor absoluto) obtém-se fazendo abs(<complexo>), e claro que pode somar (+), subtrair (-), multiplicar (*) e dividir (/) complexos.

Exemplos:>>> complexo=3+4J>>> abs(complexo) # Modulo5.0>>> complexo*(1+1j)(-1+7j)>>> complexo+(2+3j)(5+7j)>>> complexo/(0+2j)(2-1.5j)

Page 9: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

9

© Luís Cruz - 2004 69

Cadeias de Caracteres (Strings)São (em geral) pequenas sequências de caracteres alfanuméricos, que representam pedaços de texto.

Exemplos :

>>> cadeia_longa=“Uma cadeia de 27 caracteres”>>> cadeia_curta="outra so com 15“>>> cadeia_vazia="">>> print cadeia_vazia

>>> cadeia_multi_linha="""Esta cadeia comeca na linha 1continua na linha 2 etermina na linha 3""">>> print cadeia_multi_linhaEsta cadeia comeca na linha 1continua na linha 2 etermina na linha 3>>>

© Luís Cruz - 2004 70

Cadeias de Caracteres (Strings)Os marcadores de início e fim da cadeia podem ser aspas (“) ou pelicas (´).

Quando pretendemos utilizar aspas (ou pelicas) como um dos caracteres da cadeia temos de o fazer usando uma sequência de escape que consiste na barra (\) seguida da aspa (ou pelica).

Exemplos : >>> cadeia=“Ele disse \”Terminei\” antes do fim”>>> print cadeiaEle disse “Terminei" antes do fim>>> cadeia_pel=‘Cadeia com pelica (\’) dentro‘>>> print cadeia_pelCadeia com pelica (') dentro

Page 10: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

10

© Luís Cruz - 2004 71

Cadeias de Caracteres (Strings) –Concatenação

Podem juntar-se várias cadeias de caracteres para formar uma cadeia maior: operação de concatenação.

Exemplos: >>> titulo=“Dr.”>>> nome=“Egas”>>> sobrenome=“Moniz”>>> completo=titulo+nome+sobrenome>>> print completoDr.EgasMoniz>>> completo=titulo+” “+nome+” “+sobrenome>>> print completoDr. Egas Moniz

Oops... Faltam os espaços !

© Luís Cruz - 2004 72

Cadeias de Caracteres (Strings) -Fatiagem

É também possível retirar (ou aceder) a uma parte da cadeia de caracteres: operação de fatiagem (slicing em Inglês).

A expressão <nome_da_cadeia>[primeiro:ultimo+1] designa a secção desde o caracter na posição primeiroaté ao caracter na posição ultimo. O primeiro caracter tem índice 0.

Exemplos: >>> cadeia=“abcdef”>>> print cadeia[0:3]abc>>> print cadeia[3:6]+cadeia[0:3]defabc

Page 11: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

11

© Luís Cruz - 2004 73

Cadeias de Caracteres (Strings) -Fatiagem

Para determinar o número de caracteres da cadeia usa-se a função len().

Exemplo:>>> cadeia=“abcdef”>>> len(cadeia)6

Há ainda formas particulares da especificação das fatias:

l <nome_cadeia>[posicao] com posicao designa o caracter que se encontra na posicao posicao a contar do início (a partir de 0). Se posicao for negativo, designa o caracter que se encontra na posicaoposicao a contar do fim,

l <nome_cadeia>[:ultimo+1] designa todos os elementos desde o início até ao de índice ultimo,

l <nome_cadeia>[primeiro:] designa todos os elementos desde o de índice primeiro até ao fim da cadeia,

© Luís Cruz - 2004 74

Cadeias de Caracteres (Strings) -Fatiagem

Exemplos:>>> cadeia=“0123456789”>>> len(cadeia)10>>> print cadeia[0]0>>> print cadeia[:5]01234>>> print cadeia[5:len(cadeia)]56789>>> print cadeia[-1]9>>> print cadeia[-5:-1]5678>>> print cadeia[-5:]56789

Page 12: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

12

© Luís Cruz - 2004 75

Sequências - Tuplasl Sequência de valores separados por vírgulas.l Elementos podem ser de vários tipos.l Endereçáveis, com índice 0 para o primeiro elemento

Exemplos :>>> tupla="Computadores e Programacao", \

"Semestral", \1,\50 # Nome, tipo, semestre, alunos

>>> tupla('Computadores e Programacao', 'Semestral', 1, 50)>>> nome=tupla[0] # Exemplo de acesso ao primeiro elemento>>> print nomeComputadores e Programacao>>> len(tupla) # Numero de elementos4

© Luís Cruz - 2004 76

Sequências - Tuplasl Podem ser introduzidas com ou sem parênteses.l É possível introduzir tuplas com ZERO e UM elementos

Exemplos :

>>> tupla_dupla=("Primeiro","Segundo")>>> len(tupla_dupla)2>>> tupla_simples=("Um só",) # Virgula é obrigatória>>> len(tupla_simples)1>>> tupla_vazia=()>>> len(tupla_vazia)0

Page 13: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

13

© Luís Cruz - 2004 77

Sequências - Tuplas

l Tuplas são imutáveis, i.e., após criada uma tupla, não épossível alterar os seus elementos

Exemplos :

>>> tupla_dupla=("Primeiro","Segundo")>>> tupla_dupla[0]="Um"

Traceback (most recent call last):File "<pyshell#36>", line 1, in -toplevel-tupla_dupla[0]="Um"

TypeError: object doesn't support item assignment>>>

Erro !

© Luís Cruz - 2004 78

Sequências - Tuplasl É possível desagregar uma tupla sem aceder aos seus

elementos um a um.

Exemplos :

>>> quadriga="Ein","Zwei","Drei","Vier">>> um,dois,tres,quatro=quadriga # Desagregar tupla>>> print umEin>>> print doisZwei>>> print tresDrei>>> print quatroVier

Page 14: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

14

© Luís Cruz - 2004 79

Sequências – Tuplas - Operações

val in tupla devolve 1 (True) se val faz parte de tupla ou 0 (False) caso contrário.

Exemplo :>>> tupla="Um", 1, 1.0, 2, "Dois", 1+2j>>> 1+2j in tuplaTrue>>> 1.5 in tuplaFalse>>> 2 in tuplaTrue>>> "dois" in tuplaFalse

© Luís Cruz - 2004 80

Sequências – Tuplas - Operações

tupla_1 + tupla_2 resulta numa tupla que é a concatenação de tupla_1 e tupla_2

Exemplo :

>>> tupla="Um", 1, 1.0, 2, "Dois", 1+2j>>> tupla_2=“abc”,(1,2) # Tupla com sub-tupla !>>> tupla_concat=tupla+tupla_2>>> print tupla_concat('Um', 1, 1.0, 2, 'Dois', (1+2j), 'abc', (1, 2))

Page 15: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

15

© Luís Cruz - 2004 81

Sequências – Tuplas - Operações

tupla * numero resulta numa tupla que é a repetição detupla numero vezes

Exemplo :

>>> tupla=“abc”,(1,2) # Tupla com sub-tupla !>>> tupla*2('abc', (1, 2), 'abc', (1, 2))>>> 3*tupla('abc', (1, 2), 'abc', (1, 2), 'abc', (1, 2))>>> 0*tupla()

© Luís Cruz - 2004 82

Sequências – Tuplas - Operações

min(tupla) devolve o valor mínimo presente na tuplamax(tupla) devolve o valor máximo presente na tupla

Exemplos :

>>> tupla=1,3,-1,0,1001>>> min(tupla)-1>>> max(tupla)1001

Page 16: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

16

© Luís Cruz - 2004 83

Sequências - Listasl Sequências de valores separados por vírgulas e delimitadas por

parênteses rectos.l Elementos podem ser de vários tipos.l Endereçáveis, com índice 0 para o primeiro elemento.

Exemplos :

>>>lista_mista=["Pao","fiambre","queijo",1,3.14,3+4j]>>>lista_de_listas=[["uma","lista"],["outra","lista"]]>>> lista_de_listas[0]

['uma', 'lista']>>> lista_de_listas[0][1]

'lista'

© Luís Cruz - 2004 84

Sequências - Listas

l Pode criar-se uma lista vazia...

>>> lista_vazia=[]>>> len(lista_vazia)0

l Ao contrário das tuplas, as listas são mutáveis...>>> lista_mista=["Pao","fiambre","queijo",1,3.0,3+4j]>>> lista_mista[3]="alface">>> lista_mista['Pao', 'fiambre', 'queijo', 'alface', 3.0, (3+4j)]

Page 17: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

17

© Luís Cruz - 2004 85

Sequências - Listas

Suportam operações fatiagem de forma idêntica às cadeias de caracteres.

Exemplos :

>>> lista_mista=["Pao","fiambre","queijo","alface","tomate"]>>> lista_mista[2:4]['queijo', 'alface']>>> lista_mista[-2:]['alface', 'tomate']>>> lista_mista[0::2]['Pao', 'queijo', 'tomate']>>> lista_mista[0:5:2]['Pao', 'queijo', 'tomate']>>> lista_mista[0::2]['Pao', 'queijo', 'tomate']>>> lista_mista[1:3]=["salame","manteiga"]>>> lista_mista['Pao', 'salame', 'manteiga', 'alface', 'tomate']

© Luís Cruz - 2004 86

Sequências – Listas - Operações

Também as listas podem ser desagregadas ou desempacotadas...

>>> lista_mista['Pao', 'salame', 'manteiga', 'alface', 'tomate']>>> x,y,z,w,v=lista_mista>>> x'Pao'>>> y'salame'>>> z'manteiga'>>> w'alface'>>> v'tomate'

Page 18: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

18

© Luís Cruz - 2004 87

Sequências – Listas - Operações

val in lista devolve 1 (True) se val faz parte de listaou 0 (False) caso contrário.

Exemplo :>>> lista=["Um", 1, 1.0, 2, "Dois", 1+2j]>>> 1+2j in listaTrue>>> 1.5 in listaFalse>>> 2 in listaTrue>>> "dois" in listaFalse

© Luís Cruz - 2004 88

Sequências – Listas - Operações

lista_1 + lista_2 resulta numa lista que é a concatenação de lista_1 e lista_2

Exemplo :

>>> lista_1=["Joao","Maria","Antonio"]>>> lista_2=["Vasilyev",“Irina","William"]>>> lista_conc=lista_1+lista_2>>> lista_conc['Joao', 'Maria', 'Antonio', 'Vasilyev', 'Irina', 'William']

Page 19: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

19

© Luís Cruz - 2004 89

Sequências – Listas - Operações

lista * numero resulta numa lista que é a repetição de lista numero vezes

Exemplos :>>> telefones=["936464464","239444444"]>>> telefones*2 # 2 vezes['936464464', '239444444', '936464464', '239444444']>>> telefones*0 # 0 vezes[]>>> telefones*-1[]

© Luís Cruz - 2004 90

Sequências – Listas - Operações

min(lista) devolve o valor mínimo presente nalistamax(lista) devolve o valor máximo presente nalista

Exemplos :

>>> lista=[1,3,-1,0,1001]>>> min(lista)-1>>> max(lista)1001

Page 20: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

20

© Luís Cruz - 2004 91

Sequências – Listas - Operaçõeslista.pop() remove o último elemento da listaultimo = lista.pop() devolve o último elementoda lista, retirando-o da mesma

Exemplos :

>>> lista=[1,2,3,4]>>> lista.pop()4>>> lista[1, 2, 3]>>> b=lista.pop()>>> lista[1, 2]>>> b3

© Luís Cruz - 2004 92

Sequências – Listas - Operaçõeslista.remove(item) remove o elemento da listaque contém item (caso exista).

Exemplos :

>>> lista=[1,2,3,"texto",4,5,6]>>> lista.remove(3)>>> lista[1, 2, 'texto', 4, 5, 6]>>> lista.remove("TEXTO")

Traceback (most recent call last):File "<pyshell#34>", line 1, in -toplevel-

lista.remove("TEXTO")ValueError: list.remove(x): x not in list>>> lista.remove("texto")>>> lista[1, 2, 4, 5, 6]

Page 21: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

21

© Luís Cruz - 2004 93

Sequências – Listas - Operações

Outra forma de remover elementos, usando fatiagem:

>>> lista=[1,2,3,"texto",4,5,6]>>> lista[3:4]=[]>>> lista[1, 2, 3, 4, 5, 6]

Para as listas a função len() devolve o número de elementos da lista:

>>> lista=[1,2,3,"texto",4,5,6]>>> len(lista)7

© Luís Cruz - 2004 94

Sequências – Listas - Operações

Podemos acrescentar elementos a uma lista assim:

>>> lista=["um",2,"III"]>>> lista.append("5-1") # acrescenta ao fim>>> lista['um', 2, 'III', '5-1']

ou assim:

>>> lista=[1,2,4,5]>>> lista[2:2]=[3] # Insere na posição 2>>> lista[1, 2, 3, 4, 5]

Page 22: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

22

© Luís Cruz - 2004 95

Mapeamentos - Dicionários

l Permitem armazenar pares de valores do tipo chave:informação,

l Criam-se delimitando com chavetas um conjunto de pares chave:informação separados por vírgulas.

Exemplo:

>>> classificacoes={"Maria":12,"Carlos":14,"Julio":18}

© Luís Cruz - 2004 96

Mapeamentos - Dicionários

l Acesso é feito através de valores da chave.

Exemplo:>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> classificacao[“Julio”]18

l Número de elementos (pares) obtido por len().

Exemplo:

>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> len(classificacao)3

Page 23: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

23

© Luís Cruz - 2004 97

Mapeamentos - Dicionários

l Inserção de elementos

dicionario[nova_chave]=nova_informação

Exemplo:

>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> classificacao{'Julio': 18, 'Carlos': 14, 'Maria': 12}>>> classificacao["Joana"]=18>>> classificacao{'Julio': 18, 'Joana': 18, 'Carlos': 14, 'Maria': 12}

© Luís Cruz - 2004 98

Mapeamentos - Dicionários

l Substituição de informação de um par

dicionario[chave]=nova_informação

Exemplo:>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> classificacao{'Julio': 18, 'Carlos': 14, 'Maria': 12}>>> classificacao["Carlos"]=16 # Melhoria funcionou ☺>>> classificacao{'Julio': 18, 'Carlos': 16, 'Maria': 12}

Page 24: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

24

© Luís Cruz - 2004 99

Mapeamentos - Dicionários

l Remoção de um par conhecida a chave

del dicionario[chave]

Exemplo:

>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> del classificacao[“Maria”]>>> classificacao{'Julio': 18, 'Carlos': 14}

© Luís Cruz - 2004 100

Mapeamentos - Dicionários

l Apagar o conteúdo do dicionário

dicionario.clear() # Usar com cuidado!

Nota : Não é o mesmo que del dicionário.

Exemplo:

>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> classificacao.clear()>>> classificacao{}

Page 25: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

25

© Luís Cruz - 2004 101

Mapeamentos - Dicionários

l Listagem de todas as chaves

dicionario.keys()

Exemplo:

>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> classificacao.keys()['Julio', 'Carlos', 'Maria']

© Luís Cruz - 2004 102

Mapeamentos - Dicionários

l Listagem de todos os campos de informação

dicionario.values()

Exemplo:

>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> classificacao.values()[18, 14, 12]

Page 26: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

26

© Luís Cruz - 2004 103

Mapeamentos - Dicionáriosl Procura de uma chave

dicionario.has_key(chave_que_se_procura)

Nota : É equivalente a chave_que_se_procura indicionario

Exemplo:>>> classificacao={"Maria":12,"Carlos":14,"Julio":18}>>> classificacao.has_key(“Julio”)True>>> classificacao.has_key(“Diana”)False

© Luís Cruz - 2004 104

Operações Lógicas (ou Booleanas)

Valores Lógicos

Verdadeiro :True, ou qualquer valor diferente de 0Falso :False ou 0

Operações Lógicas Comuns (Prioridade Crescente)

x or y : verdadeiro se x ou y são verdadeirosx and y: verdadeiro se x e y são verdadeirosnot x : verdadeiro se x falso e v.v.

Page 27: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

27

© Luís Cruz - 2004 105

Operações Lógicas (ou Booleanas)

Operadores Lógicos em Python (Prioridade Crescente)

x or y : se x é Falso resultado é y caso contrário xx and y : se x é Falso resultado é x caso contrário ynot x : se x é Falso resultado é Verdadeiro e v.v.

© Luís Cruz - 2004 106

Operadores Relacionais

a < b : resultado True se a é menor que ba > b : resultado True se a é maior que ba <= b : resultado True se a é menor ou igual que ba >= b : resultado True se a é maior ou igual que ba == b : resultado True se a é igual a ba != b : resultado True se a é diferente de ba <> b : resultado True se a é diferente de ba < b < c: resultado True se a é menor que b e b

menor que c

Page 28: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

28

© Luís Cruz - 2004 107

Controlo de fluxo - if

Execução Condicional

if (exp_log_1):bloco de instruções 1 # exp_log_1 é

verdadeiraelif (exp_log_2):bloco de instruções 2 # exp_log_2 é

verdadeiraelse:bloco de instruções 3 # casos restantes

© Luís Cruz - 2004 108

Controlo de fluxo - ifExemplos

if chuva==False:print “Esta um dia óptimo! Vou sem casaco.”

else:print “Bolas, tenho que levar o guarda-chuva!”

if euros_no_bolso >= 20:print “Vamos ao pub. Pago uma rodada.”

elif euros_no_bolso >= 10:print “Vamos ao cinema. Pago as pipocas.”

elif euros_no_bolso >= 5:print “Vou ao cinema. Sozinho...”

else:print “Não me queres pagar o jantar ?”

Page 29: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

29

© Luís Cruz - 2004 109

Controlo de fluxo - for

Execução repetida de instruções consegue-se com for

Sintaxe

for <var_ciclo> in <sequência>:bloco de instruções

else:bloco de instruçõesa executar se ciclo terminar

© Luís Cruz - 2004 110

Controlo de fluxo - for

Exemplos

autores=(“Camões”,”Pessoa”,”Torga”) # Tuplafor autor in autores:print autor,”foi um grande escritor!”

inteiros_de_0_ate_10=range(11) # Listafor numero in inteiros_de_0_ate_10:print numero

cadeia=“Programação”for caracter in cadeia:print caracter

Page 30: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

30

© Luís Cruz - 2004 111

Controlo de fluxo – break, continue, pass

break - se executado dentro de um ciclo (for, while) termina a execução deste, passando-se àinstrução seguinte,

continue - se executado dentro de um ciclo (for, while), passa à iteração seguinte do ciclo,

pass – não faz nada, podendo ser útil em certos casos

© Luís Cruz - 2004 112

Controlo de fluxo – break, continue, pass

Exemplos (com for)

for numero in range(1,31):if numero%3==0: continue # Salta multiplosde 3print numero

lista_nomes=[“Julio”,”Marcelo”,”Inês”,”Antonio”]

for nome in lista_nomes:if nome==“César”: break

else:print “\”Cesar\” não faz parte da lista”

Page 31: Programação em Python - fisica.uc.ptfisica.uc.pt/data/20042005/apontamentos/apnt_1251_1.pdf · 1 ©LuísCruz -2004 53 Programação em Python Duas formas de executar instruções

31

© Luís Cruz - 2004 113

Listas de numeros – range() e xrange()

Ø range(num) devolve uma lista de num inteiros com início em 0

Ø range(prim,ultim+1) devolve uma lista de inteiros seguidos de prim a ultim+1 (excluído)

Ø range(prim,ultim+1,passo) devolve uma lista de inteiros de prim a ultim+1 (excluído) espaçados de passo unidades

Ø xrange tem comportamento idêntico a range, sendo indicado para utilização em ciclos, quando a lista a gerar contém muitos elementos, pois vai gerando os números pretendidos à medida que estes vão sendo “consumidos” pela iteração.