Você está na página 1de 16

Python (Revisão) - Conteúdo das Aulas

• Console • Chamadas do sistema

• Criando/Executando Scripts • Threads

• Variáveis • Passagem de parâmetros

• Laços • Tratamento de exceções

• Escopo • Pacotes adicionais

• Sub rotinas • Classes

• Instruções condicionais • Instancias

Algoritmos e Estruturas de Dados 1


Aula 01 – Python
• Console Python

• IDLE – Integrated DeveLopment Environment ou Integrated Development and


Learning Environment
• Comando python / python3

• Interativo / interpreta cada linha digitada

>>> x-5 >>> def subrotina():


>>> x=12 ... return 14+5
>>> x-5 ...

Algoritmos e Estruturas de Dados 2


Aula 01 – Python
• Criando/Executando Scripts #!/usr/local/bin/python3

def subrotina():
return 2 + 2
vi teste.py
x = subrotina()
nano teste.py print(x)
notepad teste.py
code teste.py
...
$ python teste.py
$ python3 teste.py
$ chmod +x teste.py
$ ./teste.py

Algoritmos e Estruturas de Dados 3


Aula 01 – Python
• Variáveis #!/usr/local/bin/python3
__author__ = 'autor'

# comentario qualquer
• Dado que pode ser mudado
x = 1
sempre que desejado print(x)

x = 'foo'
• Python infere o tipo do contexto print(x)

# texto e inteiros nao combinam


#x = x + 1
x = x + "1"
print(x)

# diferenca entre python2 e python3 / raw_input


y = input('entre com alguma coisa ')
print(y)

Algoritmos e Estruturas de Dados 4


Aula 01 – Python
• Laços #!/usr/local/bin/python3
__author__ = 'autor'

nome = input('qual o seu nome? ')


• Instruções executadas repetidas
# for loop / range cria uma lista
vezes for i in range(1, 10):
print(nome, i)

• Python fornece diferentes # while loop usando break


x = 0
maneiras de escrever iterações while (True):
print(x)
x = x + 1
if (x == 15):
• for loop break

#for loop usando uma lista


• while loop lista = ['leoes', 'ursos', 'tigres', 'outros']
for i in lista:
print(i)

Algoritmos e Estruturas de Dados 5


Aula 01 – Python
• Escopo #!/usr/local/bin/python3
__author__ = 'autor'

# adicionando x aqui torna ele parte do escopo


• Onde variáveis serão usadas #x = 0

for i in range(1, 25):


• Como/Quando # x esta no escopo
x = i + x
#x = i + 1

# x esta fora do escopo


print(x)

Algoritmos e Estruturas de Dados 6


Aula 01 – Python
• Sub rotinas #!/usr/local/bin/python3
__author__ = 'autor'

def subtrair():
• Funções #def subtrair(x, y):
    # fora do escopo
    z = x - y
• Métodos/Comportamentos em     # apenas imprime, nao retorna nada
    print(z)
Orientação a Objetos # usando parametros
def adicionar(x, y):
    # retorna um valor
• Agrupamento de instruções de uso     return x + y

regular print(adicionar(15, 4))

# sem passar parametros inicialmente


• Reuso/Legibilidade/Organização subtrair()
#subtrair(15, 4)

Algoritmos e Estruturas de Dados 7


Aula 01 – Python
• Instruções condicionais #!/usr/local/bin/python3
__author__ = 'autor'

# a entrada eh em texto a nao ser que seja convertido


• Comparar elementos diferentes x = int(input('entre com um numero '))

