You are on page 1of 67
caPiTuLo 2 Guia de Instalagao do Python 2.1 Linux - Ubuntu Provavelmente voc@ ja tem o Python instalado e configurado, Para ter certeza que ele estéinstalado e descobrir qual versio, abra um terminal e execute 0 comando: $ python ~-version Se 0 resultado do comando for Python 3.6.5 (ou alguma versio igual ou superior a corretamente. 5) 0 Python jé esté instalado Caso 0 resultado do comando anterior tenha sido Python 2.7.13 (ou qualquer versio do Python 2) tente rodar 0 seguinte ‘comando, pois seu computador pode ter ambas versbes 2 ¢ 3 instaladas Caso tena aparecido amensagembash: python: command net .nd, voct pode instalé-lo da seguinte $ sudo apt install python3.6 2.2 Mac OS X CObtenha o instalador na sesso de downloads para Mac OS X do Python®. Clique duas vezes no Python.mpkg para abrir instalador. Para ter certeza que cle estéinstalado e descobrir qual versio, abra um terminal ¢ execute o comando: python 3.6.5 hap python oplaowaloaivinas om! 15 Curso Introdutério de Python, Versio 2.3.2, CC BY-NC-SA 4.0 2.3 Windows Primeiramente, deve-se obter o arquivo de instalago compativel com a arquitetura. © arquivo x86 provavelmente funcionaré para todos computadores, os links estéo a seguir: + x86 64? + x68 A seguir, oaquivo deve ser executado e a seguinte imagem apareceré: [2 Python 3.46.1 (4 Setup = x Install Python 3.6.1 (64-bit) Select Install Now to install Python with default settings, er choose CCustemize to enn or cable features. @ install Now rogram Phan Python Incase 045, pip ae documentatisn > Customize installation (Chee cation and features in nunene oral usr recommenced add Pytnon 36 to Pari {Gest Deve ser selecionado a opgio Add Python 3.6 to PATH, ¢ deve ser clicado na ops “Customize installation” 1B rymons8 (SED Sep = ro J Optional Features Documentation Bio EZ py launcher Fito ll users (reouices etevaton) oa tle the Il uncer to make ese to at Pho windows Back Gone Thapsiiww python orpppyhon!3 6Sipytbon 3 65-amd64 exe " hupswor.python.orgppython3.6Sipytbon-3.6.5.exe 16 Capitulo 2. Guia de Instalacao do Python Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 Clique em “Next” [& Phen 61 bin Save = Advanced Options sta or a ses asec ews Pen Pee he py urce FAcrate stores nse opleatons (ing rw asain Peco standd Hay euro eis oownioad debug tinatis eae ¥S 2015 or ten Custorize instal location faith CaPreqram Fen Pytnond6 [Browse windows Back I [Tees Selecionar a opgio Install forall users ¢ clicar em Install, Ent, uma jancla pedindo permissto de administrador deve parecer, é necessério aceitar 1 Pyehon 25:1 Setup os x J Setup was successful Seca thanks to Mar Hammond, without wnese yaace of {teely shared Windows experie, Python for Windows would stl be Python for DOS. ‘New to Python? Start with the enline stor ane Surety ‘See whats new inthis release | Disable path engi it See ke ea. ypu the aa MAK ATH aon python | windows: cose | Selocione Disable path lenght limi e, novamente, uma jnela de permissio de administrador ir aparccer, 6 necessrio socie Clique em Close Parabéns, agora o Python esté intalado em sua méquina! 2.3. Windows 7 Curso Introdutério de Python, Versio 2.3.2, CC BY-NC-SA 4.0 Briton. ren Sep = x Setup was successful Spedial thanks to Mark Hammond, without whose years of ‘teely shared Windows expertise. Python for Windows would stl be Python for DOS. ‘New to Python? Start with the online wuts and slocurentation. See what's new inthis elease python windows ‘ose 18 Capitulo 2. Guia de Instalagao do Python caPituLo 3 Ambientes de Desenvolvimento Ha diversos programas para desenvolvermos c6digos, alguns so mais bonitinhos, outros so mais poderosos, alguns ‘io mais simples, outros so mais amigaveis, Dé uma olhada nesta sego e escolha o que voc® achar mais interessante, ‘Somente voc@ pode responder & pergunta «Qual o melhor ambiente de desenvolvimento para mim?» 3.1 Linha de comando 3.2 IDE 3.2.1 IDLE Para usuérios Windows ¢ recomendado utilizar 0 IDLE. Ele é composto pelo interpretador do Python e um editor de texto para criar programas. Apés seguir o Guia de Instalagdo do Pyzhon (page 15), © menu inicial deve estar da seguinte forma ‘Ao abrir 0 IDLE (Python 3.X), aparecerd uma janela como na imagem abaixo: No IDLE € possivel digitar comandos para o interpretador do Python ¢, também, é possivel criar e digitar em um arquivo, Para fazer isso, no menu clique em File -> New File (Ou pressione as teclas Cirl + N juntas) 19 20 Curso Introdutério de Python, Versio 2.3.2, CC BY-NC-SA 4.0 [B Pon 61S Fle EAR Shel Debun Opens Wngow He Fyehen 3.0.1 (va.€.dsesctdbs, war 21 2057, Pipe "ccpytignsn, Poredite” or "Iicense )" for [Bren 181 Sat Fie fst_shel_Deing Options Window Hp S186) DSC VRE G4 bit GREE] oa wind Para rodar um programa, clique em Run > Rum Module (Ou aperte a teclaF5) [UB untae Filet Form [Run] Options Window Hep BESRE("HeLIS Python Shell Caso 0 arquivo ainda nao tenba sido salvo, € necessésio salviclo antes de executélo. Nao esquega de prefixar 0 nome do arquivo com .py (extensio do Python): Ap6s isso, 0 resultado da execugio do cédigo deve aparecer na janela anterior do IDLE: Capitulo 3. Ambientes de Desenvolvimento Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 Codie? ython Newfeér ° WB trisec , messy ra Doyen Me cares veer tect) = beatdikt) Duemosfiee Toe Pees ve > Sovesstype: Python flee mM me a a prmonsesner Hoy, Weise) EE vaH8S EF Bis GER] oa 3.2. IDE 21 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 Pry Capitulo 3. Ambientes de Desenvolvimento capituLo 4 Introdugao 4.1 Hello World muito comum, ao apresentar uma nova linguagem, comegar com um exemplo simples que mostra na tela as palavras Hello World. Para nao perder o costume, antes de adentrar 0 mundo do Python, vamos ver como ottas inguangens de programasio implementam esse exemplo 414 c 4.1.2 Java public class Hello System.out printin ("el lo, Worldi"); tic void main(String!) args) ( £ obrigario que ocigo acima esteja em um arquivo chamado Hello java 23 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 4.1.3 Pascal program felloWorld; begin 4.1.4 Python ‘Vamos ver como ¢ o Hello World em Python, Para isso, abra o shell do Python ¢ digite texto abaixo (no esquesa de apertar enter no final): 35> print ("lelle, World!) jello, World Em programagao, € muito comum utilizar a palavra imprimir (ou print, em inglés) como sindnimo de mostrar algo na tela 4.2 Fungao print print () 6 uma fungio nativa do Python. Basta colocar algo dentro dos parénteses que o Python se encarrega de fazer a magia de escrever na tela :) 4.2.1 Erros comuns Usar a letra P maitiscula ao invés de mintscula >o> Print (Hello, World! ") raceback (nost recent cail last) Esquecer de abrir e fechar dspas no texto que & passado para a fungo print. (} 35> print (Helle, Worl faceback (most recer SyntaxEerort invalid syntax Exsquecer de abrir ou fechar as aspas: >>> print ("Hello, raceback (m: Systaxerror: EOL while scanning strii g Literal ‘Comegar com aspas simples ¢ terminar com aspas duplas ou vice-versa: 35> print ('felle, worla!™) Traceback (most recent call last) syntaxiero: while scanning string Litera 24 Capitulo 4. Introdugao Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 Usar espago ou tab antes do print (} >>> print (Hello, World!") Traceback (most recent call last) >>> print (‘Hello, Werla!") Traceback (most. recent cal last} lonterer unexpected Lndent Mas, e se eu precisar usar aspas dentro do texto a ser mostrado na tela? Bem, Caso queira imprimir aspas duplas, cenvolva tudo com aspas simples e use aspas duplas na parte desejada: 35> print (Pye) jon @ legal! Nas nao © zen pra 6 Caso deseje imprimir aspas simples, faca 0 contrério (envolva com aspas duplas e use aspas simples onde necessitio): S55 print ("Pychon © 1 al" Python 6 legal! Mas nfo o ‘legal’ como dizem pra outras col como faz pata imprimir um texto em vérias linhas? Bom, para isso precisamos lembrar de um cardeter especial, a quebra de linha: n, Esse n 6 um caracter especial que significa agui acaba a linha, o que vier depois deve fiear na linha de baixo. Por exemplo: 35> print (' Siplas.\alsso aqai € depas duplas +*\alsso aq. olna cese te: o aqui € dspas dupla 4.2. Fungo print 25 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 26 Capitulo 4. Introdugao capituLo 5 Python como calculadora 5.1 Operadores matematicos ‘A linguagem Python possui operadores que utilizam simbolos especiais para representar operagbes de célculos, assim como na matemética: 5.1.1 Soma (+) Para utilizar nimeros decimais, use o ponte no lugar de virgula bo av aT 5.1.2 Subtracao (~) 2 5.1.3 Multiplicagao (+) 27 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 5.1.4 Divisao (/) S55 100 7 2 B se fizermos uma divisio por zero? File "eo a>", line 1, in zerodivies division by zero ‘Como nao existe um resultado para a divisio pelo niimero zero, o Python interrompe a execugio do programa (no caso a diviso) e mostra o erro que aconteceu, ou seja, «ZeroDivisionError: divison by zero». 5.1.5 Divisao inteira (//) >> 10 7/3 5.1.6 Resto da divisao (%) por 1083 ue ‘Agora que aprendemos os operadores aritméticos bésicos podemos seguir adiante. Como podemos caleular 2°? © jeito mais ébvio seria multiplicar o numero dois dez vezes: Porém, isso no € muito prético, pois hi um operador especitico para isso, chamado de potenciagio/exponenciagio: 28 Capitulo 5. Python como calculadora Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 Spo >> 0s 00) + 233 5.1.7 Raiz quadrada Lembrando que 7 = 2, entéo podemos calcular a raiz quadrada do seguinte modo: a 2 Mas, a mancira recomendada para fazer isso é usar a fungio sqrt da biblioteca math 35> import mach >>> math. sqrt (16) Na primeira linha do exemplo importamos, da biblioteca padtio do Python, o médulo math e enlio usamos a sua fungio sqzt. para caleular y16 E se precisarmos utilizar o nimero 7? 3.241 see Nio esqueca que é preciso ter rodado import math antes de usar as fungdes e constantes dessa biblioteca, 5.2 Exercicios 1. Caleule o resto da divisio de 10 por 3 2. Caleule a tabuada do 13. 3. Davinir nfo gosta de ir as aulas, Mas ele € obrigado a comparecer a pelo menos 75% delas. Ele quer saber aquantas aulas pode falta, sabendo que tem duas aulas por semana, durante quatro meses, Ajude o Davinir! ‘obs: um més tem quatro semanas. 4, Caleule a érea de um circulo de raio r = 2. Lembrete: a érea de um eiculo de raio r & 5.3 Expressées Numéricas Agora que jf aprendemos diversos operadores, podemos combiné-los ¢ resolver problemas mais complexos: 29 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (Quando mais de um operador aparece em uma expresso, a ordem de avaliago depende das regras de precedéncia, (© Python segue as mesmas regras de precedéncia da matemética, O acrénimo PEMDAS ajuda a lembrar essa ordem: 1. Parénteses 2. FE xponenciagio 3. Multiplicasdo e D ivisio (mesma precedéncia) 4, A digdo e § subtragdo (mesma precedéncia) 5.4 Notagao Cientifica Notagio cientifica em Python usa a letra e como sendo a poténcia de 10: 5.5 Exercicios 1. Quantos segundos hé em 3 horas, 23 minutos ¢ 17 segundos? 2. Se voce correr 65 quilémetros em 3 horas, 23 minutos € 17 segundos, qual é a sua velocidade média em m/s? 3. Resolva essa expressio: 100 - 413 - (20-5 x 4) 4, Rondinelly quer ligar tés capacitores, de valores: + C= 10nF + Cy =22uF + Cy = 6.8 uF 30 Capitulo 5. Python como calculadora Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 Se cle ligar os ués em paralelo, a capacitincia resultante é a soma: peters Se ele ligar os és em série, a capacitancia resultante €: Ou seja: (Qual é 0 valor resultante em cada um desses casos? Voc# e 0s outros integrantes da sua reptiblica (Joca, Moacir, Demival e Jackson) foram no supermercado & ccompraram alguns itens: + 75 latas de corveja: RS 2,20 cada (da ruim ainda, pra fazer o dinheiro render) + 2pacotes de macarrdo: R$ 8,73 cada + Ipacote de Motho de tomate: RS 3,45 + 420g Cebola: RS 5,40/kg + 250g de Alho: RS 30/kg, + 450g de pies franceses: RS 25/kg Caleule quanto ficou para cada um, Krissia gosta de bolinhas de queijo, Ela quer saber quantas bolinhas de queijo dé para colocar dentro de um pote de sorvete de 2.L. Ela pensou assim: im pote de sorvete ten dinensées 15 om x 10 em x 13 em Uma bolinna de queijo é una es: or = 1.2 om © fas tamanho conparavel as bol © fator deve ser menor. Nas as hol elastic cotamento ideal ¢ 0.14, mas o pote de sorvete as de queljo, ai tem efeitos de borda, entéo dee le queije s80 razcavelnente fentéo empacota mais. Esse valor parece razodve Sabendo que o volume de uma esfera de raio r € V = $nr,o volume do pote de sorvete € V = 2-y:z€ 0 fator dde empacotamento ¢a fragdo de volume ocupado pelas bolinhas de queijo. Ou seja, 74% do pote de sorvete vai ser ocupado pelas bolinhas de queio. Ajude a Krissia descobrir quantas bolinhas de queijo cabem no pote de sorvete! 5.6 Comentarios Caso precise explicar alguma coisa feita no c6digo, ¢ possivel escrever um texto (que nfo seré executado), que ajuda a entender ou lembrar 0 que foi feito. Esse texto & chamado de comentério, e para escrever um basta utilizar o earacter #. Exemplo: ‘Comentarios 31 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 5.7 Comparagées Os operadores de compuragio em Python sio: ‘Operagao | Signifeads = menor que = menor igual que > maior que maior igual que igual diferente doo 100 1s 99 43 32 Capitulo 5. Python como calculadora capituLo 6 Variaveis Variavel é um nome que se refere a um valor. 6.1 Atribuigao Atribuigdo € 0 processo de criar uma nova varidvel e dar um novo valor a ela, Alguns exemplos de atribuigées: 35> pi = 2101 No exemplo anterior realizamos trés atribuigdes. No primeiro atribuimos um nimero inteiro a varidvel de nome ‘numexo; no segundo uma frase & varifvel frase; no tltimo um mimero de ponto flutuante & pi. 6.2 Nomes de Variaveis Bons programadores escolhem nomes significatives para as suas varigveis - eles documentam o propésito da variével, Nomes de variéveis podem ter tamanho que voc@ achar necessério e podem conter tanto Tetras como niimeros, porém néo podem comegar com nimeros. E posstvel usar letras maitisculas, porém a convengéo é utilizar somente Tetras mindsculas para nomes de variaveis. 33 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 ‘elunavar lavel connonegigantecest oucompreguigadesse eiumavariaveleomnenegigant ‘Tenlar dar um nome ilegal a uma varidvel ocasionarg erro de sintaxe: 35> Idivea Systaxieror: invalid syntax Systaxkeror: invalid syntax def = 2.7 Systaxkeror: invalid syntax 123voa € ilegal pois comega com um niimero. 01¢ é ilegal pois contém um caracter invélido (@), mas © que hé de errado com det? A questdo € que def é uma palavra-chave da linguagem. © Python possui diversas palavras que sio utilizadas na estrutura dos programas, por isso nao podem ser utilizadas como nomes de varidveis. ‘Outro ponto importante: ndo 6 possivel acessar variveis que ainda nao foram definidas: inka y_definidat is not defined ‘Tentar acessar uma variével sem defint-la anteriormente ocasiona em um «erro de nome». ‘Também podemos atribuir expresses a uma varigvel seas 2 p> gay 3 n= 10 CORRES TOT PT 34 Capitulo 6. Varidveis Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) importante lembrar que para mudar o valor de uma vardvel preciso utilizar a srbuigao, Nos dois exemplos anteriores no aribuimos as expresses &, portant se valor continuo 0 mesmo. ‘Vamos alteraro valor de 2 Outra forma de somar na variével: ‘Também funciona com multiplicagio: cee 6.3 Exercicios 1. Supondo que a cotagao do délar esteja em RS 3,25, salve esse valor em uma varidvel e utilize-o para calcular {quanto voc8 teria ao cambiar RS 65,00 para délares. 2. Abelindo é um professor muito malvado. Ele quer decidir como reprovar Rondineli, que tirou 8.66, 5.35, 5 1, respectivamente nas provas P1, P2, P3 e P4. Para isso, ele pode calcular a nota final usando média aritmética (M.A.), média geométrica (M.G.) ou média harménica (M.H.) Pit PtP MA + MG. = (/PiPaPy MH= ae 5 qual das médias dé a pior nota? Qual dessas médias dé a maior nota pra Rondineli? 3. Josefson deseja fazer compras na China. Ela quer comprar um celular de USD 299,99, uma chaleira de USD 23,87, um gnomo de jardim de USD 66,66 e 6 adesivos de unieérnio de USD 1,12 cada um. O free de tudo isso para a cidade de Rolindia, no Parané, ficou em USD 12,344 (a) Calcule o valor total da compra em délares. 6.3. Exercicios 35 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (b) Usando o mesmo valor do délar do exei valor do JOF & de 6.38 %. (©) Quanto ela pagou apenas de JOF? 6.4 Strings (sequéncia de caracteres) Strings sio tipos de varidveis que armazenam uma sequéncia de caracteres: {cio anterior, calcule o prego final em Reais. Lembre-se que © "Texto boni: po> "Texto coma centos de cedilhas: hoje ¢ dia de caga!" "Texto coma centos de cedilhas: hoje é dia de caga!* As strings aceitam aspas simples também: “Também é possfvel fazer algumas operagses com strings so SantesSilvio Santos! raceback (most recent catl last) rypeitror: can't multiply sequence by non-int of type ‘float! boo eante2 = ‘14 2 + canto2 » jem ai, 14 14 14 14 14 Para strings em vécias linhas, utilize 3 aspas: 35> string grande ingerir um texte com varias Lin! 220 iniciar em una >>> print ( posse iniciar em uma, 36 Capitulo 6. Varidveis Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 6.5 Tipos de objetos Para saber o tipo de um objeto, usamos a fungfo type: Seo T p> y= 2.3 6.6 Tamanho A fungdo embutida Len (} nos permite, entre outras coisas, saber o tamanho de uma string: 6.7 indices Como visto anteriormente, 0 método lenQ pode seruilizado para obtero tamanho de estrucrss, sjam elas strings, listas, etc. Esse tamanho representa a quantidade de elementos na estrutura, ara obter somente um caracter de dentro dessas estruturas, deve-se utilzar 0 acesso por indices, no qual o indice entre colchetes |] representa a posigdo do elemento que deseja-se acessar. Nota: Os indices comegam em zero, $---4+---4+---4+---4+---4+---+ PPly [tl] hl[olfn | t---t--- +--+ ttt 0 1 2 3 4 5 6 “6 -5 —-4 -38 2 -d 65. Tipos de objetos 37 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 35> palavea = ‘Tychen’ >>> palavrald] # prineire >>> palavrals] # {Indices nepativos correspondem a percorreraestutura (string, lista, ..) na ordem reverse >>> palavea[-1] # dltina tanbén S5> pal de tras pra frente a[-3] # terce: 6.8 Fatias Se ao invés de obter apenas um elemento de uma estrutura (string, lista, ...) deseja-se obter multiplos elementos, deve-se utilizar slicing (Fatiamento). No lugar de colocar o fndice do elemento entee chaves, deve-se colocar o indice do primeiro elemento, dois pontos (:)e 0 proximo indice do titimo elemento desejado, tudo entre chaves. "ae: Python € muite divertido! poo 62] # Se omitide © segunde {nd nities acd nal! ver n € muito divertido!* >>> 2i-a) & boo frase [0:5] boo frase (2: 2] 6.9 Buscando ajuda rapidamente Esté com daivida em alguma coisa? Use a fungao help! Weicone to Python 3.6"s help © ey! this is your first sime using Python, you should definitely check ou! {/40cs.pyth torial! tutorial on the Internet at d, of topic te get mi odules. To quit thas help utility and Le, keyw ig Pytho: the name of any Python programs and us: oa OO TT 38 Capitulo 6. Varidveis Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) return to the interpreter, just type “quit” To get a list of available modules, keywords, symbols, or topics, type snodules", "keywords", "symbols", or "topics". Each module also. cones with a one-line summary of what it dows; te list the modules whose name or summary contain a given string such as "span", type "modules spar You are now leaving heip and returning to the Python interpreter £ you want to ask for help on a particular object directly from t! ferpreter, you can type "helplobject)". Rxecuting "help ('string')" has the sane effect as typing a particular string at the help> prompt, para buscar ajuda em uma coisa especttica? >>> help (en) Help on built-in on len in module builtins en (obj /) Return the number 35> help (ete) Help on class str in module builtins class str(object) str (bytes or_buffer(, encosing|, errors})} -> str errors is specified, then the object must expose a data buffer that #111 be decoded using the given encoding and error handler or repr (object) « — encoding defaults to sys.getderauitenceding () | errera defaults to ‘strict! WT return selftvalue contains_(self, key, /1 Return key in self rmat_spec. name, /) {SORT oT EN PET 6.9. Buscando ajuda rapidamente 39 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) _getitem_(self, key, /) urn self [key] Inplenent iter(sel£ Return selfe-value en_tselt, /) 1f, value, /) urn selftvalue. W'’Retura selfevalue.n (self, va puiitins tye! new obje See nell cous eype) gna Return str (self) Return 2 capitalized 5) i.e. make the first character have upper and the oa OO TT 40 Capitulo 6. Varidveis Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) casefold(...) S.casefold() —> ste Return a version of § suitable for caseless comparisons. S.center(width{, fillchar]) => st Return $ centered in a string of length width. Padding done using the specified fill character {default is a space) Return the number of non-overlapping cecurrences of substring sub in ing S[startrend]. Option: interpreted as in slice notation egunents start and end are encode (.. 1 S encode (encoding="ul{-8", errer stcict') > bytes Encode $ using the cedec registered for encoding. Default encoding a tutta". andling scheme. Default is "strict a Unicodetncadetrror. 0 ng F possible values are ‘ignore’, ‘replace! and ‘aplcharrefreplace' ag well aa any other nane registered with h codecs. register_error can handle Unicodetncodeirrors endswith(...) S.endswith(suffix(, startl, ené]]) -> bool turn Tue if § ends with the specit x, False otherwise With optional start, test § beginning at hnsth optional end, stop comparing $ at that position sm can also be a tuple ngs to try expandtabs(.-.) S.expandtaps (tabsize=8) —> str Return a copy of § where all tab characters are expanded using spaces If tabsize is given, @ tab size of @ ch And.) S.find{eubl, atart(, end)]) -> int Return the lowest index in § where substring sub is found, such that sub is contained within S[startzend). Optional argunents start and end are interpreted as in slice notation Return -1 on failure, S.format (sarge, skwargs) > ate matted version of 5, using substitutions from args and kwargs The substitutions are identified by eraces (1(' and '}') SARIS TTT TET 6.9. Buscando ajuda rapidamente a Curso Introdutério de Python, Versio 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) Format_map(...) S.Zormat_iap (mapp: using substitutions from mapping. fl one are fied by braces (1(" and *}') S.index(sub[, start{, end}]) -> ini ke Sif put raise ValueRrror when the substring is not found S.iealnum() -> and there is at least one S, False otherwise isalpra S.isalpha{) -> bool Return True if al : re alphabetic £0) => bool s in § are digit and there is at least one character in S, False otherwise ieidentifier() -> bool Return True if ler according reserved identifiers ower () > ern True if all cased chara False otherwise . SARIS TTT TET 42 Capitulo 6. Varidveis Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) depeintable(...) S.isprintaple() > bool Return Teue if ali characters in § are considered printable in repr(} or § is empty, False otherwise iespace(...) S.isspace{) -> bool Return Teue if all characters in § az and there is at least one character in §, whitespace , False otherwise letitie(...) S.istitiet) -> bool character in S, i.e. upper- and titlecase characters may only follow uncased characters and lowercase characters only case ones Svisuppert) -> bo Return Teue Lf al) cased characters in 5 are uppercase and t at least one cased char Return a string which is the concatenation of the strings in the nts is Aterable. The sepazator between elem iyst( Return § astified in a Unicode string of length width. Padding is done using the specified fill character (default is 4 space) Lower (01 Selower() -> str Return a copy of the string $ converted to Low S.lstrip((chare]} -> str Return a copy of the string $ with leading whitespace renoved. If chars is given and not None, reove characters in chars instead S.partition (sep) -> (head, sep, tail) the separator itself, and the part after it. If the separator is not found, retuzn § and two enply strings zeplace(...) SARIS TTT TET 6.9. Buscando ajuda rapidamente 3 Curso Introdutério de Python, Versio 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) S.eeplace (old, new[, cou Retura 2 copy of $ with all occurrences of substring old replaced by new. If the optional argument count is given, onl} st count occurrences are replaced. pEind(..0) S.rfind(sub(, start{, end]}) —> int Retura the highest index in $ here substring sub is found, such that sub is contained within S[startzend]. opticnal arguments start and end are interpreted as in slice notation Return -1 on failure, S.rindex(sub[, start{, end]]} —> i se ValueError when the substring is not found eld Lichar}) —> str © using the specified haracter (default is a space} S.rpar ition(sep) -> (head, sep, tail) Search for the separator sep in $, starting at the end of 5, and return che part before 1, the separator itself, and the part after at the separator is not found, return two empty strings and $ replit (sepetlone, maxsplit=-1) > 1 strings Return a List of the words in S, using sep as the delimiter string, starting at the end of the string and working to the front. If maxeplit is given, at most maxsplit splits are done. if sep is not specified, any whitespace string S.retrip({chars]) -> ste Return a copy of the string § with trailing whitespace renoved. If chars is given and not Nene, rerove characters in chars instead, S.9plit (sep-None, maxsplit~-1) -> List of strings Return a list of the words in S, using sep as the deliniter string. If maxsplit is given, at most maxsplit splits are done. =f sep is not specified or is None, any whitespace string ie a separator and empty strings az SARIS TTT TET 44 Capitulo 6. Varidveis Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) splitiines(...) S.splitiines | {keepends)} -> list of strings Return a list of the lines in S, breaking at line Line breaks aze not included in the resulting list startewith{...) Sx[, start{, endj]} -> boot Retura True if § starts with the specified prefix, False otherwise ) test $ beginning at _ th optional end, stop comparing S$ at that positio prefix can also be a tuple of atrings to cry. optional = S.serip({chaza]) > ate Return 2 copy of the string $ with leading and tra If chare Le given and not None, remove characters in chare swapease ( Return a copy of and vice versa, with uppercase characters converted te lowercase eitlet...) S.title() -> ate Return a titlecased version of S, i.e. words start with title case all remaining « re lower case able) -> st: Return a copy of the string § in which each character has been mapped ugh the given translation table. The table must inplem lookup/indexing via _getiten_, for instance a dictionary or list, mapping Unicode ordinals to Unicede ings, or None. If aises Lookuper ks left untouched. apper (6.1 Svapper () -> ate Retura 2 copy of § converted to uppercase of the ior truncated fied width. The string $ is n Static methods defined he: SARIS TTT TET 6.9. Buscando ajuda rapidamente 45 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) maketrans (x, y=None, z-None, Retura fon table usable for ste.translate() If there is only one argument, it must be a dictionary mapping Unicod ordinals (integers inicode ordinals, strings or None er keys will be then converted in the resulting dictionary, each cb must be a st whose characters will be mapped to None in the resul A documentagiio oficial? do Python contém toda a referéncia sobre a linguagem, detalhes sobre cada fungio e alguns ‘exemplos (em inglés). 6.10 Formatagao de strings A formatagio de string nos permite criar frases dinémicas, uilizando valores de quaisquer varidveis desejadas. Por exemplo: ase = ‘014, |". format (nome) Vale lembrar que as chaves ((}) s6 so trocadas pelo valor apés a chamada do método str 35> string_a_ser_formatada > formate! >>> string a_ser_formatada >>> string a_ser_formatada valor A string a ser formatada nao ¢ alterada nesse processo, jé que nao foi feita nenuma atribuigao: 35> string_a_ser_formatada ossfvel formalar uma quantidade arbtréria de valores: bo I) x () = i) formac(, & 7+ 8 35> palavea 7 >>> bocleano ~ False b>) 6. Ba inguage ral (palavza, numero, heoleane) Bas outras Linguagen hapsdocs phon oe 46 Capitulo 6. Varidveis Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 6.11 Separar Strings Se tivermos a frase Silvio S: 05 vem ai, cleoleola! e quisermos separar cada palavra, como fazer? Pode-se usar o fatiamento: oleole Mas também podemos usar a funglo sp1it () 6.12 Atribuigdo multipla {Uma funcionalidade interessante do Python que ele permite atribuigio miltipla. Isso muito til para trocar o valor de duas varisveis: >>> b = 200 Para fazer essa troca em outras linguagens é necessério ullizar uma variével auxiliar para no perdemos um dos valores que queremos trocar, Vamos comegar da maneira mais simples: >> a= b # perdemos o valor dea 2 >>> b A roca é bem sucedida se usamos uma varidvel ausiliar: b = 200 >>> print (a,b: >>> b = aux >>> print (a, b 200 1 Porém, como o Python permite atribuigo miltipla, podemos resolver esse problema de uma forma muito mais simples: 6.11. Separar Strings a7 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 Sad >>> b = 20 >>> print (a,b: >> a, bob, a >>> print (a,b: ae A atribuigo miltipla também pode ser utilizada para simplificar a atribuigdo de variéveis, por exemplo: >>> a, b= 1, 200 >o> print (a, b >> a, By Gy d= 1, 2 >>> print (a, by cy dd >a, by cs a boo print(a, b, c,d) . 6.13 Exerci 1. Dada afrase Python € muito Legal, use fatiamento para dar nome &s variéveis contendo cada palavra resultado final deve ser esolugso do >>> pal nlegal™ Qual o tamanho dessa frase? E qual o tamanho de cada palavra? 3. Agora que conhecemos atribuiggo miitipla ¢ 0 método str. spit () refaga os dois exercicios anteriores usando essas técnicas, 4, Use slicing (mais especificamente o passo do fatiamento) para inverter a string «Python», 48 Capitulo 6. Varidveis caPiTULo 7 Listas Listas so estraturas de dados capazes de armazenar miiltplos elementos. 7.1 Declaragaéo Para a criagio de uma lista, basta colocar os elementos separados por virgulas dentro de colehetes (], como no cexemplo abaixo: pep numeros = [2, 13, 17, 4 2, 13, 17, 471 A lista pode conter elementos de tipos diferentes: *, 180, 2 1-2 1 7.2 Exercicios 1. Crie uma lista com o nome das 3 pessoas mais préximas. 2. Crie ts Listas, uma lista de cada coisa a seguir: + frutas 49 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 + docinhos de festa (no se esqueca de brigadeiros!!) + ingredientes de feijoada Lembre-se de salvé-las em alguma variével! (2) Agora erie ums lista com essas tr listas Nessa lista de listas (vou chamar de listona) (b) voc® consegue acessar o elemento brigadeiro? (©) Adicione mais brigadeiros & segunda lista de listona (@) Adicione bebidas ao final da listona, mas sem criar uma lista! 35> Lista >>> Lietalo) ° poo Listal2] 300 poo Listald] # Conforme visto anteriormente, ao utilizar um indice negativo os elementos so acessados de tr pra frente, a partir do final da lista 35> diate boo Lista 50 Capitulo 7. Listas Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 ‘Tentar acessar uma posigio invélida de uma lista causa um erro: 35> Listalio Traceback (most recent call last) ndextrror: list index out of range >>> Listal-10 Traceback (most. recent call last} Indextrror: List index out of range Podemos avaliar se os elementos esto na lista com a palavra in S55 Lista_estranha [dus palav "a2, Trae, *, "OBERT p5> 42 in Lista_estranha possfvel obter o tamanho da lista utilizando 0 método Len () >>> len (1ista_estranhal3}) 2 7.4 Removendo itens da lista Devido & lista ser uma estrutura mutével, é possivel remover seus elementos utilizando 0 comando de palavras', 42, True, [‘batman po> del 1ista_estranna[2] Soo Lista_esteanna palavras', 42, {‘batma >>> del listaestranhal-] # as palavras", 42, 7.4. Removendo itens da lista 51 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 7.5 Exercicios 1. Utilizando 0 ce 1, remova todos os elementos da lista criada anteriormente até a lista ficar vazia 2. Faga uma lista de compras do més, ndo se esquega de comprar produtos de limpeza e sorvete! Agora «v8 ao mercado» e delete apenas os produtos de limpeza da lista Agora av A sorveteria» ¢ se empanturre ¢ sorvete c tire 0 sorvete da lista, 7.6 Operacao com listas ( operador + concatena lista: Sal b (© operador + repete a lista dado um nimero de vezes: >> [0] #3 7.7 Métodos de listas Existem métodos que permitem alterarlistas, como 0 append, que adiciona um elemento ao final da lista: sr ver >>> eee eh >> doo Para inserir numa posigdo qualquer: List insert (index, obj 35> Linsertla, a) >> 1 >> a >>> 11 SARIS TTT ET 52 Capitulo 7. Listas Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 (continua da pigina aneriod) 35 a >>> 12 doo 1 Toe tet, tery >>> 12. append (’ taty tht, tet Se no usarmos 0 copy, acontece algo bem estranho: pe d= fay Tudo 0 que for feito com 12 nesse exemplo também altera 11 ¢ vice-versa, 7.7. Métodos de listas 53 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 7.8 Exercicios 1. Dado uma lista de nimeros, faga com que os niimeros sejam ordenados e, em seguida, inverta a ordem da lista usando slicing. Nota: E possivel transformatar uma string em niimero, dado que seja um nimero: 2 Nota: A volta wambém é possivel: 54 Capitulo 7. Listas capituLo 8 Fungao range () ‘Aprendemos a adicionar itens a uma lista mas, ¢ se fosse necessério produzir uma lista com os niimeros de 1 até 200? 35> Li ? de> Tistalgrande Ly 2r 34 fy Se Ge Te By 8p 2p By 12, 13 tacgrande = (1, 2 5, 4) 5+ G Ty By 9 30, thy 12, 13] # Em python existe a fungao embutida range () , com ela é possivel produzir uma lista extensa de uma maneira bem simples: >o> print (Ist ir Ly 2) 3, 4) Sy & Ty 25, 26, 2%, 28, 28, 30, 32, 32, 46, 47, 48, 49, 50, 51, 52, 53, 5) 67, 68, 69, 70, 71, 72, 73, 78, , 107, 108, ain, 112, 123, 124, 125, 128, 127, 128, 128, 130, 2 39, 140, 141, 142, 144, 145,146, 14 S, 187, 188, 159, 16 190, 19%, 192, 193, 194, 195, 3, 114, 115, 116, 117, 118, 132, 133, 134, 135, 48, 149, 150, 15 y 161, 162, 163, 164, 165, 166, 1 138, 199) Além disso, 0 zange também oferece algumas coisas interessantes, por exemplo, imprimir os ntimeros espagados de Sem 5, entre 0€ 30: 35> print (List (range (0, 30, 51) 0 5, 1D, 15, 20, 25) Mas, como na maior parte das vezes apenas queremos uma lista comegando em 0 ¢ indo até o nimero desejado, & fungdo range (} também funciona da seguinte manera’ 35> print (Llstir ony Ly 2r Br 4 88 55 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 Nota: O intervalo do range () € aberto, ou seja, quando passamos 0 valor 10, ele vai até 0 9 (n- 1), Caso deseje criar a lista até 0 10 de fato, deve-se passar o valor 11 56 Capitulo 8. Fungao range () capituLo 9 Lendo valores do teclado Em python também é possivel ler do teclado as informagdes digitadas pelo usuario, e isso € feito por meio da fungo cmbutids input da seguinte forma: 35> valor_lide = input ("digite un valor? *) do) # deve-se notar que Para poder fazer isso pode-se usar os operadores int {) ¢ float () , que converte o valor lido para o tipo de dado esperador 35> valor_lide ~ int gite um valor inteiro: *)) >>> type (valor_iido) oo> valor. im valor oo> valor_lide - 1 57 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 9.1 Exercicios 1. Leia um nome pelo teclado e imprima "014, !" 2. Leia outro nome pelo teclado ¢ imprim: 32 do , maior a, por exemplo 5 >3 + >=, maior ou igual a + <=, menor ou igual a + ==igual a + 15, diferente de Para realizar operagSes com expressdes I6gicas, existem: 59 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 ‘opera segundo a seguinte tabela: Valor? | Valor? | Resultado Verdadciro | Verdadeito | Verdadeiro Verdadeiro [Falso | Falso | Falso | Venladeiro | Falso Faso [ Falso___| Falso Valor! | Walor2 | Rasuttad: Verdadeiro | Verdadeiro | Verdadeiro Verdadeiro| Falso_ | Verdadeiro Falso | Verdadeiro | Verdadeiro Faso | Falso___| Falso Valor Rasurtado] Verdadeiro | Falso Falso | Verde] sb dando >>> 0 > 3 or 2 >>> not not not 1 == 2 Assim como os operadores aritméticos, os operadores booleanos também possuem uma ordem de prioridade: ‘tem maior prioridade que anc que tem maior prioridade que or 35> not False and True or False 60 Capitulo 10. Condictonais capituLo 11 Estruturas de controle As estruturas de controle servem para decidir quais blocos de c6digo serio executados, Exemplo: Se estiver nublado: Levarei guarda-chuva Senko: Nito levarei Nota: Na linguagem python a identasio (espago dado antes de uma linha) é utilizada para demascar os blocos de cédigo, sio obrigatérios quando se usa estruturas de controle boo if a print else print doo if val print elie valor print elie val print elif valoz_entrad: Print ("a entrada era 4 Print ("va ca eeperade em nenhun © valor de entrada néo era esperade em nenhun if 61 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 11.1 Exercicios 1. Esoreva um programa que, dados 2 nimeros diferentes (a.eb), encontre o menor deles. 2, Para doar sangue & necessério! + Ter entre 16 ¢ 69 anos + Pesar mais de $0 kg + Estar descansado (ter dormido pelo menos 6 horas nas itimas 24 horas) FFaga um programa que pergunte a idade, o peso e quanto dormiu nas ttimas 24 h para uma pessoa e diga se ela pode doar sangue ou nib. 3. Considere uma equagio do segundo grau f(2) = a- 22+ b- 2 +6. A partir dos coeicientes, determine se a equagio possui duas es reais, uma, OU Se no possi Dica: A = 6? — 4. a-c: se delta é maior que 0, possui duas rafzes reais; se delta € 0, possui uma raiz; caso delta seja menor que 0, no possui raiz real 4, Leia dois mimeros ¢ efetue a adigao. Caso 0 valor somado seja maior que 20, este deverd ser apresentado somando-se a ele mais 8; caso 0 valor somado seja menor ou igual a 20, este deveré ser apresentado subtraindo- se, 5. Leia um mimero ¢ imprima a raiz quadrada do niimero caso cle seja positive ou igual a zero ¢ 0 quadrado do timero caso ele seja negativo. 6. Leia um mimero inteiro entre 1 € 12 e escrever o més cortespondente. Caso o usuério digite um niimero fora desse intervalo, deverd aparecer uma mensagem informando que nao cxiste més com este nimero, Pars mis informagBes sobre doaro de sangue aresehp/invrprosangve sp gow beagosregisos_basios_ park dose. 62 Capitulo 11. Estruturas de controle capituLo 12 Estruturas de repetigao As estruturas de repetiso so utilizadas quando queremos que um bloco de cédigo seja executado varias vezes. [Em python existem duas formas de eriar uma estrutura de repetigéo: © For é usado quando se quer iterar sobre um bloco de eédigo um niimero determinado de vezes, © while € usando quado queremos que 0 bloco de cédigo seja repetido até que uma condigdo seja satiseita, ou seja, é necessério que uma expresso booleana dada seja verdadeira e assim que ela se tornar falsa, o whi Le para Nota: Na linguagem python a identagio é obrigatéria, assim como estruturs de controle, para as estruturas de repetigio, >>> for n in range (0, 3} print (0) >>> while a Print (0), © loop for em python itera sobre os itens de um conjunto, sendo assim, o range (0, 2) precisa ser um conjunto de elementos, ¢ na verdade ele & 63 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 35> List (eange (0, 2)) Isso se aplica para strings também: >>> pala de> for letra in palavra print (1etra) poo Lista = U1, 2, 55> for numero’ in’ print (nu Para auxiliar as estruturas de repetigZo, existem dois comandos: + break: E usado para sir de um loop, no importandoo estado em que se enconta nt inue: Funciona de maneira parecida com ado break, porém no lugar de encerrar 6 loop, ele faz com que todo o eédigo que esteja abaixo (porém ainda dentro do loop) sejaignorado e avanga para a pedxima iteraglo, 355 while True! tring_éigitada if string aig aa.lower() == * Print ( break Af lente print ("Str a" {SORES OT ET 64 Capitulo 12. Estruturas de repeticao Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) 12.1 Exercicios 1, Caleule a tabuada do 13, 2. Lerdo teclado uma lista com 5 inteiros ¢ imprimir menor valor. 3. Lerdo teclado uma lista com 5 inteiros ¢ imprimir True se a lista estiver ordenada de forma crescente ou False caso contriio, 4, Biba em ordem decrescente todos os nimeros de $00 até 10. 5. Lerdo teclado 10 nimeros eimprima a quantidade de nimeros ene 10 ¢ 50. 6. Ler do teclado a idade €o sexo de 10 pessoas, calcul e imprima: (@) dade mélia das mulheres (©) idade média dos homens (©) idade média do grupo 7. Caleule o somatério dos niimeros de 1 a 100 ¢ imprima o resultado. 12.1. Exercicios 6 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 66 Capitulo 12. Estruturas de repeticao capituLo 13 Fungoes Fungdo é uma sequéncia de instrugdes que executa uma operagio de computagdo. Ao definir uma fungd0, voce especifica o nome ¢ a sequéncia de instrugdes. Depois. pode utilizar (“chamar”) a fungao pelo nome. A ideia 6 similar 4 fungdo matematica! Mas fungSes em uma linguagem de programasio ndo realizam necessariamente apenas célculos, ‘Vimos 6 type, um tipo de fungio: Criando uma fungéo simples: def NOuE_D. COMANDOS Aviso: Cologue os dois pontos apés definir a fungio! Nota: Faga a identagio nas linhas abaixo da definiga S55 def const) print (1+ 1) >>> def somal OREO ET PA 67 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) return 1 t 2 (Qual a diferenga entre utilizar print € return aqui em cima?!? 35> def inprine: print Tf you didn't care what happened to me. And T did smprine_letra) 13.1 Fungées com argumentos ‘Queremos somar 3 com um mimero qualquer que insiro na fungdo. Bora li 35> def soma_valor ix 35> goma_valor(5} 8 Que sem graga! Quero somar dois nimeros quaisquer! 35> def cona_dois_mumeros (x, yi ‘Tenho dificuldade com tabuada do 7! Ajude-me! >>> def tabuada_do_ for i in range (11) Print (7+ i) S55 tabuada_de_7() oa OO TT 68 Capitulo 13. Funcoes Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 (continua da pigina aneriod) Mai té legal isso! Quero a tabuada do 1 ao 10 agora! Bora! S55 def cabuadaa(): for i in range (1, for j in range (1, 11} prine("() = /) = leasa ae1e-2 2-2-4 2eane ae CORRES TOT PT 18.1. Fungées com argumentos 6 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) 9.10 =s0 0+ 2-20 oa OO TT 70 Capitulo 13. Funcoes Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) 13.2 Exerc FFaga uma fungio que determina se um nimero é par ou impar. Use o % para determinar o resto de uma divisio, Porexemplo: 3 ¥ 2 = led $2 = 0 FFaga uma fungio que calcule a érea de um efrculo. Insira o raio como argumento, couse x de Id faga a importagao de ma: Re rie uma fungio que receba um valor de temperatura em Fahrenheit e transforme em Celsius Relembrar é viver: raz quadrada é sqrt () , importando hi math sart () Faga um teste com bhaskara (1, ~4, ~5) eo programa deve obter as rafzes: (5.0, -1.0) Dada a fungio: y = 52 + 2, determine os valores de y para x entre -10 a +10, onde x é inteito Escreva uma fungio chamada has_duplicates que tome uma lista € retome True se houver algum ele- ‘mento que aparega mais de uma ver, Hla néo deve modificar lista original ‘Duas palavras so um “par inverso” se uma foro contrério da outra, Escreva uma fungi que dado duas palavras, retome True caso sejam. Escreva uma fungao que imprime todos os nimeros primos entre 1 e SO ica: um ndmero é primo se ele for divisfvel apenas por 1 e ele mesmo, use o operador & (resto da divisdo) para ‘Duas palavras so anagramas se voe8 puder soletrar uma rearranjando as letras da outra. Escreva uma fungio chamada i's_anagram que tome duas strings e retome True se forem anagramas ou False caso contratio. screva uma fungio que dado um némero, calcule o fatorial desse niimero. Por exemplo, fatorial de 5: 51=5-4-3-2-1=120 13.2. Exercicios nm Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 un CCric uma Fungo que aproxima a fungo matemética seno, utlizando a seguinte equagao: =1)" ant rsp” Essa c a expansio em Série de Taylor da fungao. Note que esta é uma série infinita! A sua fungio deve truncar a série em algum momento, ou seja, sua fungio vai calcular uma aproximagio para o seno de um ngulo: =1)" enst ey Note que, quanto maior o valor de N, melhor € a aproximagdo, Mas isso tem um custo: major vai sero némero de termos nessa série ¢ consequentemente, maior o tempo de execugao desse cédigo. ‘Uma possibilidade ¢ estipular previamente uma precisdo a ser atingida pelo cédigo. Ou seja, definimos © desvio méximo « que nossa aproximagio tem com: relagdo ao valor exato! Isso ¢ feito comparando dois termos consecutivos da série: se a diferenga entre eles (em valor absoluto!) for menor que ¢, atingimos a preciso descjada. Implemente, entdo, uma fungo que receba como argumentos: + 2: 0 Gngulo (em radianos!!) ‘maxi © mimero maximo de iteragdes + a procisio da aproximagio, cecalcule uma aproximagao para sin(z) usando duas condigSes de parada: niimero méximo de termos na série é Ninax © preciso 12, Caleule + usando um método de Monte Catto Monte Carlo é uma classe de métodos para resolver problemas usando esatistica. Aqui voe® vai implementar uma fungéo usando um dessesalgoritmos para calcular o mimeo, Dado um citculo de rao R dentro de um quadrado de lados 22, a razio entre a érea do cirulo para a érea do quadrado &: Ag aR on ao 7 u seja, se voee escolher aleatoriamente um ponto dentro do quadrado, a probabilidade dele cair dentro do circulo é de 7/4. Se voce escolher IV pontos aleat6rios dentro do quadrado, cerca de N'x/ estario dentro do eiceul. Entio, basta escolher pontos aleat6rios dentro do quadrado ¢ ver se estio dentro do circulo Um ponto (x,y) esté dentro do circulo se 2* + y? < Re aga uma fungdo que receba como argumento um nimero N de pontos (x,y) (aleatérios) a serem sorteados. Dentro dessa fungéo, vocé deve fazer um lago que sorteie esses NV pontos e veja quantos estéo dentro do circulo, Se M pontos eairem dentro do circulo,entéo a probabiidade de um ponto aleatério estar dentro do ctculo é aproximadamente M/N, Entdo, podemos estimar x como: 4M Para sortear um nimero aleat6ri entre a 6 utilize a fungao wniform(a, b) do médulo random. Exempla: >>> import random >>> randon.uniform (i, 2) # 1.8740445361226903 Perceba que ao executar a fungio pi () vétias vezes seguidas, o resultado & sempre diferente. Entéo faga um Jago para cleular pi (} Kvezes, salve 0s resultados em uma lista ecalcule o valor médio o desvio pad. R Capitulo 13. Funcoes capituLo 14 Exercicios e Desafios! Neste capftulo estdo listados todos os exercicios apresentados no curso ¢ também alguns desafios a mais! 14.1 Calculadora 14.1.1 Operadores Matem: 1 2 3 icos Caleule o resto da divisdo de 10 por 3 Caleule a tabuada do 13, Davinir no gosta de ir as aulas. Mas ele é obrigado a comparecer a pelo menos 75% delas. Ble quer saber uantas aulas pode falta, sabendo que tem duas aulas por semana, durante quatro meses. Ajude o Davinir! fobs: um més tem quatro semanas. Caleule a érea de um efreulo de raio r = 2. Lembrete: a érea de um circulo de raio r & 14.1.2 Expressdes Numéricas ‘Quantos segundos hé em 3 horas, 23 minutos e 17 segundos? Se voo® correr 65 quilOmetros em 3 horas, 23 minutos e 17 segundos, qual & a sua velocidade média em m/s? Resolva essa expressio: 100 — 413 (20-5 x 4) Rondinelly quer ligar t8s capacitores, de valores: 73 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 +O, =10uF C= uF + Cy = 6.8 uF Se ele ligar os rés em paralelo, a capacitincia resultante & a soma: Cs Se cle ligar os trés em série, a capacitancia resultante & det, 4,4 OAT Ge Ou seja: 1 (Qual é 0 valor resultante em cada um desses casos? 5. Vocé ¢ 08 outros integrantes da sua repiblica (loca, Moacit, Demival e Jackson) foram no supermereado ccompraram alguns itens: + 75 latas de cerveja: RS 2,20 cada (da ruim ainda, pra fazer o dinheiro render) 2 pacotes de macarrao: RS 8,73 cada 1 pacote de Motho de tomate: RS 420g Cebola: RS 5,40/kg 250g de Alho: RS 30/ke. 450g de paes franceses: RS 25/kg Caleule quanto ficou para cada um, 6. Krissia gosta de bolinhas de queijo, Ela quer saber quantas bolinhas de quetjo dé para colocar dentro de um pote de sorvete de 2.L. Ela pensou assim: Un pote de sorvete ten dinenaGes 15 en x 10 om x 12 em Una bolinha de queijo ¢ una esfera de raio r = 1.2 or © facor de enpacotanente ideal 6 0.74, mag o pote de sorvete ten ananho compa as bolinhas de queije, ai ten efeitos de borda, entao © facor deve ser menor. Nas as nolinhas de queijo sia cazoavelnence elasticas, entéo enpacota mais. Esse valor parece razosvel Sabendo que o volume de uma esfera de rio ré V ~ $13, 0 volume do pote de svete é V ~ 2:20 fator de empacotamento é a fragao de volume ocupado pelas bolinhas de queijo. Ou seja, 74% do pote de sorvete vai ser ocupado pelasbolinhas de queo, Ajude a Krissia descobrir quantas bolinhas de queijo cabem no pote de sorvete! 14.2 Variaveis 1. Supondo que a cotagio do délar esteja em RS3,25, salve esse valor em uma varidvel e utiize-o para calcular quanto vocé teria a0 cambiar R'S 65,00 para délares. 4 Capitulo 14. Exercicios e Desafios! Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 2, Abelindo é um professor muito malvado, Ele quer decidir como reprovar Rondineli, que tirou 8.66, 5.35, 5¢ 1, respectivamente nas provas PI, P2, P3 e P4. Para isso, cle pode caleular a nota final usando média aritmética (M.A), média geométrica (M.G.) ou média harménica (MH), Put Pat Put Pe 7 MG. = 4/|PiP2PsPi 4 F=E+RE MA= MH= (Qual dessas médias da maior nota pra Rondineli? E qual das médias da a pior nota? 3. Josefson deseja fazer compras na China. Ela quer comprar um celular de USD 299,99, uma chaleira de USD 23,87, um gnomo de jardim de USD 66,66 e 6 adesives de unieérnio de USD 1,12 cada um. 0 frete dde tudo isso para a cidade de Rolandia, no Parané, ficou em USD 12.34. (a) Caleule o valor total da compra em délares. (b) Usando 0 mesmo valor do délar do exerefcio anterior, calcule © prego final em Reais, Lembre-se que © valor do JOF & de 6,38 %. (©) Quanto cla pagou apenas de OF? 14.2.1 Desafios 1, Jolson esté aprendendo Arduino. Ele quer ligar LEDs nas saidas digitais do Arduino, Cada pino fornece 5 V. Jhilson sabe que tem que ligar um resistor em série com o LED para nfo queimar. Caleule o valor do resistor ue deve ser ligado para cada um desses LEDs, sabendo que a corrente de operagao de cada um dos LEDs é de 20mA: + LED vermelho: opera em 2.0" + LED verde: opera em 3.2V + LED roxo: opera em 3.7 2. DiyverS0n resolveu minerar criptomoedas. Ele decidiu minerar Etherewm e viu que 1 BT H =687.86 USD e 1 USD = R3.59. Ele comprou o seguinte computador: + 5 placas de video: GTX1080 TI, cada uma por RS5270,90 + 1 placa mie: ASRock H1110 Pro, por RS920 + 1 fonte: 1600 W, por RS2299,90 + LHD: 1 TB, SATA3, 7200 RPM por RS208,90 + 2 pentes de meméria: 4 GB, DDR4, 2400 MHZ, cada um por RS259,90 + CBU: Intel Core i5-8500 por RS899,90 E resolveu montar usando uma estante de madeira ¢ dois tjolos, para coolear melhor: Essas GPUs (placas de video) conseguem minerar Ethercum a uma taxa de = 27Mh/s (mega hash /s = 10° bash/s). Cada bloco minerado dé uma recompensa de 3 ETH. Considere a dificuldade da rede de 3.29 -10"°, 0 block time médio de 15.44 s Para calcular quantos délares por segundo ele vai ganhar com esse computador, D3yverS0n fez as seguintes contas recompensa ETH/s = cluster_ratio' = 14.2. Variaveis 5 Curso Introdutério de Python, Versio 2.3.2, CC BY-NC-SA 4.0 O cluster_tatio 6 ealeulado como: GPU_hashrate luster_tatio = nero a hashrats onde ngpy € 0 nimero de placas de video que ele tem, O network hashrate ¢ calculado como: dificuldade network hashrate = Foo (a) Calcule quantos ETH por segundo D3yver50n vai ganhar com esse PC. (b) Calcule quantos délares por segundo ele vai ganhar, (©) Caloule quanto cle vai pagar de energia elética por segundo para manter esse computador ligado, sabendo que 0 custo de enerpia eétrica € de 0.008centavos/AW. (4) Apés um més, quantos ETH ele vai ganhar? Isso equivale a quantos reais? Quanto de energia elétrica cle vai gastar? Deu lucro ou prejuizo? (©) Sele teve lucro, apés quanto tempo cle ganha o dinheiro que investiu no computador de volta? 14.3 Strings 1, Dada afrase Python é muito Legal, use fatiamento para dar nome as varidveis contendo cada palavra, © resultado final deve ser: + resolue’ >>> palavral >>> palavea2 SARIS TTT TET 6 Capitulo 14. Exercicios e Desatios! Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 (ontinuago da piping antvion) (Qual o tamanho dessa frase? E qual o tamanho de cada palavra? Agora que conhecemos atribuigio miltipla ¢ © método str. sp1it ( refaga os dois exercicios anteriores usando essas técnicas, Use slicing (mais especificamente o passo do fatiamento) para inverter a string «Python» 14.4 Listas 14.4.1 Declaragao 1. Crie uma lista com o nome das 3 pessoas mais préximas. 2. Crie trés Listas, uma lista de eada coisa a seguir: + frutas + docinhos de festa (ndo se esqueca de brigadeiros!!) + ingredientes de feijoada Lembre-se de salvé-las em alguma variével! (@) Agora crie uma lista com essas ts lists, Nessa lista de listas (vou chamar de listona): () voo8 consegue acessar o elemento brigadeiro? (©) Adicione mais brigadeiros & segunda lista de listona (4) Adicione bebidas ao final da listona, mas sem criar uma lista! 14.4.2 Remogao 1. Utilizando o ce L, remova todos os elementos da lista eriada anteriormente até lista fear vazia 2, Faga uma lista de compras do més, ndo se esque ca de comprar produtos de limpeza e sorvete! Agora «vé ao mercado» e delete apenas os produtos de limpeza da lista. Agora «v8 A sorveteria» e se empanturre e sorvete e tire o sorvete da lista 14.4.3 Métodos 1, Dado uma lista de ndimeros, faga com que os miimeros sejam ordenados e, em seguida, inverta a ordem da lista usando slicing. 14.4. Listas Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 14.5 Teclado 1. Leia um nome pelo teclado e imprima "014, !" 2. Leia outro nome pelo tectado e imprima: “none lide> roubou pao na cassa do nome? Lido> ficou triste @ com fone, 14.6 Estruturas de Controle 1. Escreva um programa que, dados 2 ndmeros diferentes (ae b), encontre o menor deles, Para doar sangue & necessério!. + Ter entre 16 ¢ 69 anos. + Pesar mais de 50 kg + Estar descansado (ter dormido pelo menos 6 horas nas tims 24 horas) FFaga um programa que pergunte aidade, 0 peso e quanto dormiu nas iimas 24 h para uma pessoa e diga se ela pode dour sangue ou née. 3. Considere uma equagéo do segundo grav f(r) = a2? +b x +c. A partir dos coeficientes, determine se a cequagio possui duas rafges reais, uma, ou se ndo possui Dica: A = 6? — 4-a-c: se delta é maior que 0, possui duas rafzes reais; se delta € 0, possui uma raiz; caso delta seja menor que 0, no possui raiz real 4, Leia dois mimeros ¢ efetue a adigdo. Caso o valor somado seja maior que 20, este deverd ser apresentado somando-se a ele mais 8; caso 0 valor somado seja menor ou igual a 20, este deverd ser apresentado subtraindo- se) ‘5, Leia um miimero e imprima a raiz quadrada do mimero caso ele seja positivo ou igual a zero ¢ o quadrado do simero caso ele seja negativo. 6, Leia um mimero inteiro entre 1 ¢ 12 ¢ eserever o més correspondente. Caso o usustio digite um niimero fora desse intervalo, devera aparecer uma mensagem informando que nao existe més com este nimero, 14.6.1 Desafios 1. Esereva um programa que, dados 3 niimeros diferentes (a, be c), encontre o menor deles. 2. Dado 3 valores inteiros lidos do teclado: A, B e C, retore a soma deles. Porém, caso algum desses valores seja 13, entio ele no conta para a soma, eos valores a sua direita também néo, Por exemplo: 12,326 13,2,30 ars mis informagBes sobre doagio de angus acess hipinwrprosange. ovbrfaigoshegustos_bascos para doacoo tml B Capitulo 14. Exercicios e Desafios! Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 14.7 Estruturas de repetic¢ao Caleule a tabuada do 13, Ler do teclado uma lista com 5 inteios e imprimir o menor valor, Ler do teclado uma lista com 5 inleiros ¢ imprimir Tue se a lista estiver ordenada de forma erescente ou False Exiba em ordem decrescente todos os niimeros de 500 até 10. Ler do teclado 10 nimeros ¢ imprima a quantidade de nimeros entre 10 ¢ 50. Ler do teclado a idade e o sexo de 10 pessoas, caleule e imprima: (a) idade média das mulheres (b) idade média dos homens (©) idade média do grupo Caleule o somatério dos niimeros de 1 a 100 e imprima o resultado, 14.8 Fungées asa uma fungio que determina se um nimero é par ou {mpar. Use o % para determinar o resto de uma divisio, Porexemplo: 3% 2 = 1e4 $2 asa uma fungio que calcule a érea de um circulo. Insira o raio como argumento. faga a importagdo de math e use = de Id. Aank* CCrie uma fungao que receba um valor de temperatura em Fahrenheit c transforme em Celsius. Relembrar é viver: : raiz quadrada € sqrt () , importando math: nath.sqrt () Faga um teste com bhaskara (1, ~4, ~5) © programa deve obter as raizes: (5.0, -1.0) Dada a funglo: y = Sr +2, determine os valores de y para x entre -10 a +10, onde 2 ¢ inteiro Escreva uma fungéo chamada has duplicates que tome uma lista ¢ retome Tru ‘mento que apareea mais de uma vez. Hla ndo deve modificar a lista original se houver algum ele ‘Duas palavras so um “par inverso” se uma for o contrésio da outra. Escreva uma fungdo que dado duas palavras, retome True caso sejam, 147. Estruturas de repeticao 79 Curso Introdutério de Python, Versao 2.3.2, CC BY-NC-SA 4.0 1 8, Escreva uma fungdo que imprime todos os niimeros primos entre | ¢ 50 ica: um ndimero é primo se ele for divisfvel apenas por 1 e ele mesmo, use o operador & (resto da divisdo) para 9, Duas palavras sio anagramas se voc8 puder soletrar uma rearranjando as letras da outra. Escreva uma fungdo chamada is_anagram que tome duas strings e retome True se forem anagramas ou False caso contritio. 10. Esereva uma fungdo que dado um nimero, caleule o fatorial desse nimero. Por exemplo, fatorial de 5: 4-3-2-1=120 1. Cie uma fungio que aproxima a fungi matemstica seno, utlizando a seguinte equagio: Essa c a expansio em Série de Taylor da fungio. Note que esta ¢ uma série infnita! A sua fungio deve truncar a série em algum momento, ou seja, sua fungio vai calcular uma aproximacio para o seno de um angulo’ (ey = So ED anes =D aor Note que, quanto maior 0 valor de N, methor € a aproximagdo. Mas isso tem um custo: maior vai sero nero de termos nessa série e consequentemente, maior o tempo de execugdo desse cédigo. ‘Uma possibilidade estipular previamente uma preciso a ser atingida pelo eédigo. Ou seja, definimos © ddesvio méximo ¢ que nossa aproximagio tem com relagio ao valor exato! Isso € feito comparando dois termos. consecutivos da série: se a diferenga entre eles (em valor absoluto!) for menor que ¢, atingimos a preciso descjada. Implemente, entéo, uma fungio que receba como argumentos + ©: 0 Angulo (em radianos!!) + Ninaxi © mero méximo de iteragées. + 6 a precistio da aproximago, ce caleule uma aproximagio para sin(z) usando duas condigdes de parada: ntimero méximo de termos na série & Ninax € preciso ¢ 12, Calcule + usando um método de Monte Carlo, Monte Carlo é uma classe de métodos para resolver problemas usando estatistica, Aqui vocé vai implementar ‘uma fungzo usando um desses algoritmos para calcular 0 mimero r. Dado um efteulo de raio F dentro de um quadrado de lados 2R, a razio entre a érea do eftculo para a area do quadrado é: Ag aR? on Ag RT Ou seja, se voce escother aleatoriamente um ponto dentro do quadrado, a probabilidade dele cair dentro do circulo € de 2/4, Se voc® escolher IV pontos aleatérios dentro do quadrado, cerca de Vz /4 estario dentro do cfreulo, io, basta escolher pontos aleatGrios dentro do quadrado € ver se estio dentro do efreulo ‘Um ponto (x,y) esté dentro do efreulo se 2 +? < 2 80 Capitulo 14. Exercicios e Desafios! Curso Introdutério de Python, Verso 2.3.2, CC BY-NC-SA 4.0 Faga uma Fangio que recebs como argumento um némero 1N de pontos (2, y) (aleatrios) a serem sorteaos. Dentro dessa fungio, voeé deve fazer um lago que soreie esses N pontos e vejaquantos esto dentro do circu, Se M pontos cafrem dentro do efreulo, entdo a probablidade de um ponto aleatrio estar dento do citeulo & aproximadamente M/N. Entio, podemos estimar x com 4M N Para sortear um niimero aleatério entre a e b ulilize a fungi uniform(a, b) do médulo random, Exemplo 35> import random S55 randan.un. 1.e74 ea F 83612: Perceba que ao executar a fungdo pi () vérias vezes seguidas, o resultado é sempre diferente, Entio faga um. lago para calcular pi () K vezes, salve os resultados em uma listae calcule o valor médio e o desvio padrio, 14.8. Fungées a1

You might also like