Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro...
Transcript of Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro...
Estruturas de Informação I - Aula 1Python! e rápido!
João Araujo [email protected]
Universidade do Estado do Rio de Janeiro
Departamento de Engenharia de Sistemas e Computação
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 1 / 60
Resumo
1 EI01 - Python
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 2 / 60
EI01 - Python
Aula - PythonNesta aula vamos ver as principais características de um programa Python,sem nos aprofundarmos.O aluno deve pegar outras referências para ter um melhor entendimento dalinguagemOs programas que implementam podem ser escritos em qualquerlinguagem, mas vamos priorizar soluções em Python.Essa aula foi baseada no curso online de Zed Shaw:http://learnpythonthehardway.org/book/
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 3 / 60
EI01 - Python
Conselhos
Use um editor simples (gedit, geany, notepad)
Digite tudo, não copie/cole
Vamos usar python 2 (versão 2.7). Não use python 3!
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 4 / 60
EI01 - Python
Primeiro Programa
Digite o seguinte programa e salve como hello.py :
1 # coding=UTF-8
2 print "Hello World!"3 print "Hello de novo"4 print "Eu gosto de digitar aqui."5 print "Isto é divertido."6 print �Uau! Imprimindo.�7 print "Posso usar �aspas simples� ."8 print �Mas se quiser usar "aspas duplas" também posso.�
Para executar, vá até o diretório onde salvou o programa e digite:python hello.py
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 5 / 60
EI01 - Python
Saída de hello.py
python hello.py
Hello World!Hello de novoEu gosto de digitar aqui.Isto é divertido.Uau! Imprimindo.Posso usar 'aspas simples' .Mas se quiser usar "aspas duplas" também posso.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 6 / 60
EI01 - Python
Comentários
Digite o seguinte programa e salve como ex02.py:
1 # coding=UTF-8
2 # Um comentário serve para você ler seu programa depois.
3 # Qualquer coisa após # é ignorado por python.
4
5 print "Eu poderia codificar assim." # e o comentário
6 # após é ignorado
7
8 # Você também pode usar um comentário para "desabilitar"
9 # ou comentar um pedaço do código:
10 # print "Isto não vai executar."
11
12 print "Isto vai executar."
Para executar, vá até o diretório onde salvou o programa e digite:python ex02.py
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 7 / 60
EI01 - Python
Números e matemática (ex03.py)
1 # coding=UTF-8
2 print "Eu vou contar minhas galinhas:"3 print "Pintadas", 25 + 30 / 64 print "Assadas", 100 - 25 * 3 % 45
6 print "Agora vou contar os ovos:"7 print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 68
9 print "É verdade que 3 + 2 < 5 - 7?"10 print 3 + 2 < 5 - 711
12 print "Qual o valor de 3 + 2?", 3 + 213 print "Qual o valor de 5 - 7?", 5 - 714 print "Oh, por isso é False."15
16 print "Que tal mais"17 print "É maior?", 5 > -218 print "É maior ou igual?", 5 >= -219 print "É menor ou igual?", 5 <= -2
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 8 / 60
EI01 - Python
Saída de ex03.py
$python ex03.pyEu vou contar minhas galinhas:Pintadas 30Assadas 97Agora vou contar os ovos:7É verdade que 3 + 2 < 5 - 7?FalseQual o valor de 3 + 2? 5Qual o valor de 5 - 7? -2Oh, por isso é False.Que tal maisÉ maior? TrueÉ maior ou igual? TrueÉ menor ou igual? False
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 9 / 60
EI01 - Python
Como funciona o '%' ?
O caractere '%' não é porcentagem.É o resto da divisão inteira, ou seja, outra forma de dizer. Pegue X, dividapor Y e �que com o resto da divisão inteira.Por exemplo, 20 % 3, tem como resultado 2, pois 20 dividido por 3 dá 6 eresta 2.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 10 / 60
EI01 - Python
Qual a ordem das operações?
Podemos usar o acrônimo PEMDAS que dá a ordem: Parentêsis,Exponenciação, Multiplicação, Divisão, Adição e Subtração, que é a ordemque Python segue.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 11 / 60
EI01 - Python
E a divisão, arredonda?
A divisão não faz arredondamento, ela simplesmente trunca o resultado.Para obter um resultado em ponto �utuante, escreva pelo menos um dosnúmeros com ponto decimal:
20.0/3 ou
20/3.0 ou
20.0/3.0
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 12 / 60
EI01 - Python
Variáveis e nomes (ex04.py)
1 # coding=UTF-8
2 carros = 1003 espaco_em_um_carro = 4.04 pilotos = 305 passageiros = 906 carros_sem_piloto = carros - pilotos7 carros_pilotados = pilotos8 capacidade_dos_carros = carros_pilotados * espaco_em_um_carro9 media_de_passageiros_por_carro = passageiros / carros_pilotados
10
11 print "Existem", carros, "carros disponíveis."12 print "Existem somente", pilotos, "pilotos disponíveis."13 print "vamos ter", carros_sem_piloto, "carros vazios hoje."14 print "Podemos transportar", capacidade_dos_carros, "pessoas hoje."15 print "Temos", passageiros, "Para transportar hoje"16 print "Temos que colocar", media_de_passageiros_por_carro, "em cada carro."
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 13 / 60
EI01 - Python
Saída de ex04.py
$python ex04.pyExistem 100 carros disponíveis.Existem somente 30 pilotos disponíveis.vamos ter 70 carros vazios hoje.Podemos transportar 120.0 pessoas hoje.Temos 90 Para transportar hojeTemos que colocar 3 em cada carro.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 14 / 60
EI01 - Python
Qual a diferença entre = e ==?
O = atribui o valor da direita a uma variável à esquerda.O == testa se duas coisas têm o mesmo valor
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 15 / 60
EI01 - Python
Variáveis e nomes (ex05.py)
1 # coding=UTF-8
2 meu_nome = �Zed A. Shaw�3 minha_idade = 35 # não minto
4 minha_altura = 174 # cm
5 meu_peso = 80 # kg
6 meus_olhos = �Azuis�7 meus_dentes = �Brancos�8 meu_cabelo = �Castanho�9
10 print "Vamos falar sobre %s." % meu_nome11 print "Ele tem %d cm de altura." % minha_altura12 print "Ele pesa %d quilos." % meu_peso13 print "Ele possui olhos %s e cabelos %s." % (meus_olhos, meu_cabelo)14 print "Seus dentes são normalmente %s, dependendo do café." % meus_dentes15
16 # Esta linha é problemática, tente escrevê-la como está
17 print "Se eu somo %d, %d, e %d obtenho %d." % (18 minha_idade, minha_altura, meu_peso, minha_idade + minha_altura + meu_peso)
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 16 / 60
EI01 - Python
Saída de ex05.py
$python ex05.pyVamos falar sobre Zed A. Shaw.Ele tem 174 cm de altura.Ele pesa 80 quilos.Ele possui olhos Azuis e cabelos Castanho.Seus dentes são normalmente Brancos, dependendo do café.Se eu somo 35, 174, e 80 obtenho 289.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 17 / 60
EI01 - Python
Strings e textos (ex06.py)
1 # coding=UTF-8
2 x = "Existem %d tipos de pessoas." % 103 binario= "binário"4 nao = "não"5 y = "Aquelas que sabem %s e aquelas que %s sabem." % (binario, nao)6
7 print x8 print y9
10 print "Eu digo: %r." % x11 print "Eu também digo: �%s�." % y12
13 hilario = False14 avaliacao_da_piada = "Essa piada não é engraçada?! %r"15
16 print avaliacao_da_piada % hilario17
18 w = "Este é o lado esquerdo de..."19 e = "uma string com um lado direito."20
21 print w + e
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 18 / 60
EI01 - Python
Saída de ex06.py
$python ex06.pyExistem 10 tipos de pessoas.Aquelas que sabem binário e aquelas que não sabem.Eu digo: 'Existem 10 tipos de pessoas.'.Eu também digo: 'Aquelas que sabem binário e aquelas que não sabem.'.Essa piada não é engraçada?! FalseEste é o lado esquerdo de...uma string com um lado direito.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 19 / 60
EI01 - Python
Strings e textos (ex07.py)
1 # coding=UTF-8
2 print "Batatinha quando nasce"3 print "se esparrama pelo %s." % �chão�4 print "." * 10 # o que isso faz?
5
6 end1 = "C"7 end2 = "h"8 end3 = "e"9 end4 = "e"
10 end5 = "s"11 end6 = "e"12 end7 = "B"13 end8 = "u"14 end9 = "r"15 end10 = "g"16 end11 = "e"17 end12 = "r"18
19 # repare a vírgula no final. Tente removê-la e veja o que acontece
20 print end1 + end2 + end3 + end4 + end5 + end6,21 print end7 + end8 + end9 + end10 + end11 + end12
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 20 / 60
EI01 - Python
Saída de ex07.py
$python ex07.pyBatatinha quando nascese esparrama pelo chão...........Cheese Burger
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 21 / 60
EI01 - Python
Imprimindo mais (ex08.py)
1 # coding=UTF-8
2 formatador = "%r %r %r %r"3
4 print formatador % (1, 2, 3, 4)5 print formatador % ("um", "dois", "três", "quatro")6 print formatador % (True, False, False, True)7 print formatador % (formatador, formatador, formatador, formatador)8 print formatador % (9 "O todo sem a parte, não é todo.",
10 "É parte.",11 "A parte sem o todo, não é parte.",12 "É todo."13 )
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 22 / 60
EI01 - Python
Saída de ex08.py
$python ex07.py1 2 3 4'um' 'dois' 'tr\xc3\xaas' 'quatro'True False False True'%r %r %r %r' '%r %r %r %r' '%r %r %r %r' '%r %r %r %r''O todo sem a parte, n\xc3\xa3o \xc3\xa9 todo.' '\xc3\x89 parte.' 'A parte sem o todo,n\xc3\xa3o \xc3\xa9 parte.' '\xc3\x89 todo.'
substituindo %r por %s, obtemos
1 2 3 4um dois três quatroTrue False False True%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %sO todo sem a parte, não é todo. É parte.A parte sem o todo, não é parte. É todo.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60
EI01 - Python
Imprimindo mais (ex09.py)
1 # coding=UTF-8
2 # Aqui temos algo estranho, lembre de digitar exatamente.
3 dias = "Seg Ter Qua Qui Sex Sab Dom"4 meses = "Jan\nFev\nMar\nAbr\nMai\nJun\nJul\nAgo"5
6 print "Eis os dias: ", dias7 print "Eis os meses: ", meses8
9 print """10 Algo está acontecendo aqui.11 Com as três aspas.12 Somos capazes de digitar tanto quanto quisermos.13 Mesmo 4 ou 5, 6 linhas....14 """
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 24 / 60
EI01 - Python
Saída de ex09.py
Eis os dias: Seg Ter Qua Qui Sex Sab DomEis os meses: JanFevMarAbrMaiJunJulAgo
Algo está acontecendo aqui.Com as três aspas.Somo capazes de digitar tanto quanto quisermos.Mesmo 4 ou 5, 6 linhas....
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 25 / 60
EI01 - Python
Imprimindo mais (ex10.py)
1 # coding=UTF-8
2 gato_tabulado = "\tTenho tabulação."3 gato_persa = "Sou uma divisão\nem uma linha."4 gato_backslash = "Eu sou \\ um \\ gato."5
6 gato_gordo = """7 Vou fazer uma lista:8 \t* Comida de gato9 \t* Peixes
10 \t* Brinquedo\n\t* Grama11 """12
13 print gato_tabulado14 print gato_persa15 print gato_backslash16 print gato_gordo
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 26 / 60
EI01 - Python
Saída de ex10.py
Tenho tabulação.Sou uma divisãoem uma linha.Eu sou \ um \ gato.
Vou fazer uma lista:* Comida de gato* Peixes* Brinquedo* Grama
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 27 / 60
EI01 - Python
Sequências de escape
\begin{verbatim}\\ Backslash ()\' aspas simpes (')\" aspas duplas (")\a ASCII bell (BEL)\b ASCII backspace (BS)\f ASCII formfeed (FF)\n ASCII linefeed (LF)\N{name} caractere com nome no Unicode\r ASCII Carriage Return (CR)\t ASCII Horizontal Tab (TAB)\uxxxx Caractere com 16-bits no valor hexa unicode\Uxxxxxxxx Caractere com 32-bits no valor hexa unicode\v ASCII vertical tab (VT)\ooo caractere com valor octal ooo\xhh caractere com valor hexa hh
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 28 / 60
EI01 - Python
Tente isso (ex10a.py)
1 while True:2 for i in ["/","-","|","\\","|"]:3 print "%s\r" % i,
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 29 / 60
EI01 - Python
Perguntando coisas (ex11.py)
1 # coding=UTF-8
2 print "Qual a sua idade?",3 idade = raw_input()4 print "Qual a sua altura?",5 altura = raw_input()6 print "Qual seu peso?",7 peso = raw_input()8
9 print "Então, você tem %r anos, possui %r cm e %r quilos." % (10 idade, altura, peso)
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 30 / 60
EI01 - Python
Saída de ex11.py
Qual a sua idade? 50Qual a sua altura? 186Qual seu peso? 86
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 31 / 60
EI01 - Python
Outra forma (ex12.py)
1 # coding=UTF-8
2 idade = raw_input("Qual a sua idade? ")3 altura = raw_input("Qual a sua altura? ")4 peso = raw_input("Quanto você pesa? ")5
6 print "Então, você tem %r anos, possui %r cm e %r quilos." % (7 idade, altura, peso)
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 32 / 60
EI01 - Python
Parâmetros, desempacotar, variáveis (ex13.py)
1 # coding=UTF-8
2 from sys import argv3
4 script, primeiro, segundo, terceiro = argv5
6 print "O script se chama:", script7 print "Sua primeira variável é:", primeiro8 print "Sua segunda variável é:", segundo9 print "Sua terceira variável é:", terceiro
Chame compython ex13.py um dois três
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 33 / 60
EI01 - Python
Saída de ex13.py um dois três
python ex13.py um dois trêsO script se chama: ex13.pySua primeira variável é: umSua segunda variável é: doisSua terceira variável é: três
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 34 / 60
EI01 - Python
Prompt e argumento (ex14.py)
1 # coding=UTF-8
2 from sys import argv3
4 script, user_name = argv5 prompt = �> �6
7 print "Olá %s, eu sou o script %s." % (user_name, script)8 print "Gostaria de te fazer algumas perguntas."9 print "Você gosta de mim, %s?" % user_name
10 likes = raw_input(prompt)11
12 print "Onde você mora %s?" % user_name13 moradia = raw_input(prompt)14
15 print "Qual é o tipo do seu computador?"16 computador = raw_input(prompt)17
18 print """19 Bom, então você respondeu %r sobre gostar de mim.20 Você mora em %r.21 E você tem um computador %r.22 """ % (likes, moradia, computador)
Chame compython ex14.py seu_nome
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 35 / 60
EI01 - Python
Saída de ex14.py
python ex14.py JoãoOlá João, eu sou o script ex14.py.Gostaria de te fazer algumas perguntas.Você gosta de mim, João?> SimOnde você mora João?> RioQual é o tipo do seu computador?> PC
Bom, então você respondeu 'Sim' sobre gostar de mim.Você mora em 'Rio'.E você tem um computador 'PC'.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 36 / 60
EI01 - Python
Lendo arquivos (ex15.py)
1 # coding=UTF-8
2 from sys import argv3
4 script, filename = argv5
6 txt = open(filename)7
8 print "Aqui está seu arquivo %r:" % filename9 print txt.read()
10
11 print "Digite o nome do arquivo novamente:"12 arquivo_novamente = raw_input("> ")13
14 txt_novamente = open(arquivo_novamente)15
16 print txt_novamente.read()
Antes de executar ex15.py, crie um arquivo ex15.txt
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 37 / 60
EI01 - Python
Lendo arquivos (ex15.txt)
Crie um arquivo ex15.txt com o seguinte conteúdo:
Rua tortaLua mortaTua porta
Chame compython ex15.py ex15.txt
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 38 / 60
EI01 - Python
Saída de ex15.py
python ex15.py ex15.txtAqui está seu arquivo 'ex15.txt':Rua tortaLua mortaTua porta
Digite o nome do arquivo novamente:> ex15.txtRua tortaLua mortaTua porta
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 39 / 60
EI01 - Python
Lendo e escrevendo (ex16.py)
1 # coding=UTF-8
2 from sys import argv3
4 script, filename = argv5
6 print "Vamos zerar %r." % filename7 print "Se você não quiser isso, digite CTRL-C (^C)."8 print "Se você quiser mesmo, digite RETURN."9
10 raw_input("?")11
12 print "Abrindo um arquivo..."13 alvo = open(filename, �w�)14
15 print "Truncando o arquivo. Goodbye!"16 alvo.truncate()17
18 print "Agora, vou questionar."19
20 linha1 = raw_input("linha 1: ")21 linha2 = raw_input("linha 2: ")22 linha3 = raw_input("linha 3: ")23
24 print "Vou escrever isso no arquivo."25
26 alvo.write(linha1)27 alvo.write("\n")28 alvo.write(linha2)29 alvo.write("\n")30 alvo.write(linha3)31 alvo.write("\n")32
33 print "E finalmente, fechamos."34 alvo.close()
Chame com python ex16.py ex16.txt
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 40 / 60
EI01 - Python
Saída de ex16.py
python ex16.py ex16.txtVamos zerar 'ex16.txt'.Se você não quiser isso, digite CTRL-C (^C).Se você quiser mesmo, digite RETURN.?Abrindo um arquivo...Truncando o arquivo. Goodbye!Agora, vou questionar.linha 1: Lua Mortalinha 2: Rua tortalinha 3: tua portaVou escrever isso no arquivo.E finalmente, fechamos.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 41 / 60
EI01 - Python
Comandos
close � Fecha um arquivo. Como Arquivo->Salvar.. no seu editor.read � Lê o conteúdo de um arquivo. Você pode atribuir o resultado auma variável.readline � Lê apenas uma linha do texto.truncate � Esvazia um arquivo. Cuidado!write('algo') � Escreve "algo"num arquivo.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 42 / 60
EI01 - Python
Mais arquivos (ex17.py)
1 # coding=UTF-8
2 from sys import argv3 from os.path import exists4
5 script, from_file, to_file = argv6
7 print "Copiando de %s para %s" % (from_file, to_file)8
9 # podemos fundir as próximas linhas em 1, como?
10 in_file = open(from_file)11 indata = in_file.read()12
13 print "O arquivo de entrada tem %d bytes" % len(indata)14
15 print "O arquivo de saída existe? %r" % exists(to_file)16 print "Pronto, pressione RETURN para continuar, CTRL-C para abortar."17 raw_input()18
19 out_file = open(to_file, �w�)20 out_file.write(indata)21
22 print "Finalmente, tudo feito."23
24 out_file.close()25 in_file.close()
Chame com python ex17.py ex17.txt ex17a.txtJoão Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 43 / 60
EI01 - Python
Saída de ex17.py
python ex17.py ex17.txt ex17b.txtCopiando de ex17.txt para ex17b.txtO arquivo de entrada tem 30 bytesO arquivo de saída existe? FalsePronto, pressione RETURN para continuar, CTRL-C para abortar.
Finalmente, tudo feito.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 44 / 60
EI01 - Python
Nomes, variáveis, código e funções (ex18.py)
1 # coding=UTF-8
2 # este é como seus exercícios com argv
3 def print_two(*args):4 arg1, arg2 = args5 print "arg1: %r, arg2: %r" % (arg1, arg2)6
7 # ok, este *args realmente não é um ponteiroi
8 def print_two_again(arg1, arg2):9 print "arg1: %r, arg2: %r" % (arg1, arg2)
10
11 # este pede apenas um argumento
12 def print_one(arg1):13 print "arg1: %r" % arg114
15 # este não pede nenhum argumento
16 def print_none():17 print "Eu sou nada."18
19
20 print_two("Zed","Shaw")21 print_two_again("Zed","Shaw")22 print_one("Primeiro!")23 print_none()
Chame com python ex18.pyJoão Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 45 / 60
EI01 - Python
Saída de ex18.py
python ex18.pyarg1: 'Zed', arg2: 'Shaw'arg1: 'Zed', arg2: 'Shaw'arg1: 'Primeiro!'Eu sou nada.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 46 / 60
EI01 - Python
Funções e variáveis(ex19.py)
1 # coding=UTF-8
2 def queijos_e_biscoitos(contador_queijo, caixa_de_biscoitos):3 print "Você tem %d queijos!" % contador_queijo4 print "Você tem %d caixas de biscoito" % caixa_de_biscoitos5 print "Isso é bastante!"6 print "Pegue um pouco.\n"7
8 print "Podemos dar os números diretamente:"9 queijos_e_biscoitos(20, 30)
10
11
12 print "OU, podemos usar variáveis do nosso script:"13 quantidade_de_queijos= 1014 quantidade_de_biscoitos = 5015
16 queijos_e_biscoitos(quantidade_de_queijos, quantidade_de_biscoitos)17
18 print "Podemos inclusive fazer alguma matemática:"19 queijos_e_biscoitos(10 + 20, 5 + 6)20
21
22 print "E podemos também combinar tudo:"23 queijos_e_biscoitos(quantidade_de_queijos + 100, quantidade_de_biscoitos + 1000)
Chame com python ex19.pyJoão Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 47 / 60
EI01 - Python
Saída de ex19.py
python ex19.pyPodemos dar os números diretamente:Você tem 20 queijos!Você tem 30 caixas de biscoitoIsso é bastante!Pegue um pouco.
OU, podemos usar variáveis do nosso script:Você tem 10 queijos!Você tem 50 caixas de biscoitoIsso é bastante!Pegue um pouco.
Podemos inclusive fazer alguma matemática:Você tem 30 queijos!Você tem 11 caixas de biscoitoIsso é bastante!Pegue um pouco.
E podemos também combinar tudo:Você tem 110 queijos!Você tem 1050 caixas de biscoitoIsso é bastante!Pegue um pouco.
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 48 / 60
EI01 - Python
Funções e arquivos(ex20.py)
1 # coding=UTF-8
2 from sys import argv3
4 script, input_file = argv5
6 def print_all(f):7 print f.read()8
9 def rewind(f):10 f.seek(0)11
12 def print_a_line(line_count, f):13 print line_count, f.readline()14
15 current_file = open(input_file)16
17 print "Primeiro imprimimos o arquivo completo:\n"18 print_all(current_file)19
20 print "vamos rebobinar, como uma fita."21 rewind(current_file)22
23 print "vamos imprimir 3 linhas:"24 current_line = 125 print_a_line(current_line, current_file)26
27 current_line = current_line + 128 print_a_line(current_line, current_file)29
30 current_line += 131 print_a_line(current_line, current_file)
Chame com python ex20.py ex20.txt
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 49 / 60
EI01 - Python
Saída de ex20.py ex20.txt
python ex20.py ex20.txtPrimeiro imprimimos o arquivo completo:
Lua MortaRua tortatua porta
vamos rebobinar, como uma fita.vamos imprimir 3 linhas:1 Lua Morta
2 Rua torta
3 tua porta
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 50 / 60
EI01 - Python
Funções que retornam resultados(ex21.py)
1 # coding=UTF-8
2 def soma(a, b):3 print "SOMANDO %d + %d" % (a, b)4 return a + b5
6 def subtrai(a, b):7 print "SUBTRAINDO %d - %d" % (a, b)8 return a - b9
10 def multiplica(a, b):11 print "MULTIPLICANDO %d * %d" % (a, b)12 return a * b13
14 def divide(a, b):15 print "DIVIDINDO %d / %d" % (a, b)16 return a / b17
18
19 print "Vamos fazer alguns cálculos !"20
21 idade = soma(30, 5)22 altura = subtrai(78, 4)23 peso = multiplica(90, 2)24 qi = divide(100, 2)25
26 print "Idade: %d, Altura: %d, Peso: %d, QI: %d" % (idade, altura, peso, qi)27
28
29 # Um quebra-cabeça com algum crédito.
30 print "Aqui está o quebra-cabeças."31
32 oque = soma(idade, subtrai(altura, multiplica(peso, divide(qi, 2))))33
34 print "Isso resulta: ", oque, "Você pode refazer na mão"
Chame com python ex21.py
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 51 / 60
EI01 - Python
Saída de ex21.py
python ex21.pyVamos fazer alguns cálculos !SOMANDO 30 + 5SUBTRAINDO 78 - 4MULTIPLICANDO 90 * 2DIVIDINDO 100 / 2Idade: 35, Altura: 74, Peso: 180, QI: 50Aqui está o quebra-cabeças.DIVIDINDO 50 / 2MULTIPLICANDO 180 * 25SUBTRAINDO 74 - 4500SOMANDO 35 + -4426Isso resulta: -4391 Você pode refazer na mão
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 52 / 60
EI01 - Python
If(ex29.py)
1 # coding=UTF-8
2 pessoas = 203 gatos = 304 cachorros = 155
6 if pessoas < gatos:7 print "Gatos demais! O mundo está condenado"8
9 if pessoas > gatos:10 print "Não muitos gatos! O mundo está salvo"11
12 if pessoas < cachorros:13 print "O mundo está inundado!"14
15 if pessoas > cachorros:16 print "O mundo está seco!"17
18 cachorros += 519
20 if pessoas >= cachorros:21 print "Pessoas são mais numerosas que ou iguais a cachorros."22
23 if pessoas <= cachorros:24 print "Pessoas são menos numerosas que ou iguais a cachorros."25
26 if pessoas == cachorros:27 print "Pessoas são cachorros."
Chame com python ex29.pyJoão Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 53 / 60
EI01 - Python
If e else(ex30.py)
1 # coding=UTF-8
2 pessoas = 303 carros = 404 caminhao = 155
6
7 if carros > pessoas:8 print "Deveríamos pegar carros."9 elif carros < pessoas:
10 print "Não deveríamos pegar carros."11 else:12 print "Não podemos decidir"13
14 if caminhao > carros:15 print "Tem muito caminhão."16 elif caminhao < carros:17 print "talvez devessemos pegar o caminhão."18 else:19 print "Ainda não podemos decidir."20
21 if pessoas > caminhao:22 print "Ok, vamos pegar o caminhão."23 else:24 print "Legal, vamos ficar em casa."
Chame com python ex30.pyJoão Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 54 / 60
EI01 - Python
Tomando decisões(ex31.py)
1 # coding=UTF-8
2 print "Você entra numa sala escura com duas portas. Você vai pela porta #1 ou porta #2?"3
4 porta = raw_input("> ")5
6 if porta == "1":7 print "Tem um urso gigante aqui comendo uma torta. O que você faz?"8 print "1. Pega a torta."9 print "2. Grita para o urso."
10
11 urso = raw_input("> ")12
13 if urso == "1":14 print "O urso come sua cabeça. Bom trabalho!"15 elif urso == "2":16 print "O urso come suas pernas. Bom trabalho!"17 else:18 print "Bem, fazer %s provavelmente é a melhor opção. O urso foge." % bear19
20 elif porta == "2":21 print "Você fita o abismo infinito da retina de Cthulhu."22 print "1. Morangos."23 print "2. Prendedores de roupas amarelos."24 print "3. Escuta música."25
26 insanidade = raw_input("> ")27
28 if insanidade == "1" or insanidade == "2":29 print "Seu corpo sobrevive. Bom trabalho!"30 else:31 print "A insanidade leva seus olhos a um poço de lama. Bom trabalho!"32
33 else:34 print "Você cambaleia e cai numa faca e morre. Bom trabalho!"
Chame com python ex31.py
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 55 / 60
EI01 - Python
Loops e listas(ex32.py)
1 # coding=UTF-8
2 o_contador = [1, 2, 3, 4, 5]3 frutas = [�maça�, �laranja�, �pera�, �damasco�]4 cambio = [1, �pennies�, 2, �dimes�, 3, �quarters�]5
6 # o primeiro tipo de loop percorre uma lista
7 for numero in o_contador:8 print "Este é o contador %d" % numero9
10 # como acima
11 for fruta in frutas:12 print "Uma fruta do tipo: %s" % fruta13
14 # também podemos percorrer listas mistas
15 # note que temos que usar %r pois não sabemos o que vem
16 for i in cambio:17 print "Obtive %r" % i18
19 # também podemos construir listas, primeiro começando com uma vazia
20 elementos = []21
22 # depois usamos a função range para contar de 0 até 5
23 for i in range(0, 6):24 print "Adiconando %d na lista." % i25 # append é uma função que a lista entende
26 elementos.append(i)27
28 # nagora podemos imprimir
29 for i in elementos:30 print "Elemento era: %d" % i
Chame com python ex32.pyJoão Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 56 / 60
EI01 - Python
Loops While(ex33.py)
1 # coding=UTF-8
2 i = 03 numeros = []4
5 while i < 6:6 print "No topo i é %d" % i7 numeros.append(i)8
9 i = i + 110 print "Números agora: ", numeros11 print "Em baixo i é %d" % i12
13
14 print "Os números: "15
16 for num in numeros:17 print num
Chame com python ex33.py
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 57 / 60
EI01 - Python
Fazendo coisas com listas(ex38.py)
1 # coding=UTF-8
2 dez_coisas = "Peras Laranjas Corvos Telefone Luz Sal"3
4 print "Espere! Não tem dez coisas nesta lista. Vamos consertar."5
6 coisa = dez_coisas.split(� �)7 mais_coisas = ["Dia", "Noite", "Cantor", "Disco", "Milho", "Banana", "Garota", "Menino"]8
9 while len(coisa) != 10:10 prox_coisa = mais_coisas.pop()11 print "Acrescentando: ", prox_coisa12 coisa.append(prox_coisa)13 print "Temos %d itens agora." % len(coisa)14
15 print "Vamos lá: ", coisa16
17 print "Vamos fazer algo com isso."18
19 print coisa[1]20 print coisa[-1] # legal!
21 print coisa.pop()22 print ��.join(coisa) # O quê?
23 print �#�.join(coisa[3:5]) # ótimo!
Chame com python ex38.pyJoão Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 58 / 60
EI01 - Python
Saída de ex38.py
python ex38.pyEspere! Não tem dez coisas nesta lista. Vamos consertar.Acrescentando: MeninoTemos 7 itens agora.Acrescentando: GarotaTemos 8 itens agora.Acrescentando: BananaTemos 9 itens agora.Acrescentando: MilhoTemos 10 itens agora.Vamos lá: ['Peras', 'Laranjas', 'Corvos', 'Telefone', 'Luz', 'Sal','Menino', 'Garota', 'Banana', 'Milho']
Vamos fazer algo com isso.LaranjasMilhoMilhoPeras Laranjas Corvos Telefone Luz Sal Menino Garota BananaTelefone#Luz
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 59 / 60
EI01 - Python
FIM
João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 60 / 60