SlideShare una empresa de Scribd logo
1 de 42
IEEE Week ‘17
Workshop de
Python
Diogo Gomes dgomes@ua.pt
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
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
Python
 Nome: Monty Python’s Flying Circus
 Combina funcionalidades modernas
 Encontradas no Java, C#, Ruby, C++,
etc...
 Com um estilo conciso e simples
Python: Hello World!
# File: hello.py
print(“hello world”)
$> python hello.py
hello world
Ficheiro hello.py
Consola
Ler dados do utilizador
# File: read.py
s = input(‘-> ‘)
print(s)
$> python read.py
-> qualquer coisa
“qualquer coisa”
Ficheiro read.py
Consola
Variáveis
 Declaram-se sem tipo
 Tipo dinâmico
# File: vars.py
a = 3
b = 5.2
print(a * b)
a = “var”
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
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
Funções
def foo(name):
print(“Olá: ”+name)
return True
foo(“Pedro”)
Declaração de função Argumentos
Indentação define bloco
Funções - localidade
def foo(name):
print “Olá: ”+name
def bar():
print “Olá: ”+name
foo(“Pedro”)
bar()
Erro!
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
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
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
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
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
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
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.
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
Iteratividade
 Instrução while
while <condição>:
<instruções>
 Instrução break
while True:
line = input(‘> ‘)
if line == ‘done’:
break
print(line)
print(“done!”)
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
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
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])
‘’
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)
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)
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}
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
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
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
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]
Operações com listas
 Partição
>>> t = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’]
>>> t[1:3]
[‘b’, ‘c’]
>>> t[:4]
[‘a’, ‘b’, ‘c’, ‘d’]
>>> t[3:]
[‘d’, ‘e’, ‘f’]
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)
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
{}
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
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()
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)
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
Outras coisas...
 OOP
 class
 __init__()
 self
 Batteries Included
 xml
 json
 requests
 ...
Bibliografia
 Think Python
 http://thinkpython.com/
Isto não era um workshop ?!
O que ?!!? Era só isto !?
EDP REDY
Smart Metering & Smart Home
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

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Pilhas e Filas
Pilhas e FilasPilhas e Filas
Pilhas e Filas
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Haskell aula3 listas
Haskell aula3 listasHaskell aula3 listas
Haskell aula3 listas
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Apresentação Lua
Apresentação LuaApresentação Lua
Apresentação Lua
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Estrutura de Dados - PILHAS
Estrutura de Dados - PILHASEstrutura de Dados - PILHAS
Estrutura de Dados - PILHAS
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Linguagem lua
Linguagem luaLinguagem lua
Linguagem lua
 
Tutorial R
Tutorial RTutorial R
Tutorial R
 
Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
Algoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de stringsAlgoritmos e Programação: Manipulação de strings
Algoritmos e Programação: Manipulação de strings
 
2 funcoes e estrutura de blocos
2   funcoes e estrutura de blocos2   funcoes e estrutura de blocos
2 funcoes e estrutura de blocos
 
Apresentação sobre a linguagem lua
Apresentação sobre a linguagem luaApresentação sobre a linguagem lua
Apresentação sobre a linguagem lua
 
Técnicas de Programação Funcional
Técnicas de Programação FuncionalTécnicas de Programação Funcional
Técnicas de Programação Funcional
 

Similar a IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python

Similar a IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python (20)

Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)Python para quem sabe Python (aula 2)
Python para quem sabe Python (aula 2)
 
Python
PythonPython
Python
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Python 02
Python 02Python 02
Python 02
 
Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)Orientação a objetos em Python (compacto)
Orientação a objetos em Python (compacto)
 
R para Iniciantes
R para IniciantesR para Iniciantes
R para Iniciantes
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Minicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDayMinicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDay
 
Objetos Pythonicos - compacto
Objetos Pythonicos - compactoObjetos Pythonicos - compacto
Objetos Pythonicos - compacto
 
Introducao ao python - Luciana Mota
Introducao ao python - Luciana MotaIntroducao ao python - Luciana Mota
Introducao ao python - Luciana Mota
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
 
Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10Pymordida0 Semana de computação da SOCIESC - 2008/10
Pymordida0 Semana de computação da SOCIESC - 2008/10
 
Estrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptxEstrutura de linguagem de programação - Aula 2.pptx
Estrutura de linguagem de programação - Aula 2.pptx
 
