Estruturas de Informação I - Aula 1
Python! e rápido!
João Araujo Ribeiro
[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 - Python
Nesta 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 da
linguagem
Os programas que implementam podem ser escritos em qualquer
linguagem, 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
:
# coding=UTF-8
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
1
2
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 novo
Eu 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
2
3
# coding=UTF-8
# Um comentário serve para você ler seu programa depois.
# Qualquer coisa após # é ignorado por python.
4
5
6
print "Eu poderia codificar assim." # e o comentário
# após é ignorado
7
8
9
10
# Você também pode usar um comentário para "desabilitar"
# ou comentar um pedaço do código:
# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# coding=UTF-8
print "Eu vou contar minhas galinhas:"
print "Pintadas", 25 + 30 / 6
print "Assadas", 100 - 25 * 3 % 4
print "Agora vou contar os ovos:"
print 3 + 2 + 1 - 5 + 4 % 2 - 1 / 4 + 6
print "É verdade que 3 + 2 < 5 - 7?"
print 3 + 2 < 5 - 7
print "Qual o valor de 3 + 2?", 3 + 2
print "Qual o valor de 5 - 7?", 5 - 7
print "Oh, por isso é False."
print
print
print
print
"Que tal mais"
"É maior?", 5 > -2
"É maior ou igual?", 5 >= -2
"É 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.py
Eu vou contar minhas galinhas:
Pintadas 30
Assadas 97
Agora vou contar os ovos:
7
É verdade que 3 + 2 < 5 - 7?
False
Qual o valor de 3 + 2? 5
Qual o valor de 5 - 7? -2
Oh, 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, divida
por 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 e
resta 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 ordem
que 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 dos
nú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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# coding=UTF-8
carros = 100
espaco_em_um_carro = 4.0
pilotos = 30
passageiros = 90
carros_sem_piloto = carros - pilotos
carros_pilotados = pilotos
capacidade_dos_carros = carros_pilotados * espaco_em_um_carro
media_de_passageiros_por_carro = passageiros / carros_pilotados
print
print
print
print
print
print
"Existem", carros, "carros disponíveis."
"Existem somente", pilotos, "pilotos disponíveis."
"vamos ter", carros_sem_piloto, "carros vazios hoje."
"Podemos transportar", capacidade_dos_carros, "pessoas hoje."
"Temos", passageiros, "Para transportar hoje"
"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.py
Existem 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 hoje
Temos 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# coding=UTF-8
meu_nome = Zed A. Shaw
minha_idade = 35 # não minto
minha_altura = 174 # cm
meu_peso = 80 # kg
meus_olhos = Azuis
meus_dentes = Brancos
meu_cabelo = Castanho
print
print
print
print
print
"Vamos falar sobre %s." % meu_nome
"Ele tem %d cm de altura." % minha_altura
"Ele pesa %d quilos." % meu_peso
"Ele possui olhos %s e cabelos %s." % (meus_olhos, meu_cabelo)
"Seus dentes são normalmente %s, dependendo do café." % meus_dentes
# Esta linha é problemática, tente escrevê-la como está
print "Se eu somo %d, %d, e %d obtenho %d." % (
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.py
Vamos 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# coding=UTF-8
x = "Existem %d tipos de pessoas." % 10
binario= "binário"
nao = "não"
y = "Aquelas que sabem %s e aquelas que %s sabem." % (binario, nao)
print x
print y
print "Eu digo: %r." % x
print "Eu também digo: %s." % y
hilario = False
avaliacao_da_piada = "Essa piada não é engraçada?! %r"
print avaliacao_da_piada % hilario
w = "Este é o lado esquerdo de..."
e = "uma string com um lado direito."
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.py
Existem 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?! False
Este é 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# coding=UTF-8
print "Batatinha quando nasce"
print "se esparrama pelo %s." % chão
print "." * 10 # o que isso faz?
end1 = "C"
end2 = "h"
end3 = "e"
end4 = "e"
end5 = "s"
end6 = "e"
end7 = "B"
end8 = "u"
end9 = "r"
end10 = "g"
end11 = "e"
end12 = "r"
# repare a vírgula no final. Tente removê-la e veja o que acontece
print end1 + end2 + end3 + end4 + end5 + end6,
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.py
Batatinha quando nasce
se 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
2
3
4
5
6
7
8
9
10
11
12
13
# coding=UTF-8
formatador = "%r %r %r %r"
print formatador % (1, 2, 3, 4)
print formatador % ("um", "dois", "três", "quatro")
print formatador % (True, False, False, True)
print formatador % (formatador, formatador, formatador, formatador)
print formatador % (
"O 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
22 / 60
EI01 - Python
Saída de ex08.py
$python ex07.py
1 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 4
um dois três quatro
True False False True
%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s
O 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
2
3
4
5
6
7
8
9
10
11
12
13
14
# coding=UTF-8
# Aqui temos algo estranho, lembre de digitar exatamente.
dias = "Seg Ter Qua Qui Sex Sab Dom"
meses = "Jan\nFev\nMar\nAbr\nMai\nJun\nJul\nAgo"
print "Eis os dias: ", dias
print "Eis os meses: ", meses
print """
Algo está acontecendo aqui.
Com as três aspas.
Somos capazes de digitar tanto quanto quisermos.
Mesmo 4 ou 5, 6 linhas....
"""
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 Dom
Eis os meses: Jan
Fev
Mar
Abr
Mai
Jun
Jul
Ago
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# coding=UTF-8
gato_tabulado = "\tTenho tabulação."
gato_persa = "Sou uma divisão\nem uma linha."
gato_backslash = "Eu sou \\ um \\ gato."
gato_gordo = """
Vou fazer uma lista:
\t* Comida de gato
\t* Peixes
\t* Brinquedo\n\t* Grama
"""
print
print
print
print
gato_tabulado
gato_persa
gato_backslash
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ão
em 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
2
3
while True:
for i in ["/","-","|","\\","|"]:
print "%s\r" % i,
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
29 / 60
EI01 - Python
Perguntando coisas (ex11.py)
1
2
3
4
5
6
7
8
9
10
# coding=UTF-8
print "Qual a sua idade?",
idade = raw_input()
print "Qual a sua altura?",
altura = raw_input()
print "Qual seu peso?",
peso = raw_input()
print "Então, você tem %r anos, possui %r cm e %r quilos." % (
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? 50
Qual a sua altura? 186
Qual seu peso? 86
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
31 / 60
EI01 - Python
Outra forma (ex12.py)
1
2
3
4
5
6
7
# coding=UTF-8
idade = raw_input("Qual a sua idade? ")
altura = raw_input("Qual a sua altura? ")
peso = raw_input("Quanto você pesa? ")
print "Então, você tem %r anos, possui %r cm e %r quilos." % (
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
2
3
4
5
6
7
8
9
# coding=UTF-8
from sys import argv
script, primeiro, segundo, terceiro = argv
print
print
print
print
"O script se chama:", script
"Sua primeira variável é:", primeiro
"Sua segunda variável é:", segundo
"Sua terceira variável é:", terceiro
Chame com
python 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ês
O script se chama: ex13.py
Sua primeira variável é: um
Sua segunda variável é: dois
Sua 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# coding=UTF-8
from sys import argv
script, user_name = argv
prompt = > print
print
print
likes
"Olá %s, eu sou o script %s." % (user_name, script)
"Gostaria de te fazer algumas perguntas."
"Você gosta de mim, %s?" % user_name
= raw_input(prompt)
print "Onde você mora %s?" % user_name
moradia = raw_input(prompt)
print "Qual é o tipo do seu computador?"
computador = raw_input(prompt)
print """
Bom, então você respondeu %r sobre gostar de mim.
Você mora em %r.
E você tem um computador %r.
""" % (likes, moradia, computador)
Chame com
python 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ão
Olá João, eu sou o script ex14.py.
Gostaria de te fazer algumas perguntas.
Você gosta de mim, João?
> Sim
Onde você mora João?
> Rio
Qual é 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# coding=UTF-8
from sys import argv
script, filename = argv
txt = open(filename)
print "Aqui está seu arquivo %r:" % filename
print txt.read()
print "Digite o nome do arquivo novamente:"
arquivo_novamente = raw_input("> ")
txt_novamente = open(arquivo_novamente)
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 torta
Lua morta
Tua porta
Chame com
python 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.txt
Aqui está seu arquivo 'ex15.txt':
Rua torta
Lua morta
Tua porta
Digite o nome do arquivo novamente:
> ex15.txt
Rua torta
Lua morta
Tua porta
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
39 / 60
EI01 - Python
Lendo e escrevendo (ex16.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# coding=UTF-8
from sys import argv
script, filename = argv
print "Vamos zerar %r." % filename
print "Se você não quiser isso, digite CTRL-C (^C)."
print "Se você quiser mesmo, digite RETURN."
raw_input("?")
print "Abrindo um arquivo..."
alvo = open(filename, w)
print "Truncando o arquivo. Goodbye!"
alvo.truncate()
print "Agora, vou questionar."
linha1 = raw_input("linha 1: ")
linha2 = raw_input("linha 2: ")
linha3 = raw_input("linha 3: ")
print "Vou escrever isso no arquivo."
alvo.write(linha1)
alvo.write("\n")
alvo.write(linha2)
alvo.write("\n")
alvo.write(linha3)
alvo.write("\n")
print "E finalmente, fechamos."
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.txt
Vamos 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 Morta
linha 2: Rua torta
linha 3: tua porta
Vou 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 a
uma 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# coding=UTF-8
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print "Copiando de %s para %s" % (from_file, to_file)
# podemos fundir as próximas linhas em 1, como?
in_file = open(from_file)
indata = in_file.read()
print "O arquivo de entrada tem %d bytes" % len(indata)
print "O arquivo de saída existe? %r" % exists(to_file)
print "Pronto, pressione RETURN para continuar, CTRL-C para abortar."
raw_input()
out_file = open(to_file, w)
out_file.write(indata)
print "Finalmente, tudo feito."
out_file.close()
in_file.close()
Chame com python ex17.py ex17.txt ex17a.txt
Joã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.txt
Copiando de ex17.txt para ex17b.txt
O arquivo de entrada tem 30 bytes
O arquivo de saída existe? False
Pronto, 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# coding=UTF-8
# este é como seus exercícios com argv
def print_two(*args):
arg1, arg2 = args
print "arg1: %r, arg2: %r" % (arg1, arg2)
# ok, este *args realmente não é um ponteiroi
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
# este pede apenas um argumento
def print_one(arg1):
print "arg1: %r" % arg1
# este não pede nenhum argumento
def print_none():
print "Eu sou nada."
print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("Primeiro!")
print_none()
Chame com python ex18.py
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
45 / 60
EI01 - Python
Saída de ex18.py
python ex18.py
arg1: '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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# coding=UTF-8
def queijos_e_biscoitos(contador_queijo, caixa_de_biscoitos):
print "Você tem %d queijos!" % contador_queijo
print "Você tem %d caixas de biscoito" % caixa_de_biscoitos
print "Isso é bastante!"
print "Pegue um pouco.\n"
print "Podemos dar os números diretamente:"
queijos_e_biscoitos(20, 30)
print "OU, podemos usar variáveis do nosso script:"
quantidade_de_queijos= 10
quantidade_de_biscoitos = 50
queijos_e_biscoitos(quantidade_de_queijos, quantidade_de_biscoitos)
print "Podemos inclusive fazer alguma matemática:"
queijos_e_biscoitos(10 + 20, 5 + 6)
print "E podemos também combinar tudo:"
queijos_e_biscoitos(quantidade_de_queijos + 100, quantidade_de_biscoitos + 1000)
Chame com python ex19.py
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
47 / 60
EI01 - Python
Saída de ex19.py
python ex19.py
Podemos dar os números diretamente:
Você tem 20 queijos!
Você tem 30 caixas de biscoito
Isso é bastante!
Pegue um pouco.
OU, podemos usar variáveis do nosso script:
Você tem 10 queijos!
Você tem 50 caixas de biscoito
Isso é bastante!
Pegue um pouco.
Podemos inclusive fazer alguma matemática:
Você tem 30 queijos!
Você tem 11 caixas de biscoito
Isso é bastante!
Pegue um pouco.
E podemos também combinar tudo:
Você tem 110 queijos!
Você tem 1050 caixas de biscoito
Isso é 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# coding=UTF-8
from sys import argv
script, input_file = argv
def print_all(f):
print f.read()
def rewind(f):
f.seek(0)
def print_a_line(line_count, f):
print line_count, f.readline()
current_file = open(input_file)
print "Primeiro imprimimos o arquivo completo:\n"
print_all(current_file)
print "vamos rebobinar, como uma fita."
rewind(current_file)
print "vamos imprimir 3 linhas:"
current_line = 1
print_a_line(current_line, current_file)
current_line = current_line + 1
print_a_line(current_line, current_file)
current_line += 1
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.txt
Primeiro imprimimos o arquivo completo:
Lua Morta
Rua torta
tua 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# coding=UTF-8
def soma(a, b):
print "SOMANDO %d + %d" % (a, b)
return a + b
def subtrai(a, b):
print "SUBTRAINDO %d - %d" % (a, b)
return a - b
def multiplica(a, b):
print "MULTIPLICANDO %d * %d" % (a, b)
return a * b
def divide(a, b):
print "DIVIDINDO %d / %d" % (a, b)
return a / b
print "Vamos fazer alguns cálculos !"
idade = soma(30, 5)
altura = subtrai(78, 4)
peso = multiplica(90, 2)
qi = divide(100, 2)
print "Idade: %d, Altura: %d, Peso: %d, QI: %d" % (idade, altura, peso, qi)
# Um quebra-cabeça com algum crédito.
print "Aqui está o quebra-cabeças."
oque = soma(idade, subtrai(altura, multiplica(peso, divide(qi, 2))))
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.py
Vamos fazer alguns cálculos !
SOMANDO 30 + 5
SUBTRAINDO 78 - 4
MULTIPLICANDO 90 * 2
DIVIDINDO 100 / 2
Idade: 35, Altura: 74, Peso: 180, QI: 50
Aqui está o quebra-cabeças.
DIVIDINDO 50 / 2
MULTIPLICANDO 180 * 25
SUBTRAINDO 74 - 4500
SOMANDO 35 + -4426
Isso 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# coding=UTF-8
pessoas = 20
gatos = 30
cachorros = 15
if pessoas < gatos:
print "Gatos demais! O mundo está condenado"
if pessoas > gatos:
print "Não muitos gatos! O mundo está salvo"
if pessoas < cachorros:
print "O mundo está inundado!"
if pessoas > cachorros:
print "O mundo está seco!"
cachorros += 5
if pessoas >= cachorros:
print "Pessoas são mais numerosas que ou iguais a cachorros."
if pessoas <= cachorros:
print "Pessoas são menos numerosas que ou iguais a cachorros."
if pessoas == cachorros:
print "Pessoas são cachorros."
Chame com python ex29.py
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
53 / 60
EI01 - Python
If e else(ex30.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# coding=UTF-8
pessoas = 30
carros = 40
caminhao = 15
if carros > pessoas:
print "Deveríamos pegar carros."
elif carros < pessoas:
print "Não deveríamos pegar carros."
else:
print "Não podemos decidir"
if caminhao > carros:
print "Tem muito caminhão."
elif caminhao < carros:
print "talvez devessemos pegar o caminhão."
else:
print "Ainda não podemos decidir."
if pessoas > caminhao:
print "Ok, vamos pegar o caminhão."
else:
print "Legal, vamos ficar em casa."
Chame com python ex30.py
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
54 / 60
EI01 - Python
Tomando decisões(ex31.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# coding=UTF-8
print "Você entra numa sala escura com duas portas. Você vai pela porta #1 ou porta #2?"
porta = raw_input("> ")
if porta == "1":
print "Tem um urso gigante aqui comendo uma torta. O que você faz?"
print "1. Pega a torta."
print "2. Grita para o urso."
urso = raw_input("> ")
if urso == "1":
print "O urso come sua cabeça. Bom trabalho!"
elif urso == "2":
print "O urso come suas pernas. Bom trabalho!"
else:
print "Bem, fazer %s provavelmente é a melhor opção. O urso foge." % bear
elif porta == "2":
print "Você fita o abismo infinito da retina de Cthulhu."
print "1. Morangos."
print "2. Prendedores de roupas amarelos."
print "3. Escuta música."
insanidade = raw_input("> ")
if insanidade == "1" or insanidade == "2":
print "Seu corpo sobrevive. Bom trabalho!"
else:
print "A insanidade leva seus olhos a um poço de lama. Bom trabalho!"
else:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# coding=UTF-8
o_contador = [1, 2, 3, 4, 5]
frutas = [maça, laranja, pera, damasco]
cambio = [1, pennies, 2, dimes, 3, quarters]
# o primeiro tipo de loop percorre uma lista
for numero in o_contador:
print "Este é o contador %d" % numero
# como acima
for fruta in frutas:
print "Uma fruta do tipo: %s" % fruta
# também podemos percorrer listas mistas
# note que temos que usar %r pois não sabemos o que vem
for i in cambio:
print "Obtive %r" % i
# também podemos construir listas, primeiro começando com uma vazia
elementos = []
# depois usamos a função range para contar de 0 até 5
for i in range(0, 6):
print "Adiconando %d na lista." % i
# append é uma função que a lista entende
elementos.append(i)
# nagora podemos imprimir
for i in elementos:
print "Elemento era: %d" % i
Chame com python ex32.py
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
56 / 60
EI01 - Python
Loops While(ex33.py)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# coding=UTF-8
i = 0
numeros = []
while i < 6:
print "No topo i é %d" % i
numeros.append(i)
i = i + 1
print "Números agora: ", numeros
print "Em baixo i é %d" % i
print "Os números: "
for num in numeros:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# coding=UTF-8
dez_coisas = "Peras Laranjas Corvos Telefone Luz Sal"
print "Espere! Não tem dez coisas nesta lista. Vamos consertar."
coisa = dez_coisas.split( )
mais_coisas = ["Dia", "Noite", "Cantor", "Disco", "Milho", "Banana", "Garota", "Menino"]
while len(coisa) != 10:
prox_coisa = mais_coisas.pop()
print "Acrescentando: ", prox_coisa
coisa.append(prox_coisa)
print "Temos %d itens agora." % len(coisa)
print "Vamos lá: ", coisa
print "Vamos fazer algo com isso."
print
print
print
print
print
coisa[1]
coisa[-1] # legal!
coisa.pop()
.join(coisa) # O quê?
#.join(coisa[3:5]) # ótimo!
Chame com python ex38.py
João Araujo Ribeiro (UERJ)
Estruturas de Informação I
EstrInf
58 / 60
EI01 - Python
Saída de ex38.py
python ex38.py
Espere! Não tem dez coisas nesta lista. Vamos consertar.
Acrescentando: Menino
Temos 7 itens agora.
Acrescentando: Garota
Temos 8 itens agora.
Acrescentando: Banana
Temos 9 itens agora.
Acrescentando: Milho
Temos 10 itens agora.
Vamos lá: ['Peras', 'Laranjas', 'Corvos', 'Telefone', 'Luz', 'Sal',
'Menino', 'Garota', 'Banana', 'Milho']
Vamos fazer algo com isso.
Laranjas
Milho
Milho
Peras Laranjas Corvos Telefone Luz Sal Menino Garota Banana
Telefone#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
Download

Aula 1 - Python! e rápido! - João Araujo