O documento apresenta uma introdução ao workshop de Python realizado na IEEE Week '17. Apresenta brevemente conceitos fundamentais da linguagem como variáveis, funções, listas, dicionários e operações com strings. Explica também como ler e processar dados de ficheiros e da internet usando bibliotecas como urllib e json.
2. Porquê Python
Java: aplicações, serviços, web, mobile
Desenvolvimento rápido
Javascript: páginas e serviços web
Linguagem interpretada
Não é necessário compilar código
3. Python
Python: aplicações, serviços, web, mobile
Desenvolvimento muito rápido
(prototipagem)
Linguagem obriga a formatação rígida
“Hacks” são sempre formatados
corretamente
4. Python
Nome: Monty Python’s Flying Circus
Combina funcionalidades modernas
Encontradas no Java, C#, Ruby, C++,
etc...
Com um estilo conciso e simples
8. Variáveis String
Tamanho dado por
função len()
a = “hello”
b = “world”
print(a+” “+b)
print(a[1])
print(a[1:4])
print(len(a))
hello world
e
ell
5
9. Variáveis String
Concatenação com inteiros NÃO funciona
Necessário converter inteiros em String
r = 42
s = “A resposta para a vida, o Universo e tudo
mais é: “
print(s + r)
print(s + str(r))
TypeError: cannot concatenate
'str' and 'int' objects
A resposta para a vida, o Universo
e tudo mais é: 42
12. Programação ao Estilo Funcional em Python -
2014/2015
- 12 -
Python - Operadores lógicos
Conjunção: and (∧)
Disjunção: or (∨)
Negação: not (~)
Nota: Na conjunção e na disjunção, o
segundo argumento só é avaliado se for
necessário para determinar o resultado
13. Programação ao Estilo Funcional em Python -
2014/2015
- 13 -
Python - Operadores de comparação
Igual: ==
Diferente: != (ou <>)
Menor/maior: <, <=, >, >=
Objectos de tipos diferentes nunca são iguais
Exceptuam-se os diferentes tipos de números
Comparação de sequências baseia-se num critério
lexicográfico
14. Programação ao Estilo Funcional em Python -
2014/2015
- 14 -
Análise condicional:
instrução if-elif-else
Síntaxe:
if <condição_1> :
<instruções_1>
elif <condição_2> :
<instruções_2>
else :
<instruções_n>
• Notas:
– Pode haver
0 (zero) ou
mais ramos
elif (= else if)
– O ramo elif /
else é
opcional
15. Modulo Matemático
Modulo math disponibiliza um conjunto de
funções importantes.
math.ceil(x) #arredonda para o inteiro superior
math.floor(x) #arredonda para o inteiro inferior
math.trunc(x) #trunca o numero real x à sua
parte inteira
math.fabs(x) #valor absoluto
math.exp(x) #potencia nesperiana (ex)
math.log(x)
math.pow(x,y) #potencia xY
16. Modulo Matemático
math.sqrt(x) #raiz quadrada de x
math.cos(x), math.sin(x), math.tan(x), ...
math.pi # valor de π
math.e # valor de e
Muitas mais!!!
Necessário ler documentação em
https://docs.python.org/3/library/math.html
17. Módulo Random
Permite a geração de números aleatórios
random.random() #numero entre 0.0 e 1.0
random.randint(x,y) #numero inteiro entre x e y
18. Exercicio
Escreva uma função com o nome bissexto
que determina se um ano é bissexto. Um
ano é bissexto se for divisível por 4 e não for
divisível por 100, a não ser que seja
também divisível por 400. Por exemplo,
1984 é bissexto, 1100 não é, e 2000 é
bissexto.
19. Iteratividade
Atribuição múltipla
Já deve ter reparado. pode atribuir um
novo valor a uma variável já existente:
X = 1
X = ‘ieee’
X = ‘day’
Actualizar variáveis
X = X + 1
X+=1
20. Iteratividade
Instrução while
while <condição>:
<instruções>
Instrução break
while True:
line = input(‘> ‘)
if line == ‘done’:
break
print(line)
print(“done!”)
21. Strings
String é uma sequencia de caracteres.
Podes aceder a cada elemento da
sequencia com o operador []
Exemplo:
>>> fruta = ‘banana’
>>> print(fruta[1])
a
B A N A N A
0 1 2 3 4 5
22. Strings
Comprimento de uma string:
>>> print(len(‘banana’))
6
Percorrer uma string:
index = 0
while index < len(fruta):
letra = fruta[index]
print(letra)
index = index + 1
23. Strings
Partes de uma string
>>> s = ‘Monty Python’
>>> print(s[0:5])
Monty
>>> print(s[6:])
Python
>>> print(s[:3])
‘Mon’
>>> print(s[3:3])
‘’
24. Pesquisa em strings
Pode iterar sobre uma string sem recorrer
aos seus indices:
for letter in phrase:
if letter in “ .;,!?”:
print(“n”)
else:
print(letter)
25. Formatação de Strings
Número Formato Resultado Descrição
3.1415926 {:.2f} 3.14 2 casas décimais
3.1415926 {:+.2f} +3.14 2 casas e sinal
-1 {:+.2f} -1.00 2 casas e sinal
2.71828 {:.0f} 3 Sem casas
5 {:0>2d} 05 “Padding” à esquerda com 0
10 {:x<4d} 10xx “Padding” à direita com x
0.25 {:.2%} 25.00% Percentagem
1000000000 {:.2e} 1.00e+09 Cientifica
13 {:10d} 13 Alinhado à direita (tamanho 10)
13 {:<10d} 13 Alinhado à esquerda (tam 10)
13 {:^10d} 13 Alinhado ao centro (tam 10)
26. Formatação de Strings
string.format()
s1 = " {0} melhor que {1} ".format(”fcp", ”slb")
s2 = " {1} melhor que {0} ".format(”fcp", ”slb")
Argumentos pelo nome
”Eu {nome} vou fazer {disciplina} à {vez}".format(nome=”Anibal",
disciplina=” Programação", vez=”primeira”)
print(" Os {0} são representados como {{0}} ".format(”vazios"))
Literais
>>> Os vazios são representados como {0}
27. Listas
Exemplos de listas:
[10, 20, 30, 40]
[‘sapo’, ‘macaco’, ‘porco da índia’]
[‘coisas’, 2.0, 5, [10, 20]]
Lista vazia
[]
Aceder a um elemento de uma lista
L = [1,2,4,8,16]
>>> print(L[1])
2
28. Listas são mutáveis
>>> Numeros = [1,2,4,4]
>>> Numeros[2] = 3
>>> print Numeros
[1,2,3,4]
O operador in pode ser usado nas listas
>>> queijos = [‘serra’, ‘mozarella’, ‘flamengo’]
>>> ‘flamengo’ in queijos
True
>>> ‘brie’ in queijos
False
29. Atravessar uma lista
for queijo in queijos:
print queijo
range() devolver uma lista de numeros
Mesmo que uma lista tenha outras listas
contidas, o for só atravessa os elementos
da lista em questão e não os elementos das
listas internas.
Uma lista vazia [] não é iteravel, mas
também não constitui um erro
30. Operações com listas
Concatenação
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> print a+b
[1,2,3,4,5,6]
>>> [0] * 4
[0,0,0,0]
>>> [1,2,3] * 3
[1,2,3, 1,2,3, 1,2,3]
32. Operações com listas
Métodos
lista.append(elemento)
lista.extend(outra_lista)
lista.sort()
x = lista.pop(posicao)
del lista[posicao]
del lista[posicao:posicao2]
lista.remove(elemento)
33. Dicionários
Sintaxe: são como as listas, mas os índices
não precisam de ser inteiros.
Um dicionário mapeia um índice (chave)
num valor.
A associação de uma chave a um valor
chama-se de item
>>> en2pt = dict()
>>> print en2pt
{}
34. Acrescentar itens
Pode usar []
>>> en2pt[‘one’] = ‘um’
Pode inicializar com uma estrutura
>>> en2pt = {‘one’: ‘um’, ‘two’: ‘dois’, ‘three’:
‘tres’}
O operador in indica se algo é uma chave
do dicionário
>>> ‘one’ in en2pt
True
>>> ‘um’ in en2pt
False
35. Listar
Pode listar todas as chaves de um dicionário
>>> en2pt.keys()
Ou listar todos os valores
>>> en2pt.values()
Ou ainda os pares chave, valor
>>> en2pt.items()
36. Tuplos
Tuplos são uma sequencia de valores
>>> t = ‘a’, ‘b’, 1, ‘ola’
A maioria dos operadores sobre listas
também funcionam com tuplos
>>> t[1:3]
(‘b’, 1)
Mas não podemos modificar os elementos!
(TypeError)
37. Leitura de ficheiros de texto
Como ler os conteúdos de um ficheiro de
texto
>>>fin = open(‘words.txt’)
>>>print fin
Como ler uma linha
>>>fin.readline()
Como ler várias linhas
fin = open(‘words.txt’)
for line in fin:
word = line.strip()
print word
38. Outras coisas...
OOP
class
__init__()
self
Batteries Included
xml
json
requests
...
42. Processar a info da GW
REDY
https://goo.gl/bkDdp1
Obter o conteudo
Library: urllib.request
Processar o HTML
Library: xml.dom.minidom
Processar o JSON
Library: json
Interpretar as Strings
datetime
float