RQUITETURA AVANÇADA DE SISTEMAS PYTHON FOR DUMMIES RICARDO MENDÃO SILVA RMSILVA AT UAL DOT PT MARÇO 2015 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A OUTLINE • • • • • • • • • • • • • • • INTRODUÇÃO COMENTÁRIOS VARIÁVEIS OPERADORES IF STATEMENT FUNÇÕES CICLO FOR CICLO WHILE STRINGS LISTAS TUPLAS DICIONÁRIOS FORMATAÇÕES EXCEÇÕES CLASSES RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES INTRODUÇÃO • O Python é uma linguagem multifacetada, bastante flexível e aplicada nos mais variados sectores. • Uma vez que o nosso objetivo é programar para a cloud, este tutorial segue a abordagem de Python para a web, segundo o site: http://www.afterhoursprogramming.com RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES INTRODUÇÃO • Para desenvolver em Python, podemos utilizar desde o editor de texto mais simples até ao Visual Studio da Microsoft. • Neste caso vamos utilizar o Python IDLE, um IDE simples que vem incluído no pacote do Python e permite, entre outros, efetuar debug. • Abrindo o IDLE, poderemos executar o código praxe: print(“Hello World!!”) RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES COMENTÁRIOS • Em Python, tal como noutras linguagens, existem duas formas de inserir comentários: 1. Comentar uma linha print(“Not a comment”) #print(“Am a comment”) 2. Comentar múltiplas-­‐linhas ‘’’ print(“We are in a comment”) print(“We are still in a comment”) ‘’’ print(“We are out of the comment”) RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES VARIÁVEIS • As variáveis são o coração das linguagens de programação, não fugindo o Python a essa regra. • No entanto, o Python tem algumas características que o tornam único, nomeadamente, o modo inteligente como lida com estas. • O Python interpreta e declara as variáveis assim que lhes atribuímos um valor. • Ex: • a = 2, o Python define que a é um inteiro com o valor 2 • a = “2”, o Python define que a é uma string • Testando: • a = 2 b = 3 print(a + b) 5 a = “2” b = “3” print(a + b) 23 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES VARIÁVEIS • Imagine-­‐se o caso de uma variável ter sido considerada uma string, mas o seu valor é um int. O Python permite converter a mesma. • Para tal existem as seguintes funções: • int (variável) – converte uma variável para integer • str (variável) – converte uma variável para string • float(variável) – converte uma variável para float • Ex: • a = “2” b = 3 print(int(a) + b) 5 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES OPERADORES • Os operadores são fundamentais em qualquer linguagem, não existindo variações significativas entre estas. • Os operadores são aplicados em 5 áreas distintas: • Aritmética, • Atribuições, • Incrementação/decrementação • Comparação • Lógica. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES OPERADORES -­‐ ARITMÉTICA • Ex: print(3 + 4) print(3 -­‐ 4) print(3 * 4) print(3 / 4) print(3 % 2) print(3 ** 4) # 3 elevado a 4 print(3 // 4) # divisão de inteiros • Resultados: 7 -­‐1 12 0.75 (python 3.4) / 0 (python 2.7) 1 81 0 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES OPERADORES -­‐ ATRIBUIÇÃO • Ex: a = 0 a += 2 print(a) • Resultado: 2 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES IF STATEMENT • O condicional IF é um operador fundamental na implementação de lógica. • Segue a máxima de: se a então faz b Em Python temos o condicional elif, senão que não é mais do que uma abreviação faz c de else if. • Em python: Não existem chavetas em Python. Em a = 20 if a > = 22: print(“if”) elif a >= 21: print(“elif”) else: print(“else”) contrapartida, a indentação do código define os espaços. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES FUNÇÕES • As funções são fundamentais para separar, organizar, otimizar e reutilizar o código em qualquer linguagem de programação. • Para definir uma função em Python utiliza-­‐se a palavra chave def • Ex: def myAAS(): print(“Aruitetura Avançada de Sistemas”) myAAS() RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES FUNÇÕES COM ARGUMENTOS • Tal como noutras linguagens é possível passar argumentos nas funções em Python. • Ex: def myAAS(a,b): print(a + b) myAAS(4,5) • Resultado: • 9 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES ALCANCE DAS FUNÇÕES • O Python suporta variáveis com alcance global sem necessidade de explicitamente expressar essa condição. • Ex: • Ex: a = 10 def myAAS(): def myAAS(): a = 10 T C print(a) myAAS() T E C R E myAAS() print(a) R R O C N I R O C RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES CICLO FOR • • • • Ao contrário das restantes linguagens, os ciclos for em Python são bastante inovadores. O conceito de ciclo é iterar código tantas vezes quantas foram definidas. Ex: Tal como no IF, não existem chavetas em for a in range(1,3): Python. Em contrapartida, a indentação print(a) do código define os espaços. Neste caso, define o código contido no ciclo Resultado: for. 1 2 A palavra range define o intervalo de iteração, de x até y, excluindo o último. A palavra in completa a nomenclatura do ciclo for. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES CICLO WHILE • Muito semelhante ao ciclo for, o ciclo while permite iterar n vezes, onde n depende de uma condição. A indentação continua a ser chave do • Ex: ciclo. a = 1 while a < 7: Ao contrário do ciclo for, o while print(a) executa enquanto se verificar a a+=1 condição. • Resultado: 1 == 1 irá correr para sempre. 1 2 Nota: Em Python não existe suporte 3 para do...while. 4 5 6 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES STRINGS • • • • As strings são um tipo de variável muito importante em qualquer linguagem, permitindo uma flexibilidade enorme, sem estabelecer limites. As strings não têm qualquer limite. A função type(arg) devolve o tipo do Ex: argumento. myString = “” Torna-­‐se uma ferramenta bastante print(type(myString)) importante para debug. Resultado: <class ‘str’> RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES STRINGS • Em Python existem vários métodos disponíveis em strings, nomeadamente: • stringVar.count(‘x’) – conta o número de ocorrências ‘x’ em stringVar. • stringVar.find(‘x’) – devolve a posição do caracter ‘x’. • stringVar.lower() – devolve stringVar em lowercase. • stringVar.upper() – devolve stringVar em uppercase. • stringVar.replace(‘a’,’b’) – substitui todas as ocorrências de a por b. • stringVar.strip() – remove espaços brancos no inicio e final da string. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES STRINGS • Em Python existe ainda o conceito de índices de strings, que permitem partir strings por índices, sendo os índices os caracteres. • Ex: a = “string” print(a[1:4]) print(a[:-­‐1]) • Resultado: tri (imprime do 1º ao 4º caractere, excluindo o último) strin (imprime toda a string exceto o último caractere) RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES LISTAS • • • • • Em Python não existem vetores. Em contrapartida existem Python lists. As listas são altamente dinâmicas porque permitem guardar mais do que uma variável dentro destas. As listas são altamente flexíveis porque fornecem uma série de métodos que permitem manipular os valores dentro destas. Ex: aasList = [1,2,3,4,5,6] print(aasList[1]) Resultado: 2 RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES • Nas listas, os parêntesis retos definem os índices. LISTAS • Tal como noutras linguagens o primeiro índice é o 0. • No exemplo, anterior a lista é de inteiros, mas qualquer outro tipo ou tipos são suportados. • Ex: aasList = [1,2,3,4,5,”yo”] for a in aasList: print(a) RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES LISTAS • Os métodos mais comuns das listas em Python são: • .append(valor) – adiciona valor ao final da lista. • .count(‘x’) – conta o número de ocorrências ‘x’ na lista. • .index(‘x’) – devolve o índice de ‘x’ na lista. • .insert(‘y’,’x’) – insere ‘x’ na posição ‘y’. • .pop() – devolve o último elemento, removendo da lista. • .remove(‘x’) – encontra e remove o elemento ‘x’. • .reverse() – reordena inversamente os elementos da lista. • .sort() – ordena a lista por ordem alfabética ou numérica crescente. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES TUPLAS • • • • Em Python, Tuplas é uma estrutura de dados praticamente igual a Listas, como uma única diferença: as Tuplas são imutáveis. Ser imutável significa que o seu valor não pode ser alterado, ou seja, uma vez criada, não é possível adicionar, alterar ou remover elementos de uma tupla. A razão para isto é garantir a segurança dos dados, contra alterações involuntárias. No entanto, uma tupla pode ser convertida em lista e uma lista em tupla. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES TUPLAS RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES TUPLAS • Na figura anterior vimos que a tupla portou-­‐se como devido. • Utilizando a conversão para lista, verificamos que podemos contornar a limitação. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES DICIONÁRIOS • • • • Os dicionários não são estruturas de dados comuns noutras linguagens de programação. Porém, em Python são nativamente suportados. Os dicionários permitem definir para cada objeto um chave, constituindo um conjunto <chave: valor> para cada entrada. Deste modo é possível iterar um dicionário por chaves e/ou valores, tornando as pesquisas muito mais eficazes. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES DICIONÁRIOS • Nos dicionários não existe ordenação. • Para além disso, não podem existir chaves iguais. • Para imprimir não só a chave, mas também o respetivo valor: RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES FORMATAÇÃO • A formatação de variáveis em Python é algo que pode ser complicado de inicio, mas dadas as suas similaridades com a linguagem C, rapidamente se assimila. • Formatar números em strings: • Formatar strings: RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES EXCEÇÕES • Em qualquer linguagem de programação, lidar com erros e exceções, torna-­‐ se fundamental quando trabalhamos com um número considerável de variáveis. • A utilização do sistema de ficheiros, I/O, rede, etc.., está susceptível à ocorrência de vários tipos de exceções, que devem ser lidadas. • Ao prever a possibilidade de ocorrência de uma exceção, o Python permite avisar o utilizador e reverter a situação, em vez de simplesmente não apresentar qualquer atividade ou mesmo crashar. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES EXCEÇÕES • As exceções mais básicas são causadas, por exemplo, por um tipo de dados inválido. • Para tratar as mesmas deve se implementar o sistema de try: except: RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES CLASSES • • • • • Python pode ser utilizado de modo procedimental, mas também é uma poderosa ferramenta de POO. Utilizando classes em Python é possível usufruir de toda a flexibilidade e dinâmica que POO permite. Para criar uma classe, utiliza-­‐se o típico class NomeClasse(object): Para criar novas instâncias cria-­‐se um construtor def __init__(self): Para distinguir entre diferentes instâncias da mesma classe utiliza-­‐se o self. RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES #ficheiro ClassOne.py class Calculator(object): #definindo o construtor def __init__(self): self.current = 0 #adicionando um valor def add(self, amount): self.current += amount #obter o valor atual def getCurrent(self): return self.current CLASSES RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES UTILIZAR CLASSES • Para utilizar a classe criada num outro ficheiro, devemos começar por incluir a mesma: from ClassOne import * • De seguida, criamos uma nova instância da calculadora criada e utilizamos os seus métodos. #cria nova instância myBuddy = Calculator() #adiciona o valor 2 myBuddy.add(2) #imprime o valor atual print(myBuddy.getCurrent()) RICARDO MENDAO SILVA RMSILVA AT UAL DOT PT A S A PYTHON FOR DUMMIES QUIZZZ • Para testar os vossos conhecimentos, respondam ao QUIZ http://www.afterhoursprogramming.com/tests/practice/Python/ Uma vez que não abordámos ficheiros, ignorem as questões sobre os mesmos. A S A THE CUTTING EDGE COURSE RMSILVA AT UAL DOT PT An introduction to Python for the web http://www.afterhoursprogramming.com/tutorial/Python