Aprendendo Python na Prática Dante Moreira Zaupa Mestrando em Computação Aplicada Bolsista de Pesquisa Introdução ou “Não pensem besteira” Por que usar Python? produtivo Por que usar Python? produtivo portável Por que usar Python? produtivo boas práticas portável Por que usar Python? produtivo boas fácil práticas portável Por que usar Python? produtivo boas fácil práticas portável divertido Outras opções IronPython # vai em qualquer lugar “““ Dentro do bloco, antes do primeiro comando ””” DOCUMENTE SEU CÓDIGO DOCUMENTE SEU CÓDIGO DOCUMENTE SEU CÓDIGO DOCUMENTE SEU CÓDIGO DOCUMENTE SEU CÓDIGO DOCUMENTE SEU CÓDIGO DOCUMENTE SEU CÓDIGO help(spam) dir(eggs) help(spam) dir(eggs) A Linguagem ou “Oi, meu nome é Python.” print “This is an EX parrot!” print “This is an EX parrot!” Identação/Delimitador de bloco espaços XOR tab espaços > tab INDENTE SEU CÓDIGO INDENTE SEU CÓDIGO INDENTE SEU CÓDIGO INDENTE SEU CÓDIGO INDENTE SEU CÓDIGO INDENTE SEU CÓDIGO INDENTE SEU CÓDIGO int 42 int float 42 3.14159265358979 323846264338327 950288419716939 9375105820 int str 42 “Johann Gambolputty de von Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...” float 3.14159265358979 323846264338327 950288419716939 9375105820 int str 42 “Johann Gambolputty de von Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...” float 3.14159265358979 323846264338327 950288419716939 9375105820 list [“idle”, “cleese”, “gilliam”, “jones”, “chapman”, “palin”] int str dict 42 “Johann Gambolputty de von Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...” float { 'ovelha': 'voadora', 'tigre': 'framboesa', 'papagaio': 'morto' } 3.14159265358979 323846264338327 950288419716939 9375105820 list [“idle”, “cleese”, “gilliam”, “jones”, “chapman”, “palin”] int str dict 42 “Johann Gambolputty de von Ausfern- schplenden- schlittercrasscrenbon- fried- diggerdingle- dangle- dongle- dungleburstein- von- knacker- thrasherapple- banger...” float { 'ovelha': 'voadora', 'tigre': 'framboesa', 'papagaio': 'morto' } 3.14159265358979 323846264338327 950288419716939 9375105820 list tuple (42, 2.3, math.pi) [“idle”, “cleese”, “gilliam”, “jones”, “chapman”, “palin”] + / % and or not spam[3:] (até) spam[:3] (à partir de) spam[1:3] (intervalo) spam[-3:] spam[:-3] v = raw_input(<string>) Comparando ou “O que vocês já sabem, mas ainda não sabem que sabem” Python def spam(parrot, eggs = []): <comando 1> <comando 2> <comando 3> Java <modificadores> <tipo> spam(Bird parrot, List<Egg> eggs) { <comando 1> <comando 2> <comando 3> } def spam() def _spam() def __spam() def spam(eggs) def spam(eggs = 42) def spam(self, eggs) def spam(*eggs) def spam(**eggs) int Tipos Imutáveis str tuple SEM efeitos colaterais -> float Python if <condição>: <comando 1> <comando 2> elif <condição>: <comando 3> <comando 4> else: <comando 5> <comando 6> Java if (<condição>) { <comando 1> <comando 2> } else if (<condição>) { <comando 3> <comando 4> } else { <comando 5> <comando 6> } Exercício No interpretador: Um programa que receba um número e o identifique como par ou ímpar. Python if <var> == <val1>: <comando 1> elif <var> == <val2>: <comando 2> else: <comando 3> Java switch (<var>) { case <val1>: <comando 1> break; case <val2>: <comando 2> break; default: <comando 3> } Exercício No interpretador: Um programa que receba um número e que informe se ele é divisível por 2, por 5, ou não é divisível por nenhum dos dois. Python Java for spam in range(<int>): for (int spam; spam < <int>; spam++) { <comando 1> <comando 2> <comando 3> for spam in <lista>: <comando 1> <comando 2> <comando 3> } <comando 1> <comando 2> <comando 3> for (<Tipo> spam : listaTipo) { } <comando 1> <comando 2> <comando 3> range(<começo>, <parada>, ) <passo> Exercício No interpretador: Escreva um programa que exiba o resultado da soma dos número no interavalo [0..1,000,000]. Python while <condição>: <comando 1> <comando 2> <comando 3> Java while (<condição>) { <comando 1> <comando 2> <comando 3> } Exercício No interpretador: Use um loop pra determinar o valor máximo que um inteiro pode ter, em Python. Python class Ovelha(Mamifero): <atributos> Java public class Ovelha extends Mamifero { private boolean fly = True; def __init__(self, f): self.__fly = f; <outros atributos> public Ovelha(boolean f) { this.fly = f; } <métodos> <métodos> } TUDO SÃO CLASSES E toda classe é uma lista de seus atributos e métodos arq = open(“jcleese.txt”, “r+”) read write read + write append (só Windows) binary arq.close() string = arq.read(<quantidade>) string = arq.readline() lista_strings = arq.readlines() for line in arq: print line Leu de um arquivo? É UMA STRING! arq.write(“Always look on the \ bright side of life”) arq.write(“A resposta é” + \ str(42)) SOMENTE STRINGS Arquivos só aceitam strings. import <biblioteca> import <biblioteca> as <nome> from <biblioteca> import <membros> try: <comandos> except <exceção>: <comandos> else: <comandos> Indo além Ou “AGORA que fica divertido” f = lambda x: x + “ spam” map(f, [“eggs”, “spam eggs”]) f = <func> for <var> in <list> exec(<string com o código>) http://dzaupa.notapipe.org/minicurso_python/arqs/monica.pyc Perguntas? dante.zaupa @ gmail.com http:// dzaupa. notapipe.org/