Abrir o menu de navegação
Fechar sugestões
Pesquisar
Pesquisar
pt
Change Language
Mudar o idioma
Carregar
Fazer login
Fazer login
Baixe e use grátis por dias
100%
(2)
100% acharam este documento útil (2 votos)
256 visualizações
113 páginas
Introdução Ao Phyton
Phyton
Enviado por
Bruno Nascimento
Título aprimorado por IA
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu,
reivindique-o aqui
.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
Baixar
Salvar
Salvar INTRODUÇÃO AO PHYTON para ler mais tarde
Compartilhar
100%
100% acharam este documento útil, undefined
0%
, undefined
Imprimir
Incorporar
Relatório
100%
(2)
100% acharam este documento útil (2 votos)
256 visualizações
113 páginas
Introdução Ao Phyton
Phyton
Enviado por
Bruno Nascimento
Título aprimorado por IA
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu,
reivindique-o aqui
.
Formatos disponíveis
Baixe no formato PDF ou leia on-line no Scribd
Anterior no carrossel
Próximo no carrossel
Baixar
Salvar
Salvar INTRODUÇÃO AO PHYTON para ler mais tarde
Compartilhar
100%
100% acharam este documento útil, undefined
0%
, undefined
Imprimir
Incorporar
Relatório
Baixar
Salvar INTRODUÇÃO AO PHYTON para ler mais tarde
Você está na página 1
/ 113
Pesquisar
Tela inteira
Grupo Python apresenta: Introdugcao a Python - Mddulo A Josué Labaki labaki@feis.unesp.br LUNIVERSIDADE ESTADUAL PAULISTAINTRODUCAO A PYTHON - MODULO A Apresentacgao Este material foi desenvolvido para apoiar os cursos da série “Introdugao a Python” ministrados pelo Grupo Python para nossos mais diversos tipos de audiéncia. O guia inteiro é composto por trés volumes que correspondem aos médulos dados nos nossos cursos: Médulo A - Bem-vindo @ Python!, Médulo B - Python Orientado 2 Objetos e Médulo C - Tkinter. Todos eles podem ser encontrados na internet, nas paginas do Grupo Python (http://arupopython.cib.net), na pagina do autor (httpi//labakitk) e na pagina da comunidade Python no Brasil (htto://www.python-brasil.com.br). Desenvolvemos este guia pensando também nos autodidatas que nao participaram dos nossos cursos e baixaram este material da internet. Se vocé esté nesta situacdo, pode tirar duividas por e-mail. Lembramos que 0 nosso objetivo no é ensinar programacéo, sim guiar vocé nos passos basicos em Python. Se sua intengdo ¢ aprender a programar, prefira 0 excelente material do prof. Luciano Ramalho em (htto://www.magnet.com.br). Recomendamos que vocé acompanhe e implemente os exemplos, tente entender 0s erros que podem ocorrer ¢ tente resolver as questdes que eventualmente aparecem ao longo deste material. Ao final, hé alguns exemplos e exercicios de fixacao Mande suas diividas, sugestées, criticas ou comentarios por e-mail! Sua opinigo sobre o guia é muito importante para nés. Josué Labaki Grupo Python Departamento de Engenharia Mecdnica UNESP - Campus de Iiha Solteira labaki@feis.unesp.br JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA aINTRODUCAO A PYTHON - MODULO A indice Parte I~ Bem-vindo a Pythont 1.P0r que estudar Python? 2.Usando o interpretador de Python 3.Usando Python coma uma caleuladora 4.Varidvets - nada a declarar Parte II ~ Tipos de Objetos 1. strings 2ustas 3.Tuples 4.Dieionacios Parte III ~ Formatando Objetos 1 Formatando strings 2.Recursos de manipulacdo de lstas Parte IV ~ Testes, Loops, Varreduras ¢ Erros 1.nquanto. 2.Entrada de dados 2... Elf. Else. 4.For S.Break 6.Tratamento de erros Parte V — Nosso primeiro programa completo Parte VI - Funcdes e Médulos 4 Definindo fungées 2.Fungdes sabre seqUéncias 3.Return versus side effects 10 10 a5 » a 23 23 26 29 29 31 2 35 40 42 46 sn si ” 2INTRODUCKO A PYTHOM — MODULO A 4.Médulos 66 5.Um pouco de teoria: Escopo 3 Parte VII ~ Alguns truques.. 79 :L.Manipulacao de arquives 79 2.Madulo OS ~ mexando no Sistema Operacional 2 3.Time e Random 86 4.Python e AutoCAD: bens amigos 89 5.Misica, maestrol 92 6.Calendar 3 Parte VIII ~ Exemplos 95 ‘Leumanalise py ~ Trabalhando com fungBes 95 2.cetch_mail py ~ Trabalhande com strings 98 3.matrizes.py ~ Cadelas de fore listas 300 4.morse_code.py ~ Dicionérios e sons 102 S.newton-raphson.py ~ Escrevendo em arauivos 104 6.memoria.py ~ Um joguinhe simples és maméria 109 Parte IX - Exercicios a Vem at 113 JOSUE LABAKI — GRUPINTRODUCAO A PYTHON - MODULO A Parte I - Bem-' indo a Python! 1 Por que estudar Python? Python € uma linguagem de programacdo de altissimo nivel (VHLL - Very High Level Language), criada pelo holandés Guido Van Rossum sob o ideal de "Programacéo de Computadores para todos”. Este ideal fez com que o desenvolvimento de Python tivesse sempre em mente a liberdade (gratuita, cédigo aberto), disponibilidade (Python roda em Windows, Linux, Mac, Palm, em celulares, ¢ outra infinidade de sistemas) principalmente a clareza de sintaxe, que hoje é responsavel pela alta produtividade s6 conseguida com Python. Python é uma linguagem Orientada a Objetos, um paradigma que facilita entre outras coisas o controle sobre a estabilidade dos projetos quando estes comecam a tomar grandes proporcdes. Mas como a Orientacdo a Objetos ainda é vista como um paradigma para “experts”, Python permite que o usuério programe na forma procedural, se desejar. Python também é uma linguagem altamente modular. Isso significa que provavelmente alguém j4 fez todo ou parte do programa que vocé precisa desenvolver, economizando um tempo precioso do seu trabalho. Estas © outras vantagens fizeram que grandes empresas e universidades comecassem a usar Python com sucesso, como a Philips, Industrial Light and Magic (empresa de George Lucas), que usou Python para controlar efeitos especiais de Star Wars, @ NASA, a Alianga Espacial Universal (USA), a Nokia que usa Python em seus celulares, a Disney, os sites Google e Yahoo, entre outros. Veja estes e mais exemplos no site Pythonology (http://www.pythonology.org). Enfim, uma boa resposta para a pergunta-titulo deste capitulo pode ser 2 mostrada nas FAQs do portal Python brasileiro (http://www.pythonbrasil.com.br JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 5INTRODUCAO A PYTHON - MODULO A “Porque Python é uma linguagem simples e elegante. Porque Python é facil de aprender. Porque Python pode ser usado para resolver uma grande variedade de problemas. Porque Python incentiva vocé a escrever seus programas da maneira correta, sem que isso se torne um empecilho 2 produtividade. Python tem uma curva de aprendizado bastante interessante, permitindo que novos programadores, mesmo os que nunca tenham programado antes, sejam imediatamente produtives escrevendo scripts procedurais. O programador pode rodar o interpretador como um shell, vendo imediatamente o resultado da saida de cada comando e explorando os recursos da linguagem interativamente. Para construir aplicacées mais complexas, Python possibilita a facil migrac3o para a programacéo orientada a objetos. Um programa pode evoluir naturalmente para esse paradigma 4 medida que se torna mals complexo. A facilidade inicial do Python n&o baratela a linguagem, como é comum em linguagens que tém por objetivo expresso serem faceis de aprender. Python é simples de aprender porque é uma linguagem bem planejada.”” 2 Usando o interpretador de Python. Hé vérias formas de interpretar seu cédigo em Python. A mais utilizada é a nativa da linguagem, 0 IDLE. Usuérios Windows podem geralmente acessa-lo em Ini r > Programas > Python 2.3 > IDLE. Pelo IDLE vocé pode executar algumas linhas de cédigo para testar seu programa, ou mesmo rodar um programa completo para saber rapidamente o que estd acontecendo com os objetos que vocé definiu, além de fazer de modo prético 2 introspeccdo sobre estes objetos e outros recursos de Python. Usudrios Linux podem usar um interpretador interativo como o IDLE, porém sem as cores, simplesmente digitando ‘python’ na linha de comandos. Muitas distribuigdes Linux ja trazem Python nativamente. JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 6INTRODUCAO A PYTHON — MODULO A Usando Python como uma calculadora. Observe como € facil usar 0 IDLE como uma calculadora. Além de poder ver todos os célculos anteriores, vocé também pode usar os resultados deles em célculos futuros, simplesmente copiando e colando os resultados. Os operadores algébricos usados no interpretador sao os mesmos que vocé jé usava em outros programas do seu sistema operacional: +, -, * e /. Os operadores booleanos sao os seguintes: testa se a é igual ab >>> Ota, b # testa seo dobro de a é maior ou igual a b True © simbolo # é usado em Python para adicionar comentérios aos cédigos. Tudo © que estiver escrito apés esse sinal, é enxergado como comentério e nao é executado com 0 cédigo. JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 7INTRODUCAO A PYTHON - MODULO A O sinal usado por Python para poténcias algébricas ¢ **: >o> 2**3 # Eo mesmo que 2° (dois ao cubo). 8 >>> 2¥4 (946) # Dos elevado a 9 512 Ha um Giltimo operador que retorna o resto da divisao entre dois nimeros: 1% 240 resto da divis&o entre 7 e 2 2A Quanto deve ser o resultado de 2**(3+6) % 7? - nada a declarar! Python & uma linguagem dinamicamente tipada. Isso quer dizer que nao € necessario tipar as variaveis para usa-las. Por um proceso chamado “binding”, atribul- se um objeto 2 um nome e este nome incorpora o tipo do objeto. Assim, para atribuirmos 0 valor 2, que é um inteiro, a0 nome “valori”, sé precisamos fazer valor1=2, e “valor” serd automaticamente tipado por Python como inteiro. Para saber qual o tipo de determinado objeto, usamos a fungéo type (x), que retorna o tipo do objeto x: JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 8INTRODUCAO A PYTHON - MODULO A >>> valori=2 >>> valorl >>> type (valorl) ctype tint '> Perceba que néo precisamos “declarar” a varidvel “valori” antes de utiliza-la. Se agora vocé quiser atribuir o valor “Boa tarde!” ao nome “valor”, pode fazer isso naturalmente. Desta vez, 0 objeto “valor” ird incorporar o tipo de “Boa tarde!” (que é uma string - 0 que talvez vocé conhega de FORTRAN como “character”): Boa tarde!* "Boa tarde!" >>> type (valorl) ctype tstrt> Os principais tipos de objetos em Python séo inteiros, floats (numeros reais, que © computador representa da melhor maneira possivel por meio de variagies na \9s (texto), listas, tuplas e diciondrios. Pode-se posico do separador decimal), st transformar 0 tipo original de um objeto para inteiro, float ou string por meio das funcées int, float e str, respectivamente, como veremos melhor adiante JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 9INTRODUCAO A PYTHON - MODULO A Parte II - Tipos de Objetos 1 Strings Strings so os objetos que Python oferece para trabalhos com texto, As strings em Python so seqliéncias, e por isso podemos trabalhar com elas com muito mais eficiéncia do que em outras linguagens. >>> palavra="'termodinamica’ >>> palavra ‘termodin\xe2mica" Este estranho ‘termodin\xe2mica’ € a maneira como Python salvou o valor do objeto “palavra” na meméria, j4 que 0 computador néo conhece caracteres estranhos como acentos. Mas no se preocupe, isso sé faz sentido para a maquina. Para 0 usuario, 0 valor salvo continua sendo “termodinamica”. Para ver isso, >>> print palavra ‘termodinamica’ Em Python, uma string uma seqiiéncia de letras, enderecada de tal forma que vocé possa requisitar um valor qualquer desta seqiiéncia e fazer 0 que quiser com ele. Como qualquer seqiiéncia em Python, 05 enderecamentos comecam a ser contados do zero. A sintaxe para requisitar 0 valor atribuido a um enderego X de uma sequéncia S é S[X] JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 10INTRODUCAO A PYTHON — MODULO A >>> palavra[2] ooo 2tpalavea[0] sees Vocé também pode solicitar um intervalo de uma seqléncia. Por exemplo, para solicitar os valores da seqiléncia “palavra” que estao entre os enderegos 9 e 12, fazemos >>> palavra[9:12] Para entender melhor © que aconteceu aqui, lembre-se de que 05 enderecos em Python se referem aos intervalos entre os itens, € néo ao item em si. Isto 6, 0 enderecamento usado no objeto ‘palavra’ é 0 seguinte: loldi/iln|a@l{[militcial o 1 2 3 4 § 6 7 8 9 1 11 12 13 Assim fica facil entender porque palavea[9:12] retorna os itens m, i Podemos omitir 0 endereco da direita, se ele for o Ultimo da sequiéncia: >>> palavra[9:] JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA iINTRODUCKO A PYTHOM — MODULO A Da mesma forma, os valores entre o primeiro endereco (0) € 0 9 so >> palavra[0:9] "termodin\xe2" Ou, come estamos falando do primeiro endereco, >>> palavra[:9] *termodin\xe2* Perceba a diferenca: >>> print palavra[:9] "termodinat BR 0 que obteremos de print palavral:]? Se vocé nao deseja recolher todos os valores da seqiiéncia contidos no intervalo, pode determinar um incremento: >>> palavra[1:8] ‘exmodin' JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA RINTRODUCAO A PYTHON — MODULO A >>> palavra[118:2] ‘emda’ Assim so retornados os valores de palavra entre os enderegos 1 € 8, com incremento 2 (ou seja, os elementos dos enderecos 1, 3, 5 e 7). Veja um exemplo com incremento 3: >>> palavra[1:8 Ou seja, os elementos dos enderecos 1, 4 © 7, Com incremento negativo, possivel varrer uma seqiiéncia de trés para frente, assim poy palavral 7:0: tnidomre! Na Ultima sentenga conseguimos capturar os valores do enderego 7 até 0, exceto 0 préximo zero, vasculhando a seqiiéncia “palavra” de trés para frente. Como estamos falando do primeiro enderego (zero), podemos omitir esta informagao: >>> palavra[7::-1] 'nidomret ' Igualmente se a varredura comega do tltimo enderego: JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 1BINTRODUCKO A PYTHOM — MODULO A >>> palavra[:4:-2] "ai\xezi" (Vocé ja estd acostumado a enxergar \xe2 como “A”, nao é?). Ora, se podemos omitir o Ultimo e 0 primeiro enderegos, entéo fica facil inverter uma seqiiéncia qualquer >>> palavra[::-1] ‘acim\xe2nidomret* Talvez vocé j4 tenha pensado como isso deve ser interessante para verificar se uma palavra é um palindrom >>> palindromo='socorram me subi no onibus em marrocos' >> palindromo[::-1] ‘socorram me subino on ibus em marrocos' A varredura de strings a0 contrério ndo € to usada, mas este concelto importante ¢ seré bem mais Util quando aplicado a outros tipos de seqiiéncias que veremos adiante. Quando executado sobre strings, o operador “+” significa “concatenacao”, isto 6, adig&0 20 final da string anterior. ' Palindromos sao palavras ou sentengas que sao ipuais tanto se lidas de tras para frente quanto no sentido normal JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 14INTRODUCAO A PYTHON — MODULO A >>> palavra=palavrat' aplicada’ >>> print palavra ‘termodinamica aplicada’ >>> palavra[14:] taplicada' Outra fungdo que podemos executar sobre qualquer seqiléncia em Python € en (x), que retorna o tamanho da seqliéncia x. >>> len (palavra) 22 2. Listas Um dos tipos de objeto mais titeis em Python é a lista. A lista também & uma seqiiéncia, e sua sintaxe é: >>> List: 142,31 >>> lista UW, 2, 3) Neste exemplo, temos uma lista de inteiros, mas uma lista pode conter floats, strings, outras listas ou outros objetos quaisquer. JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 15INTRODUCKO A PYTHOM — MODULO A Como qualquer sequéncia, a lista segue o mesmo sistema de enderecamento que jé vimos em strings: >>> listato] a(0]+lista[2] © operador “+” também representa concatenaggo em listas. A seguir estamos concatenando a lista [1,2,3] com a lista [4] (que é uma lista de Unico elemento), Fazer lista+4 dé erro, porque estamos tentando concatenar o inteiro 4 a lista [1,2,3]. >>> lista (1, 2, 3, 4 >>> listata Traceback (most recent call last): File "
", line 1, in ~toplevel~ Listatd TypeError: can only concatenate list (not "int") to list istat(0,0,0] JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 16INTRODUCKO A PYTHOM — MODULO A Também podemos solicitar um valor atribuido aos enderegos de uma seqléncia de trés para frente, O Ultimo enderego é também chamado de [-1], 0 pentiltimo de [-2], e assim por diante: >>> listal[-1] ° >>> lista[2:-2] (3, 4 01 Aqui, questionamos sobre o tamanho da seqiléncia “lista”: >>> len (Lista) Uma caracteristica importante das listas é que elas sao seqiéncias mutdveis, 20 contrario das strings. Isso quer dizer que podemos alterar 0 valor atribuldo a um determinado endereco de uma lista, mas nao podemos fazer isso com strings. >>> lista[0] - ‘zero! >>> lista ['zero", 2, 3, 4, 0, 0, 0. >>> Lista[1] = lista[1]+lista[2] >>> lista ['zero", 5, 3, 4, 0, 0, 0 >>> lista[2] - lista[0] JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 7INTRODUCKO A PYTHOM — MODULO A >>> lista ['zero", tzero', 4, 0, 0, 01 Mas com strings... >>> a="Boa tarde!" poo a[O]="Nt Traceback (most recent call last) File "
", line 1, in -toplevel- a[O]="N' TypeError: object doesn't support item assignment Nao tenha medo destas mensagens de erro! Elas nos ajudam a entender o que esté havendo de errado. A linha fundamental a Ultima, que diz que tipo de erro ocorreu. Neste caso, a mensagem object doesn't support item assignment (0 objeto no suporta atribuiggo aos itens), confirma 0 que dissemos sobre as strings serem imutaveis. Observe uma aplicacéo interessante para listas de listas: >>> Linhal-[1,2,3] >>> Linha2=[0,-1,1] >>> linha: 3,3,3] >>> mated Linhal, 1inha2, Linka3] po> matriz JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 18INTRODUCKO A PYTHOM — MODULO A [1 2, 3p (0, “ty 11, [3, 3y 311 >>omatriz[1] 2B Por que matriz(1] retorna esta lista em vez do inteiro 2? Chamando um elemento dessa pseudo-matri >>> matriz [1] [2] 1 3 Tuplas Tuplas s&o objetos como as listas, com a diferenca de que tuplas séo imutaveis como strings. Uma vez criadas, no podem ser modificadas. A sintaxe de tuplas é: >>> tupl=(1,2, 3) >>> tupl G, 2,3) >>> tupl[0]=0 ‘Traceback (most recent call last): File "
", line 1, in -toplevel- JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 19INTRODUCKO A PYTHOM — MODULO A tupl[o]=0 TypeError: object doesn’t support item assignment As tuplas podem também conter quaisquer objetos; inteiros, floats, listas, outras tuplas, ete. Com as tuplas podemos fazer algo bem comum nos programas em Python, chamado "packing-unpacking”: >>> a,b = 0, "Deu corto?* o> b "peu certo?? E como se estivéssemos dizendo “a e b sdo iguais a 0 e ‘Deu certo”, respectivamente”. Mais fantastico ainda, podemos trocar o valor de dois objetos facilmente: >>> a,b=bya "peu cert >>> b JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 20INTRODUCKO A PYTHOM — MODULO A Dicionarios Dicionérios também so contéineres, mas nao s8o seqéncias porque ndo so indexados sequencialmente da forma que strings, listas e tuplas so. Seu sistema de enderecamento é por chaves. Cada chave tem um valor atribuido. Se vocé quer saber um valor de um diciondrio, deve perguntar pelas chaves, nao pelos enderecos. A sintaxe de dicionérios é: >>> aurelio={‘denomiagao':'ilha solteira', 'populago' :23000, ' renda" s1500} >>> aurelio (popula\xe7\xe30": 23000, 'denomia\xe7\xe3o": tila solteira', "renda':1500} Neste exemplo, temos 0 inteiro 23000 atribuido a chave “populagao”. Para jonar noves valores a outras chaves, fazemos >>> aurelio['vocagSo']="turismo' atribuindo assim a string “turismo” & nova chave “vocaca >>> aurelio (*popula\xe7\xe30": 23000, tvoea\xe7\xe30! t "turismo", ‘denomia\xe7\xe30": 'ilha soltefra', ‘renda‘: 1500} E para requisitar o valor atribuido a alguma chave, JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRAINTRODUCKO A PYTHOM — MODULO A >>> aurello['renda'] 1500 Dicionarios so mutaveis. E facil alterar 0 valor contido em uma chave >> aurelio['renda" ]=aurelio['renda*]+200 >>> aurelio['renda'] 1700 Podemos verificar quais chaves um dicionario possui ou perguntar se ele contém alguma chave em especial: >>> aurelio. keys () [tpopula\xe7\xe30", "voca\xe7\xe30", ‘denomia\xe7\xe30", ‘enda"} >>> aurelio.has_key ("dade") False >>> gurelio|*idade"]=33 >9> aurelio. has_key ("dade") True A sentenga dicionario. items () retorna uma lista de tuplas contend 0 par (chave,valor atribuide): pe» aurelio. items () (Cidade', 33), (popula\xe7\xe3o", 23000), (‘voca\xe7\xe30", "turismo"), ('denomia\xe7\xe3o", tilha solteira'), (‘renda', 1700)] JOSUE LABAKI ~ GRUPO PY ON — UNESP — ILA SOLTEIRA »INTRODUCAO A PYTHON - MODULO A Parte III - Formatando objetos 1 Formatacao de strings Podemos formatar alguma string usando a sintaxe marcador, | >>> print “string Stipo" § variavel varidvel que seré inserida dentro da string tipo da varidvel que seré inserida Vejamos alguns exemplos: >>> print '0 valor de pi é %£" Sconstante © valor de pi 6 3.14 Observe @ consisténcia do cédigo com o esquema mostrado acima: O marcador % € colocado no lugar onde seré inserido valor contido no nome “constante”, Como o valor de “constante” é um float (3.14), logo depois do marcador vem a indicagao do tipo da variavel, “f". Novos exemplos com outros tipos de varidveis:INTRODUCAO A PYTHON — MODULO A abacaxi* >>> caracteristica='amarelo" ooo print ‘Ws 4 uma fruta’ Gnome abacaxi 6 uma fruta >>> print ‘$s 6 $s" § (nome, caracteristica) abacaxi ¢ amarelo E assim que inserimos varios valores dentro de uma string: usando uma tupla contendo os valores, na ordem em que aparecerdo, >>> print "$f $ss também sfo $ss' $(constante, nome, caracterist ica) 3.14 abacaxis também so amarelos Desta vez trés valores foram inseridos na string. Eles aparecem na string na mesma ordem em que foram dispostos na tupla. Os tipos acompanham: primeiro *f", que indica que “constante” é um float, e depois "s” e “s’, que indica que “nome” € “caracteristica” so strings. Observe: no segundo e no terceiro marcadores temos %ss com dois “s”. O primeiro "s” indica 0 tipo da varidvel, string, e o terceiro faz parte da string ~ neste caso esta fazendo o plural de “abacaxi” e “amarelo”, US 0 que seria impresso se a string comecasse com "ofS .....'? Inserindo .x depois de um marcador de floats dizemos que o valor apareceré com somente x casas decimais: A SOLTEIRA ouINTRODUCKO A PYTHOM — MODULO A >>> valor = 3.1415926535897931 >>> print ‘0 valor € %.2£" Svalor © valor € 3.14 >>> print '0 valor é %.3£" @valor © valox 6 3.141 >>> print '0 valor é tf" valor © valor 6 3.1415926535897931 Inserindo y. depois de um marcador qualquer, dizemos que 0 valor que for inserido no lugar do marcador devera ter exatamente y caracteres: >>> print '0 valor 6 %8.2£' $valor Ovaloré 3.14 Somando o inteiro 3, 0 marcador decimal e as duas casas decimais, todo o float inserido no marcador tem 4 caracteres, Entao so adicionados mais 4 espacos em branco antes do valor, para completar os 8 caracteres exigidos. >>> print '0 valor é t12.4£" $valor © valor 6 3.1416 © inteiro 3, 0 marcador decimal e quatro casas decimais exigem mais 6 espagos em branco para completar 12 caracteres. JOSUE LABAKI ~ GRUPO PY A SOLTEIRA 5INTRODUCAO A PYTHON — MODULO A 2. Recursos de manipulacao de listas >>> ael1, 2,3] (1, 2 31 © método append adiciona um valor ao final da lista. Extend faz a mesma coisa, mas adiciona uma lista inteira de uma vez. >>> a.append(*poncan') (1, 2, 3, *ponean"] >>> avextend([0,0,-3]) (1, 2, 3, "poncan', 0, 0, -3] Veja a diferenca se fizermos append de uma lista inteira: a lista seré adicionada como um tinico valor, num nico endereco: >>> b=[1, 2,3] >>> b-append([1,2,3]) >>> b (, 2 30, ON — UNESP — ILA SOLTEIRA 6INTRODUCKO A PYTHOM — MODULO A Se em vez de adicionar um valor ao final da lista vocé quiser inserir num enderego especifico, pode usar insert(endereco,valor). Aqui inserimos o valor “start” no endereco zero da lista a. >>> a.insext (0, 'start") ['start',1, 2,3, "poncan', 0, 0,~3] Também hé algumas ferramentas para retirar valores de listas. Remove é uma delas. Fazendo remove(0) sobre a lista a, retiramos dela o primeiro valor 0 que apareceu. Depois fazemos 0 mesmo com “poncan”: >>> a. remove (0) ('start', 1, 2, 3, tponcan', 0, ~ >>> a. remove ("poncan') ['start", 1, 2, 3, Um pouco parecide com remove € 0 método pop. objetot.pop(i) remove de objeto! o valor armazenado no endereco / >>> a.pop(0) "start! [Lr 2p 3, 0, 3) JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA aINTRODUCKO A PYTHOM — MODULO A J8 0 método count retorna o nlimero de vezes que seu argumento aparece na lista, Para saber 0 nimero de vezes (uma vez) que o valor “3” aparece na lista “a”, fazemos: >>> a.count (3) Ja vimos que a varredura 20 contrério, por meio de incremento negativo, poderia ser aplicada a qualquer seqléncia, ndo somente a strings. Vamos aproveitar que estamos falando de manipulacao de listas para verificar isso. Veja como é facil obter a Escala de Dureza de Mohs em ordem decrescente de dureza: 22 Mohs=['Talco', 'Gipsita', 'Calcita", 'Fluorita', 'Apatita', tortoclasio', ‘Quartzo', 'Topazio’, ‘Corindon', ‘Diamante*] >>> Mohs [::-2] (‘Diamante’, 'Cor\xedndon', 'Top\xelzio', 'Quartzo', 'Ortocl\xelsio", tapatita', 'Fluorita', ‘Calcita’, 'Gipsita', 'Talco'] A SOLTEIRA 28Parte IV - Testes, Loops, Varreduras e Erros 1, Enquanto... No cédigo abaixo, o loop “while” testa se 0 valor de b é menor que 5. Se isso for verdade, so executados os procedimentos depois dos dois pontos (: |. Neste caso, imprimimos o valor de b e depois fazemos uma reatribuico: chamamos de “b” o valor anterior atribuido a "b" somado a 1. >>> while b < 5: print b Perceba 0 alinhamento de todos os procedimentos que devem ser executados caso b seja menor que 5. Este é um conceito muito importante em Python:INTRODUCAO A PYTHON — MODULO A Indentacao*, Quando fizermos um programa completo, vocé perceberé que quando néo quiser que um loop faga mais nada, basta retornar o alinhamento. Uma caracteristica do IDLE € que ele percebe onde o cédigo deve ser indentado e faz isso automaticamente, Vocé percebe esta caracteristica quando pressioa ENTER depois de b <5: A linha inferior é automaticamente alinhada debaixo do while. Ao pressionar ENTER novamente depois de print b e b-b+1, acontece a mesma coisa, isso porque o IDLE espera que vocé informe mais um procedimento. Pressionando ENTER mais uma vez, 0 Shell perceberd que nao ha mais procedimentos a serem adicionades e 36 entdo executa o cédigo. Vejamos um loop mais elaborado; desta vez, com string formatada. poo bel >>> while b < 5: print "$i délares valem $.2f reais %(b,b*2.98) +1 1 délares valem 2.98 reais 2 délares valem 5.96 reais 3 délazes valem 8.94 reais 4 délares valem 11.92 reais Se nao for incluida a Ultima linha que “incrementa” o valor de b, este valor permanecerd sempre 1, € 0 loop testaré sempre 1 < 5, Como isso é sempre verdade, serd impressa eternamente a linha ‘océ também pode encontrar na literatura de Python termo “endentacao”, que significa a mesma coisa. No centanto, “indentagao” & mais utilizado, embora seja umn neologismo (ja incorporado por alguns dicionarios da lingus portuguesa). JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 30INTRODUCAO A PYTHON - MODULO A 1 délazes valem 2.98 reais Se vocé fizer este teste, basta pressionar CTRL+C (se estiver usando o IDLE) para cancelar o loop Ao estudar o script de outras pessoas, pode ser que vocé encontre algo como bil, ou b*=2. Escrever bt=n € 0 mesmo que +n, @ escrever bs=n € 0 mesmo que bobin, 2 Entrada de dados Veja como ler uma entrada do usuario em Python: >>> x = raw_input ("Informe a fase: ') Informe a fase: vapor A fungilo raw_input(s) mostra a string s para o usuério € espera que ele fornega algum dado. Entdo, a func&o transforma este dado numa string e a retorna para 0 cédigo. Para salvar esta entrada e usa-la posteriormente, basta salvar o resultado da fung&o sob um nome qualquer, como fizemos acima com “x”. Todo mundo, ao menos uma vez na vida, se esquece de que raw_input() retorna sempre uma string € perde tempo com isso. Veja um classico: JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 31INTRODUCKO A PYTHOM — MODULO A >>> a = raw_input ("Tamanho do lado do quadrado: *) Tamanho do lado do quadrado: 23 >>> print '0 perimetro deste quadrado 6", 4a © perimetre deste quadrado 6 23232323 >>> typela) ctype tste'> Obviamente, 0 perimetro de um quadrado de lado 23 ndo é 23222323, Este é © resultado da multiplicaao da string a pelo inteiro 4: quatro vezes a string. Se vocé quer solicitar um inteiro ou um float do usuério, deve converter resultado de raw_input() para o tipo de objeto desejado usando as funcies int ou float: >>>, input ("Tamanho do lado do quadrado: ') ‘Tamanho do lado do quadzade: 23 int (a) >>> type (ay
>>> print '0 perimetro deste quadrado é', da © perimetro deste quadrado € 92 Ou mais diretamente, >>> a = int (raw_input (‘Tamanho do lado do quadrad JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRAINTRODUCKO A PYTHOM — MODULO A tamanho do lado do quadrado: 23 >>> typela) ctype tint '> Analogamente, a fungao para transformar o tipo de um objeto em float € float(x): >>> r= float (raw_input ("Raio: ')) Raio: 4.5 >>> type (zy stype ‘float'> No pseudocddigo abaixo, testamos se 0 nome “x” contém a string “liquido”. IF Se isto for verdade, o cédigo imprime “Menos de 1009 c”. EUIF Sendo, se "x" ndo é “liquido", mas "vapor’, 0 cédigo imprime "Mais de 100° Cc". ELSE Caso "x" niio seja nem “liquido” nem “vapor”, 0 resultado é "Menos de 0° C”. JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRAINTRODUCKO A PYTHOM — MODULO A Atencéo para a indentacé: : tudo que desejamos que seja feito caso x seja “liquido” esta alinhado. © mesmo com elif e else. >>> x = raw_input ("Informe a fase: *) Informe a fase: vapor b> dfx "Liquido': print 'Menos de 100° ct elif x "vapor" print ‘Mais de 100° ct else: print 'Menos de 0° cr Mais de 100° c Vamos dar uma melhorada no cédigo da pagina 30, j4 que a impressdo que fizemos ld deu uma escorregada gramatical (“1 ddlares valem...”) >>> while b < 4: print ‘Ei délar vale %.2f reals’ &(b,b*2.98) else: print "ti délares valem ¥.2f reais’ %(b,b*2.98) bist JOSUE LABAKI ~ GRUPO PY ON — UNESP — ILA SOLTEIRA 34.INTRODUCKO A PYTHOM — MODULO A 1 délar vale 2.98 reais 2 délares valem 5.96 reais 3 délares valem 8.94 reais 4. For © for de Python é uma ferramenta poderosa © muito caracteristica desta linguagem. Com for, podemos “varrer” qualquer seqiiéncia (strings, listas, tuplas) ou dicionério. pee a = ["Jo%o', ‘Rafael’, ‘Douglas'] ["Jo\xe30', "Rafael", 'Douglas"] >> for i in at print 4 Jo&o Rafael Douglas >>> for x in at print "$s tem $i letras’ %(x,len(x)) JoSo tem 4 letras Rafael tem 6 letras Douglas tem 7 letras JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA IeINTRODUCAO A PYTHON — MODULO A “Para x em a:” - “x” € 0 nome que demos a cada um dos elementos da sequéncia a neste exemplo. Desta forma, quando falamos em x estamos falando do elemento da seqiléncia a que esté sendo estudado no momento. Primeiro, “x” é “Joao” (0 primeiro elemento de a). E por isso que quando imprimimos x len (x) imprimimos na verdade “Jodo” e len(‘Jodo’). Simples, n&o? Poderiamos ter usado qualquer nome no lugar de x. Uma funcao importante para usarmos 0 for é a fungdo range(ni,nfi), que cria uma lista comegando do inteiro ni até o inteiro nf-1, com incremento i entre os nuimeros: pee range (1, 11,2) (3, 5, 7, 91 Os valores de ni, nf / precisam ser ntimeros inteiros. Podemios omitir nie / se estes valores forem zero € 1, respectivamente: 6 1 8 9] 1 8, % 10) >>> for elefante in range (5): print #lefante**2 IzINTRODUCAO A PYTHON — MODULO A 16 Assim € 0 for sobre a seqiéncia range(5). Para voc8 perceber que podemos chamar os elementos da seqiiéncia de qualquer coisa, usamos 0 (bizarro) nome “elefante”. © tamanho da seqiiéncia a (tamanho 3) é um niimero inteiro, ento n&o hé problema em aplicar a fungo range sobre len(a). Na verdade, isso é 0 mesmo que range(3): >>> for i in range(1en(a)) print 4 E aqui vemos porque é interessante que range gere uma lista de nimeros inteiros - 0 enderecamento das seqiiéncias em Python também é feito por numeros inteiros: pee for i in range (len(a))+ print i,a[i] 0 Joao 1 Rafael 2 DouglasINTRODUCKO A PYTHOM — MODULO A Nesta altura do campeonato vocé j4 deve ter percebido que a indentacdo também € 0 mecanismo que regula quais acdes fazem parte do raio de ado do bloco de for. E assim encadeamos alguns blocos de for: bee mat riz = ((2,0/0) (0,340), (0,0/1)) >>> for i in range(len(matriz)): # € © mesmo que range(3), ok? print ‘\at for j in range(len(mateiz)): # idem print matriz(i] (31, dou © cédigo print *\n' imprime uma linha em branco. Podemos fazer print "\n! *k para imprimir k linhas em branco... Neste exemplo e no anterior, aparece uma virgula na linha de print. Ela serve para imprimir os termos todos na mesma linha. Ao aplicar uma varredura de for sobre um diciondrio, 0 nome dado aos elementos é interpretado como sendo a chave do dicionario, Melhor mostrar com exemplos:INTRODUCKO A PYTHOM — MODULO A >>> orgamento = (‘asa":1200, ‘combust ivel':200, tmotor':4500) >>> for qualquer in orcamento print qualquer combust ivel (© nome qualquer assume o valor das chaves do dicionario orcamento. Sendo assim, >>> for testel23 in orcamento: print teste123, 'custa RS*,orcamento[teste123] combustivel custa R$ 200 asa custa R$ 1200 motor custa R$ 4500 Por exemplo: jé que teste123 assume o valor das chaves de orcamento, seu pr fazer orcamento[testel23] € 0 mesmo que fazer orcanento[*conbustivel'], que jeiro valor assumido € ‘combustivel’, a primeira chave deste dicionério. Assim, retornaré 0 valor associado a esta chave. JOSUE LABAKI ~ GRUPO PY IsINTRODUCAO A PYTHON - MODULO A WR Vocé sabe que dicionario. items () retorna uma lista de tuplas contendo 0 par (chave, valor). Usando este métode, como vocé faria para imprimir os mesmos resultados do Ultimo bloco de for? Lembre-se que 0 for pode vasculhar qualquer seqdéncla, inclusive uma lista de tuplas, 5 Break © comando break serve para abortar um bloco de while ou for. Vocé se lembra do operador "M%"? Ele retorna o resto da divisio entre dois, ista [2,3,4,5,6,...ne2] e testa sen é 0), entao n inteiros. O cédigo abaixo faz ume varredura na divisivel por algum destes valores. Se for divisivel (ou seja, sen % no é um niimero primo e a varredura do for é cancelada com break. >>> n= int (raw_input ("Nimero a testar: ')) Nimero a testar: 28 >>> for i in range(2,n): ignei print 'Nomoro no primo’; break Nimero nio primo Nota: Se 0 cédigo @ ser executado apés um sinal de dois pontos contém poucas linhas, vocé pode coloca-lo na frente dos dois pontos ¢ separar os procedimentos com ponto e virgula, como fizemos acima no bloco de if. © mesmo sinal de dois pontos aparece em blocos de for, while e em definiches de funcdes. JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 40INTRODUCKO A PYTHOM — MODULO A A seguir demonstramos o break abortando um bloco de while: >>> bei >>> while it “1 print b if be7: break Observacio: while 1: € um loop infinite. Use isto sempre que quiser executar um cédigo indefinidamente. Vocé pode cancela-lo com um break. O codigo break cancela somente o loop a que esté submetido, se houver varios loops encadeados: loop: blablabla blebleble Loop2 bliblibli, blobloblo break2 # Cancela somente o loop2 breaki # Est alinhado com o loopl, portanto cancela somente loopl. JOSUE LABAKI ~ GRUPO PY ON — UNESP — ILA SOLTEIRA 4INTRODUCAO A PYTHON — MODULO A Tratamento de erros Nem sempre podemos garantir que as operacées que efetuamos sobre uma seqléncia ou ao longo de um loop so validas, principalmente se a sequéncia for muito grande ou for fornecida pelo usuario. Num exemplo simples, vamos recolher uma lista de 3 inteiros fornecides pelo . O que nos garante que o usuario nao tentard Inserir uma string na lista? boo Ist 1 ee for nome in range (3)+ st append (int (raw_input (*Digite um valor: '))) Digite um valor: 33 Digite um valor: -4 Digite um valor: a Traceback (most recent call last): File "
", line 2, in -toplevel- Lst append (int (rai input (‘Digite um valor: '))) ValueError: invalid literal for int(): a A fungao int(qualquercoisa) nao péde transformar a string ‘a’ em um inteiro (claro!). Como evitar ent&o que 0 usuario fornega uma string ou outro valor qualquer que nao possa ser transformado em inteiro? Uma das formas é: JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 2INTRODUCKO A PYTHOM — MODULO A >>> let! >>> for Digite Digite Digite pigite Digite Digite Digite Digite Digite pigite Digite Digite Digite ooo Ist (2, 33, BEM-VINDO_APYTHON! =11 iin range (3): while try: 1st append (int (raw_input (‘Digite um valor: '))) break except: print 'Digite somente nimeros um valor: 2 um valor: a somente numeros!!! um valor: r somente nimeros!!! um valor: t somente numeros!!! um valor: 33 um valor: e somente nimeros!!! um valor: w somente numeros!! um valor: -4.99 -4) JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRAINTRODUCAO A PYTHON - MODULO A A sintaxe de try é primeiro tenta fazer isso @ tudo que esteja neste alinhamento (Indentagio, lembra?) isso também se qualquer linha dentro do bloco try der erro, ento serdo executadas estas linha: No exemplo anterior, tentamos concatenar a lista Ist 0 valor coletado pelo rav_input, porém transformado em niimero inteiro pela fungdo int(). Se fornecermos uma string, a fungo ndo conseguiré transformé-la em inteiro. Ai entra em agdo o bloco “except:”, com 0 qual imprimimos um aviso para que o usudrio informe um numero, Como estamos dentro de um bloco de loop infinito, voltamos novamente 20 try para recolher um valor do usuario e transforma-lo em inteiro. Se ndo houver erro desta vez, iremos para a préxima linha, “break”, que cancelara 0 loop infinito. Acaba por ai? Nao. Ainda estamos fazendo a varredura do for, entao iremos para o préximo valor da seqlléncla range(3), e assim por diante. A seguir, recolhemos um inteiro do usudrio € tentamos calcular seu inverso. Se 0 ususrio digitar um inteiro menor que zero, teremos problemas quando x for igual a zero, j4 que no ha inverso de zero. Assim, simplesmente tentamos calcular 0 inverso de x; se néo for possivel, informamos que no foi possivel.INTRODUCKO A PYTHOM — MODULO A >>> x = Int (raw_input ("Digite um nimero intelro: ")) Digite um numero inteiro: -3 Soo while x03: try: print 1./x except: print 'NSo @ possivel dividir 1 por tit &x xextl # Também pode ser x¢=1 ~0. 333333333333 NSo 6 possivel dividir 1 por 0 1.0 0.5 WA Podemos evitar este problema se pularmos a divisdo 1./x quando x for igual a zero. Como vocé faria isso? Observe também a diferenca entre 1/3 e 1./3: no primeiro, temos uma diviséo de dois inteiros que gera um resultado inteiro, 0. No segundo, temos uma divisdo entre o float 1. (que é 0 mesmo que 1.0) € 0 inteiro 3, que gera um resultado float, 0.33333333333333331. Se quisermos o resultado em float, basta que um dos termos da operagao seja um floa JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 45INTRODUCAO A PYTHON - MODULO A 18.0 >>> 1/3 0.3333: Parte V - Nosso primeiro programa completo Vocé pode escrever programas em Python até mesmo no bloco de notas; basta que salve 0 arquivo com extens#o .py € que ndo se esqueca da indentacéo, Uma das formas mais praticas é no editor do IDLE, que além de mostrar com cores diferentes as diversas partes do cédigo como no IDLE, também indenta o cédigo automaticamente onde necessario e facilita os testes do programa. Para usar este editor para escrever um programa completo, va a File > New indow no IDLE, ou simplesmente CTRL+N Assim que vocé salvar 0 programa (nao se esqueca da extensdo .py!), as strings v8o aparecer em verde, algums cédigos como if, for e while aparecerso em laranja e 0s comentdrios em vermelho. Acostume-se a salvar o programa antes JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 46INTRODUCAO A PYTHON - MODULO A mesmo de comesar a escrevé-lo, assim vocé poderd contar desde 0 inicio com 0 auxilio das cores. Quando quiser testar um programa, vé a Run > Run Module, ou simplesmente FS Vamos fazer um programa que teste se um numero fornecido pelo usuario € perfeito. Dizemos que um ntimero perfeito se ele for igual & soma dos seus divisores menores que ele préprio. © menor numero perfeito, por exemplo, € 6 ( 14243). # perfeitos.py n= int (raw_input ("Digite o numero a ser testado: ')) teste 0 for 1 in range(i,n)+ if teste els ifnsi teste-testeri print n, *6 um ndmero perfeito' print n, ‘no 6 um nimero perfeito! Vamos analisar este programa Linha 1: aqui lemos do usuario 0 valor de n. Inicialmente o valor € uma string, como qualquer valor recebido pela func&o raw_input, e depois o transformamos em inteiro pela fungio int, para sé entio atribuir o resultado 20 nome n. Linha 2: Uma forma de fazer o teste sen € perfeito ou nao € criar uma variavel inicialmente valendo zero e ir somando a ela todos os divisores de n A SOLTEIRA 47INTRODUCAO A PYTHON - MODULO A Digite que encontrarmos, Ao final, testamos se 0 valor desta varidvel é igual an. Se for, né um numero perfeito Linha 3: Ok, entéo vamos procurar os divisores de n, Sabemos que todos os inteiros candidatos a divisores de n estéo na seqléncia range(1,n) (agora vocé jé enxerga essa seqliéncia como [1,2,3,4,....n-4], néo é?). Entéo basta fazer uma varredura (isto €, um for) sobre range(1,n) testando quais destes so divisores de n. Linha 4: Se o termo atual da seqiiéncia é divisor de n, entao... Linha S: ...adicione-o a teste! Linha 6: Terminamos a busca dos divisores. Perceba que voltamos 20 alinhamento do for. Segundo a indentacao, tudo o que escrevermos agora no seré mais executado para cada um dos valores da seqiléncia. Basta entéo testar se a soma dos divisores de n, agora salvo sob o nome “teste”, corresponde a n. Linha 7: Isto é 0 que seré executado caso o valor de “teste” seja igual ao de n (ou seja, sen for igual & soma dos seus divisores - um numero perfeito, portanto). Linha 8: Sendo, (se “teste” ndo ¢ igual 4 soma dos divisores de n)... Linha 9: n nao é um numero perfeito Executando o programa (pressionar FS é 0 jeito mais rapido), © ntimero a ser testado: 6 numero perfeito JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 48INTRODUCAO A PYTHON — MODULO A Voltando & janela onde estd o programa e pressionando F5 novamente para testar outro valor, Digite o nimero a ser testado: 7 7 nao € um numero perfeito loop infinito (while 1:, por exemplo), vocé pode executar isso infinitas vezes: while 1 Chato pressionar F5 toda hora, nao é? Encapsulande todo este cédigo num © cédigo aqui (indentado corretamente) WB Encapsulande 0 programa todo num loop infinito, 0 problema passa a ser outro: é preciso pressionar CTRL+C para cancelar o teste. Como vocé feria para 0 programa parar os testes de forma mais elegante, de preferéncia perguntando 20 usuario se ele deseja testar mais algum ntimero? BX Como bom curioso, vocé nao esté se perguntando que outros niimeros séo perfeitos além do 6? Agora vocé tem o poder em suas maos (Python)! Tente fazer um programa para descobrir quais séo 0s 3 niimeros perfeitos que existem até 10000 além do 6.INTRODUCAO A PYTHON - MODULO A Vocé também pode executar seu programa clicando em seu icone, na pasta em que o programa foi salvo. Desta forma, o programa nao seré executado no IDLE, € sim num ambiente mais veloz. Um detalhe quando se usa esta forma de execucdo é que a janela que é aberta enquanto o programa roda se fecha imediatamente apés 0 término do programa, ndo permitindo ao usuério estudar os dados de saida. Uma forma simples de manté-la aberta até que 0 usuario deseje é incluir uma linha raw_input (‘Pressione ENTER’) ao final do programa, j4 que raw_input espera por uma entrada do usuario. Se o usuario vai pressionar ENTER ou outra tecla qualquer, nao importa, j4 que esta informagéo néo seré usada para nada Para editar 0 programa no IDLE, clique sobre o icone com o botao da direita escolher “Editar com IDLE”. Observagao: se vocé estiver usando Linux (meus parabéns!), € necessério adicionar uma linha no comego do seu programa especificando a localizagéo do Python: #!/usr/bin/python A linha acima informa ao sistema para procurar pelo programa /usr/bin/python @ transmitir © resto do arquivo a este programa. Note que o diretério onde se encontra o Python varia de sistema para sistema. O diretério acima € valido para 0 Conectiva Linux 10.0. Agradecimentos a0 parceiro Carlos Mota Castro, fervoroso defensor de Linux, por esta observacdo, O Carlos adaptou esta nota de uma apostila de Perl que ele estava aprendendo. Estava aprendendo, porque agora ele jé ouviu falar de Python... JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 50INTRODUCAO A PYTHON - MODULO A Parte VI - Fungées e Médulos Definindo funcgées Assim como os médulos, as fungées podem ser muito titeis para executar um bloco de cédigo que seré repetido vérias vezes, economizando linhas de cédigo. Quando ocorrer um erro nestes procedimentos que seréo muito repetidos, basta alterar a fungéo, sem a necessidade de vasculhar todo o programa corrigindo todas as repetigies. A sintaxe para definir funcdes em Python é def nome_da_funcao (parametro1, parametro2, - operacoes sobre os n parametros Imagine que seja necessério calcular 0 quadrado de um ntimero varias vezes a0 longo do programa. Podemes criar uma funcdo para isso do seguinte modo: poo def f(x): return x*¥2 >>> £13)INTRODUCKO A PYTHOM — MODULO A Outra fungéo, desta vez com dois argumentos >>> def elevar (x, ¥1 return x**y >>> elevar (9,9) 387420489 Ha meios de definir funges que trabalham com um numero indefinido de argumentos, de acordo com a sintaxe: def nome_da_fung4o (*nome1) : procedimentos. Esta sintaxe toma todos os elementos inseridos dentro dos parénteses como sendo uma tupla. Observe: >>> def impressora(*argumentos) : return argumentos >>> impressora (1,2 a, 23) JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 5;INTRODUCKO A PYTHOM — MODULO A Assim fica claro como os argumentos fornecidos pelo usuario - 1, 2 e 3 - séo admitides como argumentos da fungéo em forma de tupla. Considerando isso, podemos trabalhar estes argumentos facilmente, j4 que temos um certo traquejo em manipular tuplas: >>> def somatoria(*argumentos) : soma = 0 for i in argumer gomat=i # Voc8 j4 sabe: soma 6 © mesmo que son: return soma >>> somatoria(1, 2,3, 4,5) as A funcao recém-definida assume quantos argumentos 0 usuirio desejar. Apesar disso, alguns argumentos podem néo ser admitidos pelos procedimentos definidos dentro da fungio, por exemplo, >>> somatoria(1,2,3,4, "teste") Traceback (most recent call last): File "
", line 1, in -topleve. somatoria(1,2,3,4, teste") File "
", line 4, in somatoria soma+=i ‘TypeError: unsupported operand type(s) for +=: ‘int’ and ‘str’ JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 53INTRODUCKO A PYTHOM — MODULO A Isso porque a fungéo somatoria n&o € capaz de somar inteiros com a string “teste’. AR Usando 0 que aprendemos sobre tratamentos de erros, como vocé reescreveria 2 funcio somatoria para informar 20 usudrio que um de seus argumentos foi invélido? Evolua este cédigo para mostrar também qual dos argumentos & invélido (0 primeiro, 0 segundo, etc.). As funces nao precisam ser limitadas a operacées algébricas: peo def testa_primo(n) + teste-t for i in range(2,n} apnea teste-testeti if teste print '"Nimero ndo primo* else: print 'Némero primot a_primo (28) Nimero nfo primo pee testa_primo(7) Namero primo JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRAINTRODUCKO A PYTHOM — MODULO A Nao hé problema algum em usar o resultado da func&o para outra operagéo. ‘Assim, podemos usar diretamente f(3) - que € igual a 9 - como parémetro da fungéo elevar: pep elevar (£(3), 4) 5561 Vocé pode colocar um default para um argumento, para ser admitido pela func&o caso 0 usuario da funcao nao forneca este argumento, >>> def user (nome="Labaki") + print 'Meu nome é",nome >>> user (*Mamute") Meu nome é Mamute >>> user() Meu nome é Labaki Outro exemple: >>> cadastro-[] >>> def add(x, y='Casado", 2-3): cadastro.append ([x, y, 2]) >>> add(*Mozart', ‘Solteiro', "sem filhos') >>> cadas' JOSUE LABAKI ~ GRUPO PYINTRODUCKO A PYTHOM — MODULO A [['Mozart', ‘Solteiro', ‘sem filhos"}] >> add ("Beethoven") >>> cadaster [['Mozart', "Solteiro', ‘sem filhos'], ['Beethoven', ‘Casado', 3]] pp add( "Bach", 'Vidvo') >>> cadastro [['Mozart', 'Solteiro', ‘sem filhos'], [‘Beethovent, 'Casado', 31, ['pach", 'Vi\xfavo", 31] Se vocé quer usar o default de y mas nao 0 de z, pode indicar isso assim >>> add ("Salieri ',z=4) >>> cadaster [['Mozart', ‘Solteiro’, ‘sem filhos'], [‘Beethovent, ‘Casado', 31, 4a) ['Bach", *Vi\xfavo', 3], ['Salieri', 'Casaac Para facilitar a vida de quem usaré seus programas, e talvez a sua prépria quando tiver que fazer manutengéo nos seus programas, pode-se inserir pequenas informagées sobre as funcdes dentro delas. Sdo as chamadas “doc strings”. >>> det f(x): swmesta fungio retorna 0 quadrado de um nunozo"** return 2142 poo £(2) JOSUE LABAKI ~ GRUPO PY ON — UNESP — ILA SOLTEIRA 56INTRODUCAO A PYTHON — MODULO A >>> print £._doc_ Esta fungdo retorna o quadrado de um numero Funcées sobre Seqiiéncias Se vocé possui uma seqlléncia e precisa aplicar uma fungdo sobre cada um dos seus termos, hd meios bem praticos de fazer isso. Um deles é a fungdo map, que aplica uma funggo sobre uma seqliéncia e retorna uma lista contendo os resultados. Na sintaxe mostrada abaixo, cada um dos elementos de seqiénciat € tomado como argumento de funcaot map(funcol, seqtiéncial) >>> def quadrado (texmo) + return termo**2 >>> elemento: 142¢3,4,5, 6) >>> map (quadrado, olementos) fy 4, 9, 16, 28, 36) Obtemos assim a lista com os quadrados dos termos da lista elementos. Isso também funciona com operacées nao algébricas:INTRODUCKO A PYTHOM — MODULO A >>> orcamento=('asa':1200, ‘combustivel':200, tmotor':4500) >> def cambio (componente) + print componente[0],'R§ ', componente [1] print componente(0], "US$ *, componente [1] /3. print '\nt >9> map (cambio, orcamento. items ()) combustivel R§ 200 combustivel US$ 66.6666666067 asa R§ 1200 asa US$ 400.0 motor R$ 4500 motor US$ 1500.0 [None, None, None] Breve explicagéo sobre 0 cédigo acima: jé vimos que orcamento. items () € uma lista de tuplas, >>> oveamento. items () [ (combust \xedvel", 200), ("asa', 1200), (*motor', 4500)] JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 58INTRODUCAO A PYTHON - MODULO A assim podemos aplicar a fungéo map sobre esta sequéncia como sobre qualquer outra. Neste caso, a fungéo map tomar a primeira tupla, (‘combust \xedvel", 200) como o argumento componente da funco cambio. Ao fazer componente [0], estamos fazendo (‘combust.\xedvel* 200) [0], que correspondente a 'combustivel', enquanto componente [1] correspondent a '200'. E assim com todos os termos da sequénci Aquele estranho (tone, None, None] 20 final da execucdo € um resultado importantissimo e vai alimentar uma discusséo posterior sobre return versus side effects. Outra interagdo funcdo-sequéncia interessante € reduce, que toma uma fungéo e uma seqiéncia e retorna um Unico valor, com a sintaxe reduce(funcéo, sequéncia): >>> def soma(alfa,beta) : return alfatbeta >>> reduce (soma, [1,2,3]) 6 Primeiro, reduce assume o primeiro item da lista [1,2,3] (0 inteiro 1) como sendo 0 argumento alfa da funcao soma, e 0 segundo item (0 inteiro 2) como sendo o argumento beta, Resultado: 1+2 = 3, Este inteiro 3 € tomado entéo como o argumento alfa e 0 préximo item da lista (0 inteiro 3) é assumido como beta. Resultado: 3+3 = 6. 0 processo é repetido até o final da sequiéncia. A Este recurso parece ideal para 0 nosso algoritmo anterior de verificar se um ntimero € perfeito, no parece? Como vocé reescreveria aquele algoritmo usando reduce? JOSUE LABAKI ~ GRUPO PYTHON - UNESP — ILHA SOLTEIRA 50
Você também pode gostar
Compreençao e Um Guia para Biblioteca Pandas
PDF
Ainda não há avaliações
Compreençao e Um Guia para Biblioteca Pandas
200 páginas
Python - A Bíblia
PDF
96% (25)
Python - A Bíblia
373 páginas
Python 3 Conceitos e Aplicações Uma Abordagem Didática Portuguese PDF
PDF
88% (16)
Python 3 Conceitos e Aplicações Uma Abordagem Didática Portuguese PDF
455 páginas
Python para Todos Explorando Dados Com Python 3 (Charles Severance)
PDF
100% (14)
Python para Todos Explorando Dados Com Python 3 (Charles Severance)
321 páginas
Abordagem de Estudo de Caso para A Criação de Projetos de Ciência de Dados Bem-Sucedidos Usando Python, Pandas e Scikit-Learn Stephen Klosterman
PDF
Ainda não há avaliações
Abordagem de Estudo de Caso para A Criação de Projetos de Ciência de Dados Bem-Sucedidos Usando Python, Pandas e Scikit-Learn Stephen Klosterman
58 páginas
E Book Python Funcoes e Poo
PDF
100% (2)
E Book Python Funcoes e Poo
84 páginas
A3 - Ciencia de Dados
PDF
Ainda não há avaliações
A3 - Ciencia de Dados
20 páginas
Pense em Python PDF
PDF
0% (1)
Pense em Python PDF
9 páginas
Programação para Leigos - Geek University
PDF
Ainda não há avaliações
Programação para Leigos - Geek University
18 páginas
Segredos Do Ninja Javascript
PDF
25% (4)
Segredos Do Ninja Javascript
1 página
Curso de Python
PDF
100% (11)
Curso de Python
67 páginas
Aprenda Python Basico - Rapido - Felipe Galvao
PDF
100% (3)
Aprenda Python Basico - Rapido - Felipe Galvao
128 páginas
Introdução A Python Modulo A PDF
PDF
Ainda não há avaliações
Introdução A Python Modulo A PDF
213 páginas
Aprenda Phyton
PDF
100% (5)
Aprenda Phyton
218 páginas
Bibliotecas e Modulos em Python
PDF
Ainda não há avaliações
Bibliotecas e Modulos em Python
5 páginas
Apostila - Phyton
PDF
100% (1)
Apostila - Phyton
22 páginas
Sumario 9788575228357
PDF
Ainda não há avaliações
Sumario 9788575228357
9 páginas
Guia Quero Ser Programador
PDF
100% (1)
Guia Quero Ser Programador
11 páginas
Mercado de Trabalho Com Python
PDF
100% (1)
Mercado de Trabalho Com Python
55 páginas
Minicurso Python 01
PDF
100% (1)
Minicurso Python 01
25 páginas
Xxix Enic
PDF
Ainda não há avaliações
Xxix Enic
640 páginas
Funções Python
PDF
Ainda não há avaliações
Funções Python
2 páginas
E-Book Dinheiro Inteligente SMC
PDF
Ainda não há avaliações
E-Book Dinheiro Inteligente SMC
40 páginas
Curso de Pydjango - Python e Django
PDF
100% (2)
Curso de Pydjango - Python e Django
205 páginas
4 Analise de Dados em Python Com Pandas
PDF
Ainda não há avaliações
4 Analise de Dados em Python Com Pandas
60 páginas
E Book Quebre o Ciclo Liberdade Total Dos Vicios de Pornografia e Masturbacao
PDF
Ainda não há avaliações
E Book Quebre o Ciclo Liberdade Total Dos Vicios de Pornografia e Masturbacao
28 páginas
Ebook - Treinamento Python I
PDF
Ainda não há avaliações
Ebook - Treinamento Python I
49 páginas
Ebook Regex
PDF
100% (1)
Ebook Regex
19 páginas
Aprenda Python
PDF
Ainda não há avaliações
Aprenda Python
256 páginas
CProg Py
PDF
Ainda não há avaliações
CProg Py
64 páginas
Python PDF
PDF
Ainda não há avaliações
Python PDF
83 páginas
ECorrea Meu Primeiro Livro de Python v2 0 0
PDF
Ainda não há avaliações
ECorrea Meu Primeiro Livro de Python v2 0 0
227 páginas
Curso Python
PDF
100% (1)
Curso Python
105 páginas
Curso de Python Com RPA e Criação de Projetos Reais Udemy
PDF
Ainda não há avaliações
Curso de Python Com RPA e Criação de Projetos Reais Udemy
1 página
Ebook - Basico Do ES6
PDF
Ainda não há avaliações
Ebook - Basico Do ES6
16 páginas
PostgreSQL Prático PDF
PDF
100% (1)
PostgreSQL Prático PDF
152 páginas
UFCD 6770 - Lógica de Programação
PDF
Ainda não há avaliações
UFCD 6770 - Lógica de Programação
13 páginas
História Da Virtualização
PDF
Ainda não há avaliações
História Da Virtualização
20 páginas
Lógica e Python
PDF
Ainda não há avaliações
Lógica e Python
40 páginas
Curso Python Cirp
PDF
Ainda não há avaliações
Curso Python Cirp
84 páginas
PostGre para Iniciantes
PDF
100% (1)
PostGre para Iniciantes
119 páginas
Teorico 1 ADS PDF
PDF
Ainda não há avaliações
Teorico 1 ADS PDF
22 páginas
Sistemas Operacionais
PDF
Ainda não há avaliações
Sistemas Operacionais
8 páginas
Codigos Simples em Phyton
PDF
Ainda não há avaliações
Codigos Simples em Phyton
164 páginas
1.5. Introdução À Lógica de Programação em Python
PDF
Ainda não há avaliações
1.5. Introdução À Lógica de Programação em Python
12 páginas
Como Começar Na Programação de Software
PDF
Ainda não há avaliações
Como Começar Na Programação de Software
9 páginas
Trilha para Cientista de Dados
PDF
Ainda não há avaliações
Trilha para Cientista de Dados
4 páginas
Web Scraping Com Python-Faça Da Web Sua Database2.0
PDF
Ainda não há avaliações
Web Scraping Com Python-Faça Da Web Sua Database2.0
8 páginas
APRENDENDO PYTHON DO JEITO MAIS FÁCIL - Higor Granero
PDF
100% (3)
APRENDENDO PYTHON DO JEITO MAIS FÁCIL - Higor Granero
100 páginas
Apostila Jornada Python - Aula 3
PDF
Ainda não há avaliações
Apostila Jornada Python - Aula 3
18 páginas
Ferramentas Utilizadas em Ciência de Dados e Big Data
PDF
100% (1)
Ferramentas Utilizadas em Ciência de Dados e Big Data
18 páginas
Aula04 - Comandos Básicos e IF
PDF
Ainda não há avaliações
Aula04 - Comandos Básicos e IF
4 páginas
Resumo Machine Learning
PDF
Ainda não há avaliações
Resumo Machine Learning
25 páginas
Aula01 - Introdução Ao Python v1.1
PDF
100% (1)
Aula01 - Introdução Ao Python v1.1
128 páginas
Apostila PYTHON PDF
PDF
Ainda não há avaliações
Apostila PYTHON PDF
58 páginas
Curso de Python
PDF
Ainda não há avaliações
Curso de Python
31 páginas
Python
PDF
Ainda não há avaliações
Python
117 páginas
Aprenda Python Basico - Rapido - Felipe Galvao
PDF
100% (3)
Aprenda Python Basico - Rapido - Felipe Galvao
114 páginas
Linguagem de Programação - P01
PDF
Ainda não há avaliações
Linguagem de Programação - P01
75 páginas
Python Basico
PDF
Ainda não há avaliações
Python Basico
88 páginas