Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Python 02

1,494 views

Published on

Funç~

Published in: Technology
  • Be the first to comment

Python 02

  1. 1. Python - 2ª Aula Bruno Gama Catão
  2. 2. Um pouco de revisãoPython é uma linguagem com foco na simplicidade;Python é case sensitive;As linhas em Python não terminam com ‘;’Os blocos são definidos pela indentação;Os tipos das variáveis são definidos quando um valor éatribuído a elas.
  3. 3. Exemplo O que este programa faz ?# -*- coding: latin-1 -*-qtdAlunos = int(raw_input(A turma possui quantos alunos ?))total = 0.0#Para cada um dos alunos, perguntar a notafor i in range(qtdAlunos): total += float(raw_input(Digite a nota %d: % (i + 1)))#Calcula a médiamedia = total / qtdAlunos#Exibe o resultadoprint A média da turma foi: %.1f % media
  4. 4. Lembretes 1Python é uma linguagem fortemente tipada !A função raw_input sempre retorna Strings;É necessário converter os Strings para os tipos corretos,para isto existem as funções: int(str) - Converte um String em um inteiro; float(str) - Converte um String em um valor de ponto flutuante.
  5. 5. Lembretes 2Python suporta operadores unários, da mesma formaque C, C++, Java e C#: a += 1 a = a + 1 a -= 4 a = a - 4 a *= 3 a = a * 3 a /= 2 a = a / 2
  6. 6. Desafio da Aula Passada# -*- coding: latin-1 -*-nomes = []while True: nome = raw_input("Digite um nome, ou sair para encerrar: ") if nome == sair: break nomes.append(nome)#Ordenando os nomes digitadosnomes.sort()print Nomes digitados: for i, nome in enumerate(nomes): print str(i + 1) + - + nome#Gravando os nomes em um arquivoarquivo = open(nomes.txt, w)arquivo.writelines(nomes)arquivo.close()
  7. 7. LembreteNão é possível concatenar números com Strings;Portanto, é necessário antes converter os números paraStrings;Isto é feito utilizando a função str(valor_numérico).
  8. 8. Trabalhando com o Sistema OperacionalExistem alguns módulos que permitem trabalhardiretamente com o sistema operacional: os; shutil.
  9. 9. Módulo OSPrincipais funções: getlogin( ); chmod(path, mode); listdir(path); execl(path, args); remove(file); name; rmdir(path); getenv(key); rmdirs(path); putenv(key, value); system(command).
  10. 10. Módulo SHUTILcopy(source, target);copytree(source, target);move(source, target);rmtree(path).
  11. 11. Exemplo 1# -*- coding: latin-1 -*-import osprint Sistema operacional: + os.nameraw_input(Pressione ENTER para executar o bloco de notas)os.system(C:WINDOWSNOTEPAD.EXE)
  12. 12. Exemplo 2# -*- coding: latin-1 -*-import osdiretorio = raw_input(Digite um diretório: )print Arquivos do diretório + diretoriofor arquivo in os.listdir(diretorio): print arquivo
  13. 13. Exemplo 3Neste exemplo construiremos uma aplicação simplesque constrói páginas HTML com álbuns de fotografias;Os álbuns serão construídos automaticamente a partirdos arquivos de imagens contidos em um diretório.
  14. 14. # -*- coding: latin-1 -*-import oscabecalho = <html> <head><title></title></head> <body> <h1>%s</h1> <ul>corpo = <li><a href="%s">%s</a></li>rodape = </ul> </body></html>diretorio = raw_input(Qual o diretório das imagens ?)formato = raw_input(Qual o formato das imagens ?)album = raw_input(Qual o nome do álbum ?)pagina = cabecalho % albumfor arquivo in os.listdir(diretorio): if arquivo.endswith(formato): pagina += corpo % (arquivo, arquivo)pagina += rodapearquivo = open(os.path.join(diretorio, "album.html"), "w")arquivo.write(pagina)arquivo.close()
  15. 15. DesafioEstenda o exemplo anterior para que os modelos decabeçalho, corpo e rodapé na realidade estejamguardados em arquivos.
  16. 16. Criando suas próprias funções# -*- coding: latin-1 -*-#definindo a função ‘maior’def maior(a, b): if a > b: print "%d é maior que %d" % (a, b) elif b > a: print "%d é maior que %d" % (b, a) else: print "%d e %d são iguais" % (a, b)#utilizando a função ‘maior’maior(5, 8)
  17. 17. Retornando valores def somatorio(n): soma = 0 for i in range(n + 1): soma += i return soma print str(somatorio(10))
  18. 18. Mais sobre funçõesArgumentos com valores padrão;Argumentos de palavra-chave;Listas de argumentos arbitrários.
  19. 19. Valores Padrão de Argumentos# -*- coding: latin-1 -*-def perguntaSimNao(pergunta, tentativas = 2): while True: resposta = raw_input(pergunta) if resposta in (sim, não): return resposta tentativas -= 1 if tentativas <= 0: print Número de tentativas excedido ! return Erro print Você deve responder sim ou nãoperguntaSimNao(Você gosta de pizza ?)perguntaSimNao(Tem certeza ?, 4)
  20. 20. ObservaçãoOs parâmetros com valores padrão são opcionais;Se não forem informados eles automaticamenteassumirão seus valores padrão.
  21. 21. Valores de Argumento por Palavra-Chavedef calculaIR(salario, baseIsencao=1200, taxaJuros=0.125): if salario <= baseIsencao: return salario return salario + (salario - baseIsencao) * taxaJurosprint str(calculaIR(3500))print str(calculaIR(3500, taxaJuros=0.275))
  22. 22. Argumentos Arbitrários def somatorio(*valores): soma = 0 for i in valores: soma += i return soma print str(somatorio(2)) print str(somatorio(1, 3, 5, 7, 9))
  23. 23. Argumentos ArbitráriosAtenção, uma lista de argumentos (*) apenas pode vircomo o último argumento de uma função: # -*- coding: latin-1 -*- def exibeNomes(saudacao, *nomes): for nome in nomes: print saudacao + " " + nome print exibeNomes(Olá, João, Maria, Pedro)
  24. 24. Estruturas de DadosListas;Tuplas;Conjuntos;Dicionários;
  25. 25. Relembrando um pouco ListasDeclaração: lista=[] ou lista=[‘a’,2,3]Adição de elemento: lista.append(valor)Adição de lista: listaC = listaA + listaBOrdenando os elementos: lista.sort()Invertendo os elementos: lista.reverse()Acessando/modificando um elemento: lista[2]Sublistas: lista[1:3] ou lista[:3] ou lista[1:]
  26. 26. Listas ComprimidasÉ possível definir listas complexas de uma maneirabastante simples, as listas comprimidas;Ex: # -*- coding: latin-1 -*- nomes = [maria, joão, ana, josé] mulheres = [n for n in nomes if n.endswith(a)] print mulheres
  27. 27. Listas Comprimidas Forma GeralForma 1: [expressão for variáveis in lista]Forma 2: [expressão for variáveis in lista if condição]Exemplo: # -*- coding: latin-1 -*- salarios = [1000, 1500, 750, 510] # aumentar os salários em 10% salarios = [s * 1.01 for s in salarios] # exibindo os novos salários print salarios
  28. 28. TuplasTuplas são seqüências de valores que não podem seralterados;Os elementos de uma tupla podem ser acessados damesma forma que em uma lista, pelo operador [];Para definir tuplas em Python utiliza-se parêntesis: #tupla simples telefone = (83, 33102222) print Telefone (%d) %d % telefone #Lista de tuplas telefones = [(83, 33332222), (84, 32215678)] for tel in telefones: print Telefone (%d) %d % tel
  29. 29. ConjuntosVamos lembrar um pouco de matemática;Conjuntos são coleções que não permitem elementosduplicados;Operações de conjuntos: União; Diferença; Interseção.
  30. 30. Conjuntos em PythonOs conjuntos sempre são criados a partir de uma lista;Para isto, utiliza-se a função set(lista): # Lista de compras compras = [laranja, uva, maca, uva] # Verificando quais frutas foram compradas frutas = set(compras) print frutas
  31. 31. Operações de ConjuntosUnião: conjuntoA + conjuntoB;Diferença: conjuntoA - conjuntoB;Interseção: conjuntoA & conjuntoB;Valores diferentes: conjuntoA ^ conjuntoB;Ex:comprasJoao = [sal, refrigerante, detergente]comprasMaria = [detergente, cenoura, sal, uva]comprasEmComum = set(comprasJoao) & set(comprasMaria)print comprasEmComum
  32. 32. DicionáriosOs dicionários associamchaves a valores;Uma lista telefônica é umexemplo de um dicionário,onde você procura por umvalor relacionado a outro.
  33. 33. DicionáriosDeclarando: dados = { } dados = {“nome” : “Bruno”, “idade” : 27}Acessando: print dados[“nome”]Modificando: dados[“idade”] = 28Adicionando dados: dados[“profissao”] = “Professor”
  34. 34. DicionáriosApagando: del d[“nome”] d.clear( )Testando: d.has_key(“idade”)Obtendo as chaves: d.keys( )
  35. 35. Método items Os dicionários possuem um método chamado items; Este método retorna uma lista de tuplas (chave, valor) para os elementos armazenados do dicionário.aluno = {"nome" : "Bruno", "curso" : "SI", "media" : 8.2}for valor in aluno.items(): print valor
  36. 36. Listas de Dicionários Listas de dicionários podem ser utilizadas para armazenar informações complexas de forma estruturada:# -*- coding: latin-1 -*-# Dicionário com todos os alunos da faculdadealunos = [{"nome" : "Bruno", "curso" : "SI", "media" : 8.2}, {"nome" : "Maria", "curso" : "Direito", "media" : 9.5}, {"nome" : "Pedro", "curso" : "Fisio", "media" : 6.0}]# Exibir apenas os alunos de Sistemas de Informaçãofor aluno in [a for a in alunos if a["curso"] == "SI"]: print "%s - %.2f" % (aluno["nome"], aluno["media"])
  37. 37. Mais alguns módulosrandom;urllib2;datetime;zipfile.
  38. 38. Módulo randomMódulo que trabalha com valores aleatórios;Funções principais: choice(lista); sample(lista, quantidade); random( ) randrange(valorMaximo)
  39. 39. Exemplo - Sorteioimport randomconcorrentes = []print Digite os nomes dos concorrentes ou sair para encerrarwhile True: nome = raw_input(Digite o nome: ) if nome == sair: break concorrentes.append(nome)print O sorteado foi + random.choice(concorrentes)
  40. 40. # -*- coding: latin-1 -*-import randomvalor = 1 + random.randrange(100)print "Sorteei um valor de 1 a 100"print "Você tem 5 tentativas para acertar"acertou = Falsefor i in range(5): tentativa = int(raw_input("Qual o valor ? ")) if valor == tentativa: acertou = True break elif valor > tentativa: print Maior else: print Menorif acertou: print Parabéns, você acertou !else: print Que pena, o valor era %d % (valor)
  41. 41. Exemplo - Mega-sena import random #Sorteando as dezenas dezenas = random.sample(range(1, 61), 6) #Ordenando dezenas.sort() print dezenas
  42. 42. Módulo urllib2Este módulo serve para acessar páginas na Internet;Sua utilização é bastante simples, ex: import urllib2 url = raw_input(Digite a URL: ) print urllib2.urlopen(url).readlines()
  43. 43. Cliente do Twitter# -*- coding: latin-1 -*-import urllib2usuario = raw_input(Digite o usuário do Twitter: )url = http://www.twitter.com/ + usuariofor linha in urllib2.urlopen(url): #Acessando as mensagens do twitter if <span class="entry-content"> in linha: #Limpando a linha e exibindo linha = linha.replace(<span class="entry-content">, ) linha = linha.replace(</span>, ) print linha
  44. 44. Consulta de CEPimport urllib2url_cep = http://www.buscarcep.com.br/?cep=cep = raw_input(Digite o CEP:)conteudo = urllib2.urlopen(url_cep + cep + &formato=string).read()#Dispensando o primeiro &conteudo = conteudo[1:]for dados in conteudo.split(&): print dados
  45. 45. Módulo zipfileEste módulo permite compactar e descompactararquivos no formato zip;Python possui outros módulos para outros formatos,como por exemplo zlib, gzip, bz2 e tarfile.
  46. 46. Descompactando# -*- coding: latin-1 -*-from zipfile import ZipFilearquivo = raw_input(Digite o nome do arquivo: )diretorio = raw_input(Digite o diretório de destino: )zip = ZipFile(arquivo)zip.extractall(diretorio)
  47. 47. Compactandofrom zipfile import ZipFilearquivo = raw_input(Digite o nome do arquivo de destino: )zip = ZipFile(arquivo, w)print Adicionando arquivos: while True: arquivo = raw_input(Digite o nome do arquivo ou sair: ) if arquivo == sair: break zip.write(arquivo)zip.close()

×