if (x < 1):
• Executar ações de acordo com o     print('valor
#elif (x > 1 and
muito baixo')
x < 10):
resultado da comparação elif (x >= 1 and
    print('valor
x <= 10):
no intervalo correto')
else:
    print('valor muito alto')

Algoritmos e Estruturas de Dados 8


Aula 01 – Python
• Chamadas do sistema #!/usr/local/bin/python3
__author__ = 'autor'

import os
• Utilizar o SO para executar alguma from subprocess import call

tarefa # usa a interface OS para obter acesso as informacoes do


sistema
print(os.getcwd())
• Bibliotecas #print(os.getuid())
print(os.getenv('PATH'))

# usando system
os.system('dir')
#os.system('ls -la')
#os.system('notepad.exe teste.py')

# usando call
ent = input('tecle enter ')
#call(['notepad.exe'])
call(['notepad.exe', 'teste.py'])
#call(['ls', '-la'])

Algoritmos e Estruturas de Dados 9


Aula 01 – Python
• Threads #!/usr/local/bin/python3
__author__ = 'autor'

import threading
• Tarefas particulares executando
class MinhaThread(threading.Thread):
concorrentemente     def __init__(self, num, val):
        threading.Thread.__init__(self)
        self.numeroThread = num
• Cada processo possuindo múltiplas         self.contadorLaco = val
    
threads     def run(self):
        print('iniciando a execucao da thread numero ',
self.numeroThread)
        minhaFuncao(self.numeroThread, self.contadorLaco)
• Cada thread executando diferentes
def minhaFuncao(num, val):
tarefas     cont = 0

    while (cont < val):


        print(num, ' : ', val * cont)
        cont = cont + 1

Algoritmos e Estruturas de Dados 10


Aula 01 – Python
• Threads t1
t2
=
=
MinhaThread(1,
MinhaThread(2,
15)
20)
t3 = MinhaThread(3, 25)
t4 = MinhaThread(4, 30)
• Tarefas particulares executando
# inicia as threads
concorrentemente t1.start()
t2.start()
t3.start()
• Cada processo possuindo múltiplas t4.start()

threads # adiciona as threads a uma colecao


threads = []
threads.append(t1)
threads.append(t2)
• Cada thread executando diferentes threads.append(t3)
threads.append(t4)
tarefas
# aguarda o termino de todas as threads
for t in threads:
    t.join()

Algoritmos e Estruturas de Dados 11


Aula 01 – Python
• Passagem de parâmetros #!/usr/local/bin/python3
__author__ = 'autor'

import argparse
• Passagem de argumentos de linha
parser = argparse.ArgumentParser(description='essa eh a
de comando ao programa nossa descricao')
parser.add_argument('-i', type=str, help='essa eh a ajuda
que se obtem para descrever o parametro', required=True)
parser.add_argument('-o', type=str, help='esse eh
opcional', required=False)

# cmdargs acaba sendo um discionario/hash


cmdargs = parser.parse_args()

# acessa o parametro baseado na flag


ivar = cmdargs.i
print(ivar)

Algoritmos e Estruturas de Dados 12


Aula 01 – Python
• Tratamento de exceções #!/usr/local/bin/python3
__author__ = 'autor'

try:
• Em um programa onde existe um     arquivo = open('meu_arquivo', 'w')
    arquivo.write('alguns dados para o arquivo')
erro ele precisa ser capaz de lidar     print('dados escritos no arquivo')
except IOError as e:
com o erro     print('excecao capturada: nao foi possivel escrever
no arquivo ', e)
except Exception as e:
• Exceções - camadas mais altas do     print('ocorreu outro erro ', e)
else:
programa capazes de capturar o     print('arquivo escrito com sucesso')
    arquivo.close()
erro e tratá-lo de acordo

Algoritmos e Estruturas de Dados 13


Aula 01 – Python
• Pacotes adicionais

• Python é rico em bibliotecas

• Instalação de bibliotecas

pip

pip search package

pip install pacote

Algoritmos e Estruturas de Dados 14


Aula 01 – Python
• Classes #!/usr/local/bin/python3
__author__ = 'autor'

class Eu:
• Função da programação orientada a     def __init__(self, foo):
        self.minhaVariavel = foo
objetos     
    def getval(self):
        return self.minhaVariavel
• Características/Comportamentos         
eu = Eu("valor")
x = eu.getval()
• Atributos/Métodos print(x)

• Dados e sub rotinas em um único lugar

• Métodos/sub rotinas atuam sobre os


dados
• Métodos/sub rotinas – interface para
os dados

Algoritmos e Estruturas de Dados 15


Aula 01 – Python
• Instancias #!/usr/local/bin/python3
__author__ = 'autor'

class Eu:
• Criando múltiplas instancias da     def __init__(self, foo):
        self.minhaVariavel = foo
mesma classe     
    def getval(self):
        return self.minhaVariavel

    def setval(self, valor):


        self.minhaVariavel = valor

eu1 = Eu("eu 1")


eu2 = Eu("eu 2")
eu3 = Eu("eu 3")

x = eu1.getval()
print(x)
x = eu2.getval()
print(x)
eu3.setval("testando")
x = eu3.getval()
print(x)

Algoritmos e Estruturas de Dados 16

Você também pode gostar