SlideShare uma empresa Scribd logo
1 de 47
Python - 2ª Aula
   Bruno Gama Catão
Um pouco de revisão
Python é 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.
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 nota
for i in range(qtdAlunos):
    total += float(raw_input('Digite a nota %d:' % (i + 1)))

#Calcula a média
media = total / qtdAlunos
#Exibe o resultado
print 'A média da turma foi: %.1f' % media
Lembretes 1
Python é 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.
Lembretes 2
Python suporta operadores unários, da mesma forma
que 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
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 digitados
nomes.sort()
print 'Nomes digitados: '
for i, nome in enumerate(nomes):
    print str(i + 1) + ' - ' + nome

#Gravando os nomes em um arquivo
arquivo = open('nomes.txt', 'w')
arquivo.writelines(nomes)
arquivo.close()
Lembrete

Não é possível concatenar números com Strings;
Portanto, é necessário antes converter os números para
Strings;
Isto é feito utilizando a função str(valor_numérico).
Trabalhando com o
    Sistema Operacional

Existem alguns módulos que permitem trabalhar
diretamente com o sistema operacional:
  os;
  shutil.
Módulo OS
Principais 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).
Módulo SHUTIL

copy(source, target);
copytree(source, target);
move(source, target);
rmtree(path).
Exemplo 1

# -*- coding: latin-1 -*-
import os

print 'Sistema operacional: ' + os.name
raw_input('Pressione ENTER para executar o bloco de notas')
os.system('C:WINDOWSNOTEPAD.EXE')
Exemplo 2

# -*- coding: latin-1 -*-
import os

diretorio = raw_input('Digite um diretório: ')
print 'Arquivos do diretório ' + diretorio
for arquivo in os.listdir(diretorio):
    print arquivo
Exemplo 3
Neste exemplo construiremos uma aplicação simples
que constrói páginas HTML com álbuns de fotografias;
Os álbuns serão construídos automaticamente a partir
dos arquivos de imagens contidos em um diretório.
# -*- coding: latin-1 -*-
import os

