Você está na página 1de 20

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise

de Desenvolvimento de Sistemas

Marcos Vinicius Scholl

marcos.vinicius.scholl@gmail.com

Introduo bsica a Linguagem Python


O que Python?
Python uma linguagem de programao escrita em C, a sua implementao original tambm conhecida como CPython. Python tem alguns aspectos que a tornam especial: - uma linguagem interpretada. No necessita de compilao, o fonte executado direto pelo interpretador. - Dinamicamente tipada. (No necessita de declarao de varivel). - No h delimitadores de bloco ( { } ), isto feito apenas pela Indentao. - Tipagem forte. Verifica se a operao vlida e no faz correo automtica entre os tipos incompatveis. - Trabalha com operadores de alto nvel: string, lista, tupla, dicionrio, arquivo, classes - orientada a objetos: Afinal, tudo em Python um objeto.

Por que Python? Bom, eu tambm me fazia esta pergunta antes de ter qualquer contato com a linguagem. Agora, vejo o porqu, mas fica aqui alguns tpicos encontrados em um site:

Dado que existe uma grande diversidade de linguagens diferentes, por que aprender Python interessante ou mesmo importante? Na minha opinio, a linguagem combina um conjunto nico de vantagens: Os conceitos fundamentais da linguagem so simples de entender. A sintaxe da linguagem clara e fcil de aprender; o cdigo produzido normalmente curto e legvel. Os tipos pr-definidos includos em Python so poderosos, e ainda assim simples de usar. A linguagem possui um interpretador de comandos interativo que permite aprender e testar rapidamente trechos de cdigo. Python e expressivo, com abstraes de alto nvel. Na grande maioria dos casos, um programa em Python ser muito mais curto que seu correspondente escrito em outra linguagem. Isto tambm faz com o ciclo de desenvolvimento seja rpido e apresente potencial de defeitos reduzido menos cdigo, menos oportunidade para errar. Existe suporte para uma diversidade grande de bibliotecas externas. Ou seja, pode-se fazer em Python qualquer tipo de programa, mesmo que utilize grficos, funes matemticas complexas, ou uma determinada base de dados SQL.

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

possvel escrever extenses a Python em C e C++ quando necessrio desempenho mximo, ou quando for desejvel fazer interface com alguma ferramenta que possua biblioteca apenas nestas linguagens. Python permite que o programa execute inalterado em mltiplas plataformas; em outras palavras, a sua aplicao feita para Linux normalmente funcionar sem problemas em Windows e em outros sistemas onde existir um interpretador Python. Python pouco punitivo: em geral, tudo pode e h poucas restries arbitrrias. Esta propriedade acaba por tornar prazeroso o aprendizado e uso da linguagem. Python livre: alm do interpretador ser distribudo como software livre (e portanto, gratuitamente), pode ser usado para criar qualquer tipo de software proprietrio ou livre. O projeto e implementao da linguagem discutido aberta e diariamente em uma lista de correio eletrnico, e qualquer um bem-vindo para propor alteraes por meio de um processo simples e pouco burocrtico. Bom, vamos ao que interessa, Como funciona o Python!

