Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro...

60

Transcript of Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro...

Page 1: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 2: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

Resumo

1 EI01 - Python

João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 2 / 60

Page 3: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 4: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 5: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 6: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 7: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 8: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 9: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 10: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 11: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 12: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 13: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 14: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 15: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 16: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 17: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 18: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 19: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 20: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 21: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 22: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 23: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 24: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 25: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 26: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 27: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 28: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 29: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 30: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 31: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 32: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 33: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 34: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 35: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 36: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 37: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 38: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 39: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 40: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 41: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 42: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 43: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 44: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 45: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 46: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 47: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 48: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 49: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 50: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 51: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 52: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 53: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 54: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 55: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 56: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 57: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 58: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 59: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

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

Page 60: Estruturas de Informação I - Aula 1 - Python! e rápido!estruturasdedados...João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 23 / 60 EI01 - Python Imprimindo mais

EI01 - Python

FIM

João Araujo Ribeiro (UERJ) Estruturas de Informação I EstrInf 60 / 60