cabecalho = '''<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 % album
for arquivo in os.listdir(diretorio):
    if arquivo.endswith(formato):
         pagina += corpo % (arquivo, arquivo)
pagina += rodape
arquivo = open(os.path.join(diretorio, "album.html"), "w")
arquivo.write(pagina)
arquivo.close()
Desafio


Estenda o exemplo anterior para que os modelos de
cabeçalho, corpo e rodapé na realidade estejam
guardados em arquivos.
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)
Retornando valores
   def somatorio(n):
       soma = 0
       for i in range(n + 1):
           soma += i
       return soma

   print str(somatorio(10))
Mais sobre funções


Argumentos com valores padrão;
Argumentos de palavra-chave;
Listas de argumentos arbitrários.
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ão'

perguntaSimNao('Você gosta de pizza ?')
perguntaSimNao('Tem certeza ?', 4)
Observação


Os parâmetros com valores padrão são opcionais;
Se não forem informados eles automaticamente
assumirão seus valores padrão.
Valores de Argumento por
      Palavra-Chave

def calculaIR(salario, baseIsencao=1200, taxaJuros=0.125):
    if salario <= baseIsencao:
        return salario
    return salario + (salario - baseIsencao) * taxaJuros

print str(calculaIR(3500))
print str(calculaIR(3500, taxaJuros=0.275))
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))
Argumentos Arbitrários
Atenção, uma lista de argumentos (*) apenas pode vir
como 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')
Estruturas de Dados

Listas;
Tuplas;
Conjuntos;
Dicionários;
Relembrando um pouco
         Listas
Declaração: lista=[] ou lista=[‘a’,2,3]

Adição de elemento: lista.append(valor)

Adição de lista: listaC = listaA + listaB

Ordenando 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:]
Listas Comprimidas
É possível definir listas complexas de uma maneira
bastante 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
Listas Comprimidas
         Forma Geral
Forma 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
Tuplas
Tuplas são seqüências de valores que não podem ser
alterados;
Os elementos de uma tupla podem ser acessados da
mesma 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
Conjuntos
Vamos lembrar um pouco de matemática;
Conjuntos são coleções que não permitem elementos
duplicados;
Operações de conjuntos:
  União;
  Diferença;
  Interseção.
Conjuntos em Python
Os 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
Operações de Conjuntos
Uniã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
Dicionários

Os dicionários associam
chaves a valores;
Uma lista telefônica é um
exemplo de um dicionário,
onde você procura por um
valor relacionado a outro.
Dicionários
Declarando:
  dados = { }
  dados = {“nome” : “Bruno”, “idade” : 27}
Acessando:
  print dados[“nome”]
Modificando:
  dados[“idade”] = 28
Adicionando dados:
  dados[“profissao”] = “Professor”
Dicionários
Apagando:
  del d[“nome”]
  d.clear( )
Testando:
  d.has_key(“idade”)
Obtendo as chaves:
  d.keys( )
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
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 faculdade
alunos = [{"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ção
for aluno in [a for a in alunos if a["curso"] == "SI"]:
    print "%s - %.2f" % (aluno["nome"], aluno["media"])
Mais alguns módulos

random;
urllib2;
datetime;
zipfile.
Módulo random
Módulo que trabalha com valores aleatórios;
Funções principais:
  choice(lista);
  sample(lista, quantidade);
  random( )
  randrange(valorMaximo)
Exemplo - Sorteio

import random

concorrentes = []
print 'Digite os nomes dos concorrentes ou sair para encerrar'
while True:
    nome = raw_input('Digite o nome: ')
    if nome == 'sair': break
    concorrentes.append(nome)

print 'O sorteado foi ' + random.choice(concorrentes)
# -*- coding: latin-1 -*-
import random

valor = 1 + random.randrange(100)

print "Sorteei um valor de 1 a 100"
print "Você tem 5 tentativas para acertar"
acertou = False

for i in range(5):
    tentativa = int(raw_input("Qual o valor ? "))
    if valor == tentativa:
        acertou = True
        break
    elif valor > tentativa:
        print 'Maior'
    else:
        print 'Menor'

if acertou:
    print 'Parabéns, você acertou !'
else:
    print 'Que pena, o valor era %d' % (valor)
Exemplo - Mega-sena
 import random

 #Sorteando as dezenas
 dezenas = random.sample(range(1, 61), 6)

 #Ordenando
 dezenas.sort()

 print dezenas
Módulo urllib2
Este 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()
Cliente do Twitter
# -*- coding: latin-1 -*-
import urllib2

usuario = raw_input('Digite o usuário do Twitter: ')
url = 'http://www.twitter.com/' + usuario

for 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
Consulta de CEP
import urllib2

url_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
Módulo zipfile


Este módulo permite compactar e descompactar
arquivos no formato zip;
Python possui outros módulos para outros formatos,
como por exemplo zlib, gzip, bz2 e tarfile.
Descompactando

# -*- coding: latin-1 -*-
from zipfile import ZipFile

arquivo = raw_input('Digite o nome do arquivo: ')
diretorio = raw_input('Digite o diretório de destino: ')
zip = ZipFile(arquivo)
zip.extractall(diretorio)
Compactando
from zipfile import ZipFile

arquivo = 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()

Mais conteúdo relacionado

Mais procurados

Lista de exercícios resolvidos
Lista de exercícios resolvidosLista de exercícios resolvidos
Lista de exercícios resolvidos
Crishna Irion
 
Aula 06 vetores e matrizes
Aula 06   vetores e matrizesAula 06   vetores e matrizes
Aula 06 vetores e matrizes
Tácito Graça
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
Pacc UAB
 
Algoritmos resolvidos lista 2
Algoritmos resolvidos lista 2Algoritmos resolvidos lista 2
Algoritmos resolvidos lista 2
isa_ise
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
Janderson Campêlo
 

Mais procurados (20)

Lista de exercícios resolvidos
Lista de exercícios resolvidosLista de exercícios resolvidos
Lista de exercícios resolvidos
 
Introdução a python
Introdução a pythonIntrodução a python
Introdução a python
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Exercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetoresExercicios resolvidos visu alg vetores
Exercicios resolvidos visu alg vetores
 
Exercicios resolvidos visuAlg
Exercicios resolvidos visuAlgExercicios resolvidos visuAlg
Exercicios resolvidos visuAlg
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Aula 06 vetores e matrizes
Aula 06   vetores e matrizesAula 06   vetores e matrizes
Aula 06 vetores e matrizes
 
Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.Apresentação-Resumo sobre o Java Swing.
Apresentação-Resumo sobre o Java Swing.
 
PHP
PHPPHP
PHP
 
Algoritmos: Tipos de Dados
Algoritmos: Tipos de DadosAlgoritmos: Tipos de Dados
Algoritmos: Tipos de Dados
 
Chap1 Introduction à python
Chap1 Introduction à pythonChap1 Introduction à python
Chap1 Introduction à python
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Algoritmos resolvidos lista 2
Algoritmos resolvidos lista 2Algoritmos resolvidos lista 2
Algoritmos resolvidos lista 2
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Alguns algoritmos resolvidos
Alguns algoritmos resolvidosAlguns algoritmos resolvidos
Alguns algoritmos resolvidos
 
Material de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de ProgramaçãoMaterial de Apoio de Algoritmo e Lógica de Programação
Material de Apoio de Algoritmo e Lógica de Programação
 
Customização RM Fluxus - TOTVS - Rateio por Centro de Custo e Natureza Orç. F...
Customização RM Fluxus - TOTVS - Rateio por Centro de Custo e Natureza Orç. F...Customização RM Fluxus - TOTVS - Rateio por Centro de Custo e Natureza Orç. F...
Customização RM Fluxus - TOTVS - Rateio por Centro de Custo e Natureza Orç. F...
 

Destaque

Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)
Bruno Catão
 

Destaque (14)

Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)Unity3d Space Shooter (Parte 1)
Unity3d Space Shooter (Parte 1)
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Python 05
Python 05Python 05
Python 05
 
Web Offline
Web OfflineWeb Offline
Web Offline
 
Python 07
Python 07Python 07
Python 07
 
Python 08
Python 08Python 08
Python 08
 
Python 03
Python 03Python 03
Python 03
 
Python 04
Python 04Python 04
Python 04
 
Introdução à MEAN Stack
Introdução à MEAN StackIntrodução à MEAN Stack
Introdução à MEAN Stack
 
Python 06
Python 06Python 06
Python 06
 
Python 01
Python 01Python 01
Python 01
 
Angular js
Angular jsAngular js
Angular js
 
Retina e Retinose Pigmentar
Retina e Retinose PigmentarRetina e Retinose Pigmentar
Retina e Retinose Pigmentar
 
Desvendando a linguagem JavaScript
Desvendando a linguagem JavaScriptDesvendando a linguagem JavaScript
Desvendando a linguagem JavaScript
 

Semelhante a Python 02

Palestra python
Palestra pythonPalestra python
Palestra python
Rony Cruch
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
apolllorj
 
Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Python
dmmartins
 

Semelhante a Python 02 (20)

IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop PythonIEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
IEEEweek 2017 @ DETI Univ. Aveiro - Workshop Python
 
Palestra python
Palestra pythonPalestra python
Palestra python
 
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
 
Linguagem R
Linguagem RLinguagem R
Linguagem R
 
Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em Python
 
Minicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDayMinicurso Básico de Python - PythonDay
Minicurso Básico de Python - PythonDay
 
Standard ML / CPN ML
Standard ML / CPN MLStandard ML / CPN ML
Standard ML / CPN ML
 
Python Class
Python ClassPython Class
Python Class
 
Conhecendo ou relembrando C
Conhecendo ou relembrando CConhecendo ou relembrando C
Conhecendo ou relembrando C
 
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
 
Ed1
Ed1Ed1
Ed1
 
Python Emsl2009
Python Emsl2009Python Emsl2009
Python Emsl2009
 
Slide_Python.pdf
Slide_Python.pdfSlide_Python.pdf
Slide_Python.pdf
 
Exemplos registros e funções
Exemplos registros e funçõesExemplos registros e funções
Exemplos registros e funções
 
Python
PythonPython
Python
 
Unidade7 1
Unidade7 1Unidade7 1
Unidade7 1
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)Estruturação de Linguagens de Programação (Pascal e C++)
Estruturação de Linguagens de Programação (Pascal e C++)
 
Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Python
 
Ling c
Ling cLing c
Ling c
 

Mais de Bruno Catão (11)

Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2Introdução às Redes Neurais - Parte 2/2
Introdução às Redes Neurais - Parte 2/2
 
Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2Introdução às Redes Neurais - Parte 1/2
Introdução às Redes Neurais - Parte 1/2
 
React JS - Parte 2
React JS - Parte 2React JS - Parte 2
React JS - Parte 2
 
React JS - Parte 1
React JS - Parte 1React JS - Parte 1
React JS - Parte 1
 
Node JS - Parte 4
Node JS - Parte 4Node JS - Parte 4
Node JS - Parte 4
 
Node JS - Parte 3
Node JS - Parte 3Node JS - Parte 3
Node JS - Parte 3
 
Node JS - Parte 2
Node JS - Parte 2Node JS - Parte 2
Node JS - Parte 2
 
Node JS - Parte 1
Node JS - Parte 1Node JS - Parte 1
Node JS - Parte 1
 
Ionic 2/3 + Firebase
Ionic 2/3 + FirebaseIonic 2/3 + Firebase
Ionic 2/3 + Firebase
 
Introdução ao Framework Grails
Introdução ao Framework GrailsIntrodução ao Framework Grails
Introdução ao Framework Grails
 
O framework spring
O framework springO framework spring
O framework spring
 

Último

Último (8)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

Python 02

  • 1. Python - 2ª Aula Bruno Gama Catão
  • 2. Um pouco de revisão Python é 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. 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 nota for i in range(qtdAlunos): total += float(raw_input('Digite a nota %d:' % (i + 1))) #Calcula a média media = total / qtdAlunos #Exibe o resultado print 'A média da turma foi: %.1f' % media
  • 4. Lembretes 1 Python é 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. Lembretes 2 Python suporta operadores unários, da mesma forma que 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. 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 digitados nomes.sort() print 'Nomes digitados: ' for i, nome in enumerate(nomes): print str(i + 1) + ' - ' + nome #Gravando os nomes em um arquivo arquivo = open('nomes.txt', 'w') arquivo.writelines(nomes) arquivo.close()
  • 7. Lembrete Não é possível concatenar números com Strings; Portanto, é necessário antes converter os números para Strings; Isto é feito utilizando a função str(valor_numérico).
  • 8. Trabalhando com o Sistema Operacional Existem alguns módulos que permitem trabalhar diretamente com o sistema operacional: os; shutil.
  • 9. Módulo OS Principais 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. Módulo SHUTIL copy(source, target); copytree(source, target); move(source, target); rmtree(path).
  • 11. Exemplo 1 # -*- coding: latin-1 -*- import os print 'Sistema operacional: ' + os.name raw_input('Pressione ENTER para executar o bloco de notas') os.system('C:WINDOWSNOTEPAD.EXE')
  • 12. Exemplo 2 # -*- coding: latin-1 -*- import os diretorio = raw_input('Digite um diretório: ') print 'Arquivos do diretório ' + diretorio for arquivo in os.listdir(diretorio): print arquivo
  • 13. Exemplo 3 Neste exemplo construiremos uma aplicação simples que constrói páginas HTML com álbuns de fotografias; Os álbuns serão construídos automaticamente a partir dos arquivos de imagens contidos em um diretório.
  • 14. # -*- coding: latin-1 -*- import os cabecalho = '''<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 % album for arquivo in os.listdir(diretorio): if arquivo.endswith(formato): pagina += corpo % (arquivo, arquivo) pagina += rodape arquivo = open(os.path.join(diretorio, "album.html"), "w") arquivo.write(pagina) arquivo.close()
  • 15. Desafio Estenda o exemplo anterior para que os modelos de cabeçalho, corpo e rodapé na realidade estejam guardados em arquivos.
  • 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. Retornando valores def somatorio(n): soma = 0 for i in range(n + 1): soma += i return soma print str(somatorio(10))
  • 18. Mais sobre funções Argumentos com valores padrão; Argumentos de palavra-chave; Listas de argumentos arbitrários.
  • 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ão' perguntaSimNao('Você gosta de pizza ?') perguntaSimNao('Tem certeza ?', 4)
  • 20. Observação Os parâmetros com valores padrão são opcionais; Se não forem informados eles automaticamente assumirão seus valores padrão.
  • 21. Valores de Argumento por Palavra-Chave def calculaIR(salario, baseIsencao=1200, taxaJuros=0.125): if salario <= baseIsencao: return salario return salario + (salario - baseIsencao) * taxaJuros print str(calculaIR(3500)) print str(calculaIR(3500, taxaJuros=0.275))
  • 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. Argumentos Arbitrários Atenção, uma lista de argumentos (*) apenas pode vir como 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')
  • 25. Relembrando um pouco Listas Declaração: lista=[] ou lista=[‘a’,2,3] Adição de elemento: lista.append(valor) Adição de lista: listaC = listaA + listaB Ordenando 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. Listas Comprimidas É possível definir listas complexas de uma maneira bastante 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. Listas Comprimidas Forma Geral Forma 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. Tuplas Tuplas são seqüências de valores que não podem ser alterados; Os elementos de uma tupla podem ser acessados da mesma 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. Conjuntos Vamos lembrar um pouco de matemática; Conjuntos são coleções que não permitem elementos duplicados; Operações de conjuntos: União; Diferença; Interseção.
  • 30. Conjuntos em Python Os 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. Operações de Conjuntos Uniã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. Dicionários Os dicionários associam chaves a valores; Uma lista telefônica é um exemplo de um dicionário, onde você procura por um valor relacionado a outro.
  • 33. Dicionários Declarando: dados = { } dados = {“nome” : “Bruno”, “idade” : 27} Acessando: print dados[“nome”] Modificando: dados[“idade”] = 28 Adicionando dados: dados[“profissao”] = “Professor”
  • 34. Dicionários Apagando: del d[“nome”] d.clear( ) Testando: d.has_key(“idade”) Obtendo as chaves: d.keys( )
  • 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. 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 faculdade alunos = [{"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ção for aluno in [a for a in alunos if a["curso"] == "SI"]: print "%s - %.2f" % (aluno["nome"], aluno["media"])
  • 38. Módulo random Módulo que trabalha com valores aleatórios; Funções principais: choice(lista); sample(lista, quantidade); random( ) randrange(valorMaximo)
  • 39. Exemplo - Sorteio import random concorrentes = [] print 'Digite os nomes dos concorrentes ou sair para encerrar' while True: nome = raw_input('Digite o nome: ') if nome == 'sair': break concorrentes.append(nome) print 'O sorteado foi ' + random.choice(concorrentes)
  • 40. # -*- coding: latin-1 -*- import random valor = 1 + random.randrange(100) print "Sorteei um valor de 1 a 100" print "Você tem 5 tentativas para acertar" acertou = False for i in range(5): tentativa = int(raw_input("Qual o valor ? ")) if valor == tentativa: acertou = True break elif valor > tentativa: print 'Maior' else: print 'Menor' if acertou: print 'Parabéns, você acertou !' else: print 'Que pena, o valor era %d' % (valor)
  • 41. Exemplo - Mega-sena import random #Sorteando as dezenas dezenas = random.sample(range(1, 61), 6) #Ordenando dezenas.sort() print dezenas
  • 42. Módulo urllib2 Este 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. Cliente do Twitter # -*- coding: latin-1 -*- import urllib2 usuario = raw_input('Digite o usuário do Twitter: ') url = 'http://www.twitter.com/' + usuario for 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. Consulta de CEP import urllib2 url_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. Módulo zipfile Este módulo permite compactar e descompactar arquivos no formato zip; Python possui outros módulos para outros formatos, como por exemplo zlib, gzip, bz2 e tarfile.
  • 46. Descompactando # -*- coding: latin-1 -*- from zipfile import ZipFile arquivo = raw_input('Digite o nome do arquivo: ') diretorio = raw_input('Digite o diretório de destino: ') zip = ZipFile(arquivo) zip.extractall(diretorio)
  • 47. Compactando from zipfile import ZipFile arquivo = 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()

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n
  47. \n