Python e django na prática
Python e django na práticaPython e django na prática
Python e django na prática
 
Haskell
HaskellHaskell
Haskell
 
Python Class
Python ClassPython Class
Python Class
 
Programação funcional tipada: uma introdução
Programação funcional tipada: uma introduçãoProgramação funcional tipada: uma introdução
Programação funcional tipada: uma introdução
 
Curso matlab 6 especiais
Curso matlab 6 especiaisCurso matlab 6 especiais
Curso matlab 6 especiais
 
Minicurso-Python-01.pptx
Minicurso-Python-01.pptxMinicurso-Python-01.pptx
Minicurso-Python-01.pptx
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 

Más de Diogo Gomes

Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao gitDiogo Gomes
 
Teaching AI through retro gaming
Teaching AI through retro gamingTeaching AI through retro gaming
Teaching AI through retro gamingDiogo Gomes
 
The Things Network
The Things Network The Things Network
The Things Network Diogo Gomes
 
Hack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoHack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoDiogo Gomes
 
IoT - Apps & Services
IoT - Apps & ServicesIoT - Apps & Services
IoT - Apps & ServicesDiogo Gomes
 
Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"Diogo Gomes
 
Open Source &amp; Research
Open Source &amp; ResearchOpen Source &amp; Research
Open Source &amp; ResearchDiogo Gomes
 
Resource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networksResource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networksDiogo Gomes
 

Más de Diogo Gomes (9)

Introdução ao git
Introdução ao gitIntrodução ao git
Introdução ao git
 
Teaching AI through retro gaming
Teaching AI through retro gamingTeaching AI through retro gaming
Teaching AI through retro gaming
 
The Things Network
The Things Network The Things Network
The Things Network
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
Hack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao ArduinoHack'Aveiro - 1º workshop - Introdução ao Arduino
Hack'Aveiro - 1º workshop - Introdução ao Arduino
 
IoT - Apps & Services
IoT - Apps & ServicesIoT - Apps & Services
IoT - Apps & Services
 
Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"Conversas 2.0@sapo.labs - "svn+code.ua"
Conversas 2.0@sapo.labs - "svn+code.ua"
 
Open Source &amp; Research
Open Source &amp; ResearchOpen Source &amp; Research
Open Source &amp; Research
 
Resource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networksResource Optimizations for Broadcast enabled networks
Resource Optimizations for Broadcast enabled networks
 

Último

LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...Francisco Márcio Bezerra Oliveira
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxReinaldoMuller1
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
GÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxGÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxMARIADEFATIMASILVADE
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxMarcosLemes28
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 

Último (20)

LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
Seminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptxSeminário Biologia e desenvolvimento da matrinxa.pptx
Seminário Biologia e desenvolvimento da matrinxa.pptx
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
GÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxGÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptx
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
Cartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptxCartão de crédito e fatura do cartão.pptx
Cartão de crédito e fatura do cartão.pptx
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 

IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python

  • 1. IEEE Week ‘17 Workshop de Python Diogo Gomes dgomes@ua.pt
  • 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
  • 5. Python: Hello World! # File: hello.py print(“hello world”) $> python hello.py hello world Ficheiro hello.py Consola
  • 6. Ler dados do utilizador # File: read.py s = input(‘-> ‘) print(s) $> python read.py -> qualquer coisa “qualquer coisa” Ficheiro read.py Consola
  • 7. Variáveis  Declaram-se sem tipo  Tipo dinâmico # File: vars.py a = 3 b = 5.2 print(a * b) a = “var”
  • 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
  • 10. Funções def foo(name): print(“Olá: ”+name) return True foo(“Pedro”) Declaração de função Argumentos Indentação define bloco
  • 11. Funções - localidade def foo(name): print “Olá: ”+name def bar(): print “Olá: ”+name foo(“Pedro”) bar() Erro!
  • 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]
  • 31. Operações com listas  Partição >>> t = [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’] >>> t[1:3] [‘b’, ‘c’] >>> t[:4] [‘a’, ‘b’, ‘c’, ‘d’] >>> t[3:] [‘d’, ‘e’, ‘f’]
  • 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  ...
  • 39. Bibliografia  Think Python  http://thinkpython.com/
  • 40. Isto não era um workshop ?! O que ?!!? Era só isto !?
  • 41. EDP REDY Smart Metering & Smart Home
  • 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