Sintaxe:
NO NECESSITA DE ; haha Comentrios so feitos com o marcador (#), e comentrio em bloco por (""").

Comando Print:
1. 2. 3. 4. 5. 6. 7. 8. a = 21 print "Minha idade ", a print "Minha idade %d !!" %a print 'Minha idade ', a, "!!" >>> Minha idade 21 Minha idade 21 !! Minha idade 21 !!

No caso de formatao no print, pode ser utilizado os mesmos tipos de C, como o (%.2f) para float, porm todo o %(marcador, ex: %d, %f,...) que houver no print tem de existir um % para acesso a varivel. Por isso no segundo exemplo acima necessrio o %a.

Tipagem Dinmica:
Python no define tipos para varivel, como int, float, String, double, complex, bool mas trabalha com todos eles.

1. a = 1

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

2. type(a) #funo que retorna o tipo associado a uma varivel 3. >>> 4. <type int>

1. 2. 3. 4. 5. 6. 7. 8.

print a >>> 1 a = "teste" print a >>> teste

Nota que o mesmo a que foi primeiramente atribudo um int, em seguida foi atribudo uma String? Mas como isso possvel? Em C e Java isto impensvel, mas como Python tipado dinamicamente, a varivel assume o tipo de acordo com seu valor.

Exemplo de criao de variveis


1. 2. 3. 4. a = 1 # valor inteiro preco = 10.99 # valor ponto flutuante, ou float. t = True # valor booleano i = 4+3j # valor complexo / S pelo nome ainda nem sequer mandei um print pra testar como funciona, hehe

1. 2. 3. 4. 5. 6.

a = 'Arena' b = ' > ' c = ' Beira Rio' print a + b + c >>> Arena > Beira Rio

Estamos trabalhando com String certo? Como podemos saber quais mtodos esto disponveis para este tipo de dado e que o Python nos prove? Com a funo dir(),ela analisa a nossa varivel e nos retorna os mtodos do tipo pertinente.
1. dir(a) 2. >>> 3. ['__add__', '__class__', '__contains__', '__delattr__', '__doc__ ', '__eq__', '__format__', '__ge__', '__getattribute__', '__geti tem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__',

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

'__subclasshook__', '_formatter_field_name_split', '_formatter_p arser', 'capitalize', 'center', 'count', 'decode', 'encode', 'en dswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'is alpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', ' join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfin d', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split' , 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'tra nslate', 'upper', 'zfill']

Mtodos reservados so os que comeam com __, por exemplo o mtodo '__add__', que chamado toda vez que usamos o (+).

Atribuindo caracteres da string a variveis:


1. a, b, 2. print 3. print 4. print 5. print 6. >>> 7. T 8. A 9. D 10.S c, d = "TADS" a b c d

Multiplicao de uma String, isso impensvel em Java mas em Python ele realmente multiplica, mas o valor desta varivel:
1. 2. 3. 4. var = "TADS " print var*5 >>> TADS TADS TADS TADS TADS

Atribuio de varivel;
O Python por ser criado em cima do C, carrega suas caractersticas. Se fizermos duas variveis, e dissermos que a segunda igual a primeira, no temos duas alocaes de memria, e sim dois apontamentos para o mesmo endereo de memria. Descobrimos a posio na memria da varivel atravs da funo id(). A funo retorna a identidade do objeto que a garantia de ser nico e constante para este objeto durante sua vida. Dois objetos com vida no programa ou execuo no sobrepostos podem ter o mesmo id(). Ex:

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

1. a = 100 2. b = a 3. c = a+1 4. print id(a) 5. >>> 6. 1533140 7. print id(b) 8. >>> 9. 1533140 10.print c 11.>>> 12.1533128

Nota que o id da varivel a e b tem o mesmo valor, pois apontam para a mesma posio de memria. (Ahh, como bom no lidar com ponteiros! :D)

Fortemente Tipada:
Uma vez atribuda a uma varivel um valor inteiro, ela no pode ser somada com uma varivel com uma String. Em JavaScript isto at funciona, pois a linguagem fracamente tipada e ento faz converso automtica mas em Python no. Ex:
1. 2. 3. 4. 5. a = 'Grmio fundado em ' b = 1903 print a+b >>> TypeError: unsupported operand type(s) for +: 'int' and 'str'

Se quisermos uma string concatenada com estas duas variveis devemos fazer uma converso com cast. No caso de inteiro para String usado str().
1. print a + str(b) 2. >>> 3. Grmio fundado em 1903

Se fosse uma soma e tivssemos um valor em string, seria usado int().

Uma coisa curiosa que o Python oferece a troca de valor entre variveis. Vejam s. Sendo a = 10 e b = 20 faa a troca de valores entre a e b. Obs: No vale fazer isso: print 'a = %d \nb = %d' %(b, a)

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

Voc que est lendo instintivamente pensou, vou fazer uma varivel auxilia!
1. 2. 3. 4. 5. 6. c = a a = b b = c print a, b >>> 20 10

Funciona? Sim! a maneira correta e eu vou aceitar isso? NO ("- Vocs j sabem quem eu imitei! haha") Em Python a simples inverso de valores entre variveis se d desta forma:
1. 2. 3. 4. 5. a, b = b, a; print 'a = %d \nb = %d' %(a, b) >>> a = 20 b = 10

Fcil, no?

Entrada de Dados:
Ok, trabalhar com entrada de dados em Python bem infinitamente mais fcil que Java e mais fcil que C. Temos que chamar o mtodo ( input(texto_de_entrada_no_console)) Vamos ler do teclado um texto qualquer:
1. 2. 3. 4. txt = input('Entre com alguma coisa') print txt >>> o_que_digitamos

Se quisermos tratar esta entrada para um tipo especifico s adicionar o cast de converso: Ex:
1. 2. 3. 4. idade = int(input('Entre com sua idade') print 'Tu nasceu em %d' %(2014 - idade) >>> 1993 #s p testar, pois se tu ainda no fez aniversrio em 2014, ele vai te dar um ano de nascimento a mais! :/

Lembre-se. Python fortemente indentado. Se tiver erro de indentao, ele nem executa.
1. print a 2. print b 3. ^

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

4.

Erro de indentao

Blocos de Cdigo:
Todo bloco de cdigo so delimitados pelo uso da indentao, e sempre a linha anterior ao bloco deve terminar com (:).

Ex:
1. #imprime impares 2. for i in range(0,100): 3. if i % 2: 4. print i

Controle de Fluxo:
Conjunto de instrues com um condicional pelo menos.
1. if <condio>: 2. <bloco de cdigo> 3. elif <condio>: 4. <bloco de cdigo> 5. else: 6. <bloco de cdigo>

Ex:
1. temp = 10 2. if temp < 0: 3. print 'Congelando...' 4. elif 0 <= temp <= 20: 5. print "Frio" 6. elif 20 <= temp <= 30: 7. print 'De Boa' 8. else: 9. print "Muito Quente" 10.>>> 11.Frio

Percebam que independe do print se usarmos (') ou (").

Laos:
For:

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

1. for <referncia> in <sequncia>: 2. <bloco de cdigo> 3. continue 4. break 5. else: 6. <bloco de cdigo>

A clausula break interrompe o lao e continue passa para a prxima iterao. O cdigo dentro do else executado ao final do lao, a no ser que o lao tenha sido interrompido por break. Exemplo:
1. 2. 3. 4. 5. 6. 7. # Soma de 0 a 99 s = 0 for x in range(1, 100): s = s + x print s >>> 4950

A funo range(m, n, p), muito til em laos, pois retorna uma lista de inteiros, comeando em m e menores que n, em passos de comprimento p, que podem ser usados como sequncia para o lao.

Tipos de dados de Alto Nvel:


Alm de tipos bsicos como (int, float, boolean,..) Python possuem determinados tipos que merecem ateno:

String:
String uma sequncia imutvel que armazena uma sequncia de caracteres. Pode ser tanto delimitada com aspas duplas quanto com aspas simples. Se for delimitada com aspas simples, podemos usar aspas duplas como parte integrante da string.
1. a = "Exemplo de String" 2. b = 'Exemplo com "Aspas Duplas"'

#Se quisermos criar uma string com mltiplos caracteres o Python nos prove um delimitador aspas triplas, (""")
1. 2. 3. 4. 5. 6. 7. bairrista = """... Mostremos valor constncia Nesta mpia e injusta guerra Sirvam nossas faanhas De modelo a toda Terra ..."""

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

8. print bairrista 9. >>> 10. ... 11. Mostremos valor constncia 12. Nesta mpia e injusta guerra 13. Sirvam nossas faanhas 14. De modelo a toda Terra 15. ...

E tambm, como todos j estiveram em ED1 ou AAP sabem, como toda sequncia a String pode ser indexada dividida ou acessada usando colchetes
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. teste = "Instituto Federal" print teste[0] >>> I print teste[16] >>> l print teste[-1] >>> l print teste[:11] >>> Instituto F print teste[-6:-1] >>> edera

Percebam que como o Python trabalha com String e Lista como se fosse lista Circular a posio da string -1 e a 16 que a ltima, so a mesma letra! Com isso, possvel trabalhar de inmeras formas com a string, no caso acima foi pedido para mostrar de moonwalker(traz pra frente) da Posio -6 at a -1 o que continha a varivel.

Listas:
Como uma sequncia de valores, vetor em outras linguagem. Os dados so acessados por um ndice numrico iniciado em 0. A lista do Python pode armazenar qualquer tipo de valor, so mutveis, podendo ser alteradas a qualquer momento.

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

Ex:
1. lista = ["t", "A", "d", "S", 9, 2, 2014, "Dalhe Grmio", "Saldo:", 0.50] 2. print lista[0] 3. >>> 4. t 5. 6. print lista[7] 7. >>> 8. Dalhe Grmio 9. 10. print lista[0],lista[1], lista[2], lista[3] 11. >>> 12. t A d S 13. 14. lista.append("teta") 15. print lista[10] 16. >>> 17. teta

Percebam que como uma lista, alguns mtodos j so pr-existentes em Python.

Podemos percorrer a lista inteira com um Iterador sobre ela.


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. for item in lista: print item >>> t A d S 9 2 2014 Dalhe Grmio Saldo: 0.5 teta

Listas podem incluir outras listas internamente. Algumas outras Operaes com lista so:
1. 2. 3. 4. 5. 6. 7. # Incluindo lista.append('Robin') # Removendo lista.remove('teta') # Ordena a lista

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

8. 9. 10. 11. 12. 13. 14. 15.

lista.sort() # Inverte a lista lista.reverse() # Imprime numerado for i, item in enumerate(lista): print i + 1, '=>', item

A lista pode ser acessada o seu ltimo elemento sem saber a sua posio, somente necessrio indicar que o elemento anterior ao primeiro, como se fosse uma lista circular.
1. # Trocando o ltimo elemento 2. lista[-1] = 'Batman'

A lista possui o mtodo pop() que facilita a implementao de filas e pilhas:

# A lista vazia avaliada como falsa


1. while lista: 2. # Em filas, o primeiro item o primeiro a sair 3. # pop(0) remove e retorna o primeiro item 4. print 'Saiu', lista.pop(0), ', faltam', len(lista) 5. 6. # Mais itens na lista 7. lista += ["AAP", 'Ed1', 'Ed2']

As operaes de ordenao sort() e inverso reverse()so realizadas na prpria lista, sendo assim, no geram novas listas.

Tuplas:
As Tuplas tambm so sequencias de elementos arbitrrios, se comportam como as listas mas tem uma exceo importante. So imutveis. Uma vez criadas no podem ser alteradas.

Sintaxe: 1. tupla = (a, b, ..., z)

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

Os parnteses so opcionais.

Particularidade: tupla com apenas um elemento representada como:


t1 = (a,)

Os elementos de uma tupla podem ser referenciados da mesma forma que os elementos de uma lista:
1. primeiro_elemento = tupla[0]

Listas podem ser convertidas em Tuplas:


1. tupla = tuple(lista)

E Tuplas podem ser convertidas em listas:


1. lista = list(tupla)

Embora a tupla possa conter elementos mutveis, esses elementos no podem sofrer atribuio, pois isto modificaria a referncia ao objeto. Exemplo:

1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

tupla = ([1, 2], 4) tupla[0].append(3) print tupla >>> ([1, 2, 3], 4) tupla[0].append("TADS") print tupla >>> ([1, 2, 3, 'TADS'], 4)

As Tuplas so mais eficientes do que as listas convencionais, pois consomem menos recursos computacionais (memria), por serem estruturas mais simples, tal como as String imutveis em relao s String mutveis.

Outros tipos de sequncias

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

O Python prov entre os builtins tambm:


set: sequncia mutvel unvoca (sem repeties) no ordenada. frozenset: sequncia imutvel unvoca no ordenada.

Os dois tipos implementam operaes de conjuntos, tais como: unio, interseo e diferena.

OBS: Quando uma lista convertida para set, as repeties so descartadas.

Dicionrio:
Os dicionrios so sequencias que podem utilizar ndices de tipos variados, basta que estes ndices sejam imutveis (nmeros, tuplas e strings,..). Dicionrios so conhecidos em outras linguagens como arrays associativos ou hashes. Um dicionrio uma lista de associaes compostas por uma chave nica e estruturas correspondentes. Dicionrios so mutveis, tais como as listas. Estrutura Dicionrio:

1. 2. 3.

autor = {"nome" : "Marcos", "sobrenome" : "Scholl", "idade": 21} print autor["nome"] >>>

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

4. 5. 6. 7. 8. 9. 10. 11. 12.

Marcos print autor["sobrenome"] >>> Scholl print autor["idade"] >>> 21

O dicionrio do Python no fornece garantia de que as chaves estaro ordenadas.

Exemplo de dicionrio:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. dic = {'nome': ['Angus Young', 'Malcolm Young', 'Phil Rudd', 'Cliff Williams', 'Brian Johnson'], 'banda': 'AC/DC'} #Acessando elementos: print dic['nome'] >>> ['Angus Young', 'Malcolm Young', 'Phil Rudd', 'Cliff Williams', 'Brian Johnson'] #Adicionando elementos: dic['album'] = 'Back in Black' Apagando um elemento do dicionrio: del dic['album']

Obtendo os itens, chaves e valores:


1. itens = dic.items() 2. chaves = dic.keys() 3. valores = dic.values()

1. dic.keys() 2. >>> 3. ['banda', 'nome']

Nota que ele Ordenou as chaves.


1. dic.values() 2. >>> 3. ['AC/DC', ['Angus Young', 'Malcolm Young', 'Phil Rudd', 'Cliff Williams', 'Brian Johnson']]

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

Matriz Esparsa:
Exemplo de matriz esparsa: Bom, matriz creio que todos j conhecem o seu funcionamento, nada mais que um vetor de duas dimenses. Possui a caracterstica de Linhas e Colunas.

Agora, uma matriz esparsa, sabes o que ? Segundo uma definio da Wikipedia : http://pt.wikipedia.org/wiki/Matriz_esparsa Uma matriz dita esparsa quando possui uma grande quantidade de elementos que valem zero (ou no presentes, ou no necessrios). A matriz esparsa implementada atravs de um conjunto de listas ligadas que apontam para elementos diferentes de zero. De forma que os elementos que possuem valor zero no so armazenados.

Ou seja, em breve definio Matriz esparsa uma estrutura que s armazena os valores que existem na matriz.

Uma boa alternativa usarmos um Dicionrio. Para as chaves, ns podemos usar Tuplas que contm os nmeros da linha e a coluna.

No caso, achei um bom exemplo de matriz esparsa em Python utilizando Dicionrio e Tuplas. Cada tupla representa uma posio na matriz

Matriz esparsa implementada com dicionrio


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. dim = 6, 12 #Define as caractersticas da matriz mat = {} #define a matriz mat[3, 7] = 3 # Instancia valores em pontos aleatrios da matriz mat[4, 6] = 5 mat[6, 3] = 7 mat[5, 4] = 6 mat[2, 9] = 4 mat[1, 0] = 9 for lin in range(dim[0]): for col in range(dim[1]): # Mtodo get(chave, valor) retorna o valor da chave no dicionrio ou se a chave no existir, retorna o segundo argumento print mat.get((lin, col), 0),

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

13. 14. 15. 16. 17. 18. 19. 20.

print Sada: 0 0 0 0 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Nota que muitos valores nesta matriz so dispensveis, nesta matriz somente nos importa 6 valores. E estes 6 valores so a quem corresponde a matriz esparsa!!

Exemplo de Criao da Matriz Esparsa, atravs de uma String!

# Matriz em forma de string


1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. matriz = ''' 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 mat = {} # Quebra a matriz em linhas for lin, linha in enumerate(matriz.splitlines()): # Quebra a linha em colunas for col, coluna in enumerate(linha.split()): coluna = int(coluna) # Coloca a coluna no resultado, # se for diferente de zero if coluna: mat[lin, col] = coluna print mat # Soma um nas dimenses pois a contagem comea em zero print 'Tamanho da matriz completa:', (lin + 1) * (col + 1) print 'Tamanho da matriz esparsa:', len(mat) >>> {(4, 7): 1, (4, 8): 1, (2, 8): 1, (6, 9): 1, (2, 1): 1, (3, 7): 1, (5, 1): 1, (2, 5): 1, (4, 9): 1, (5, 5): 1, (2, 9): 1, (6, 10 ): 1, (4, 1): 1, (4, 10): 1, (3, 2): 1, (4, 5): 1, (2, 10): 1, ( 6, 7): 1, (6, 5): 1, (3, 5): 1, (2, 7): 1, (5, 10): 1, (6, 8): 1 , (6, 1): 1, (3, 1): 1, (4, 3): 1, (3, 4): 1} Tamanho da matriz completa: 84 Tamanho da matriz esparsa: 27 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0'''

26. 27. 28.

Percebam que temos desenhado na matriz esparsa um MS, Marcos Scholl! :D

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

A matriz esparsa todos estes pontos que possuem 1.

Matrizes esparsas tm aplicaes em problemas de engenharia, fsica (por exemplo, o mtodo das malhas para resoluo de circuitos eltricos ou sistemas de equaes lineares). Tambm tm aplicao em computao: armazenamento de dados (e.g., planilhas eletrnicas)

Funes:
Funes so blocas de cdigo com um nome que podem receber parmetros prdeterminados. a mesma definio de mtodo de Java. Elas podem ou no retornar objetos.

Sintaxe:
1. def nome_funcao(parametro1, parametro2): 2. <bloco de cdigo> 3. return valor

Ex:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. semestre = {'3': ['AAP', 'ED1', 'Redes', 'RAD1'], '4': ['ED2', 'ES2','SI','ED2']} def imprime_semestre(self): for materias in self.items(): print materias imprime_semestre(semestre) >>> ('3', ['AAP', 'ED1', 'Redes', 'RAD1']) ('4', ['ED2', 'ES2', 'SI', 'ED2'])

Percebam duas coisas, a primeira o funcionamento da funo que no tem retorno, se tivesse retorno ela s funcionria se passado uma varivel auxiliar. Outra coisa o funcionamento do argumento da funo. Funes e Classes em Python trabalham com o self que definido sempre para o primeiro argumento que se tem passado para a ela. Como somente passamos o dicionrio semestre referenciado como self. Exemplo com retorno: para a funo, dentro dela ele pode ser

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

1. 2. 3. 4. 5. 6. 7. 8. 9.

def calcula_imposto_federal(vlrProd): imposto = 999 #% return vlrProd * imposto #Produto custa R$ 10.00 vlrComImposto = calcula_imposto_federal(10) print 'R$', vlrComImposto >>> R$ 9990

Outra coisa legal que Python tem ARGUMENTO PADRO, um Argumento que se no for passado, assume um valor declarado na funo. Ex:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. def aplica_multa(valor, taxa=0.1): return valor + valor * taxa print aplica_multa(10) >>> 11.0 print aplica_multa(10, 0.5) >>> 15.0

Interessante n?

Classes:
Como j dito antes, tudo em Python um objeto, tipos, valores, classes, funes, mtodos e instancia, todos possuem atributos e mtodos associados. E a estrutura fundamental para de criar novos objetos obviamente a CLASSE. Como vocs j sabem, uma classe tem um nome, um conjunto de atributos e seus mtodos.

Sintaxe:
1. class calculadora: 2. a = 10 3. b = 20 4. 5. def clacula_soma(vlr1,vlr2): 6. return vlr1 + vlr2 7. 8. def clacula_multiplicacao(a,b):

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

9. 10. 11. 12. 13.

return vlr1 * vlr2 def __init__(a, b) print 'A soma ', clacula_soma(a, b)

Quanto aos mtodos, agora vemos um novo, __init__. Este um mtodo muito especial em Python pois ele na verdade o mtodo CONSTRUTOR, um mtodo opcional que executado quando esta classe for instanciada. Ele equivalente ao Main do Java. Ex: Se voc usar o Qt(biblioteca para interface, tipo o Swing ou JavaFX) montar a tua tela, pegar o cdigo e quiser visualizar ele, tu vais ter que fazer o mtodo __init__ no teu arquivo.py para dizer que vai instanciar um objeto com essa tela. E posteriormente usar o mtodo .show().

Bom, j est bem extenso, isto que era pra ser "apenas" um post! :D

Trabalhando Com Python, Terminal interativo ou IDE:


Tem duas formas de trabalhar com a linguagem, a mais bsica e para poucas aplicaes que o terminal interativo. a mesma coisa que codificar no terminal. E a maneira profissional que utilizando uma IDE para isto. Existem vrias no mercado, mas eu recomendo a que eu utilizo, :D, Spyder. completa, pode-se trabalhar com pacotes, intuitiva e simples! https://code.google.com/p/spyderlib/

Todo arquivo "executvel" de Python tem seu formato atribudo ao .py Todos os cdigos descritos aqui podem ser testados online mesmo, sem precisar instalar o Python em suas maquinas(Linux j vem na distribuio), o Snape indicou um interpretador Online: http://repl.it/languages/Python

Obs: Todos os Cdigos que possuem >>> Significa que a linha seguir vem com uma resposta da execuo, ento na hora de passar para o interpretador remover o >>>e apagar as linhas abaixo, pois elas no fazer parte do cdigo e sim a resposta do console de execuo.

Instituto Federal de Educao, Cincia e Tecnologia do Rio Grande do Sul Campus Rio Grande Curso Superior de Tecnologia em Anlise de Desenvolvimento de Sistemas

Qualquer dvida, sugesto, reclamao, voadora, ..., estou aberto a ouvir, afinal ainda estou aprendendo, assim como vocs! hehe Erros podem ter escapado da minha percepo.

Dedico este post/artigo ao grande Milhouse que me incentivou a comea-lo e ao Carlos Rocha que me apresentou a esta linguagem!