computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/aula7t.pdf · cada repetição dos comandos é...

61
Computação 1 Aula 7 Teórica professor: Leonardo Carvalho

Upload: phamminh

Post on 25-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Computação 1

Aula 7 Teóricaprofessor: Leonardo Carvalho

Page 2: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Ementa2

Page 3: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Ementa

Introdução ao ambiente de programação Python

Funções

- declaração

- parâmetros

- valor de retorno

- chamada de funções

Manipulação de dados na programação

- Tipos de dados básicos

- Variáveis, atribuição, escopo de variáveis

- Tipos compostos: Tupla, String, Listas, Dicionários

Estruturas de Controle

- Estrutura Condicional (if, if else, elif)

- Laço com qualquer condição de parada (while)

- Laço com número pré-determinado de repetições (for)

Matrizes

Programa principal (main), entrada e saída simples (input e print).

3

Page 4: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Ementa

Introdução ao ambiente de programação Python

Funções

- declaração

- parâmetros

- valor de retorno

- chamada de funções

Manipulação de dados na programação

- Tipos de dados básicos

- Variáveis, atribuição, escopo de variáveis

- Tipos compostos: Tupla, String, Listas, Dicionários

Estruturas de Controle

- Estrutura Condicional (if, if else, elif)

- Laço com qualquer condição de parada (while)

- Laço com número pré-determinado de repetições (for)

Matrizes

Programa principal (main), entrada e saída simples (input e print).

4

Page 5: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Relembrando aula passada

5

Page 6: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

def quadrado(L):'''Desenha um quadrado de lado L.'''turtle.forward(L)turtle.left(90)turtle.forward(L)turtle.left(90)turtle.forward(L)turtle.left(90)turtle.forward(L)turtle.left(90)

# Testandoquadrado(100)turtle.up()turtle.goto(120, 130)turtle.down()quadrado(200)

Quadrado

6

Page 7: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

def triangulo(L):'''Desenha um triangulo equilatero de lado L.'''turtle.forward(L)turtle.left(120)turtle.forward(L)turtle.left(120)turtle.forward(L)turtle.left(120)

# Testandotriangulo(100)turtle.up()turtle.goto(120, 130)turtle.down()triangulo(200)

Triângulos

7

Page 8: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Crie uma função que desenha um pentágono.

# Testandopentagono(100)turtle.up()turtle.goto(120, 130)turtle.down()pentagono(150)

Exercício 1

8

Page 9: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

def pentagono(L):'''Desenha um pentagono de lado L.'''turtle.forward(L)turtle.left(360.0/5)turtle.forward(L)turtle.left(360.0/5)turtle.forward(L)turtle.left(360.0/5)turtle.forward(L)turtle.left(360.0/5)turtle.forward(L)turtle.left(360.0/5)

Exercício 1

9

Page 10: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Crie uma função que desenha um hexágono.

# Testandohexagono(100)turtle.up()turtle.goto(130, 130)turtle.down()hexagono(150)

Exercício 2

10

Page 11: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

def hexagono(L):'''Desenha um hexagono de lado L.'''turtle.forward(L)turtle.left(360.0/6)turtle.forward(L)turtle.left(360.0/6)turtle.forward(L)turtle.left(360.0/6)turtle.forward(L)turtle.left(360.0/6)turtle.forward(L)turtle.left(360.0/6)turtle.forward(L)turtle.left(360.0/6)

Exercício 2

11

Page 12: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

E se...

Se quisermos desenhar um decágono?

Se quisermos desenhar um dodecágono?

Se quisermos desenhar um polígono regular de n lados?

12

Page 13: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Crie uma função que recebe uma sequência contendo três pontos e desenha um pequeno círculo em cada ponto.

# TestandoP = (20, 30), (50, 120), (-35, 80)desenha_pontos(P)Q = (-120, -40), (150, 40), (-80, 70)turtle.color('red')desenha_pontos(Q)

Exercício 3

13

Page 14: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

def desenha_pontos(P):'''Desenha três pontos de uma sequência P.'''turtle.up()turtle.goto(P[0])turtle.dot()turtle.goto(P[1])turtle.dot()turtle.goto(P[2])turtle.dot()

Exercício 3

14

Page 15: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Crie uma função que recebe uma sequência contendo cinco pontos e desenha um pequeno círculo em cada ponto.

# TestandoP = (20, 30), (50, 120), (-35, 80), (100, 200), (130, 90)turtle.color('blue')desenha_pontos(P)Q = (-120, -40), (150, 40), (-80, 70), (0, 0), (140, -120)turtle.color('red')desenha_pontos(Q)

Exercício 4

15

Page 16: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

def desenha_pontos(P):'''Desenha cinco pontos de uma sequência P.'''turtle.up()turtle.goto(P[0])turtle.dot()turtle.goto(P[1])turtle.dot()turtle.goto(P[2])turtle.dot()turtle.goto(P[3])turtle.dot()turtle.goto(P[4])turtle.dot()

Exercício 4

16

Page 17: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

E se...17

Page 18: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Mais pontos

Crie uma função que recebe uma sequência contendo 15 pontos e desenha um pequeno círculo em cada ponto.

def desenha_pontos(P):

'''Desenha quinze pontos

de uma sequência P.'''

turtle.up()

turtle.goto(P[0])

turtle.dot()

turtle.goto(P[1])

turtle.dot()

turtle.goto(P[2])

turtle.dot()

turtle.goto(P[3])

turtle.dot()

turtle.goto(P[4])

turtle.dot()

turtle.goto(P[5])

turtle.dot()

turtle.goto(P[6])

turtle.dot()

turtle.goto(P[7])

turtle.dot()

turtle.goto(P[8])

turtle.dot()

turtle.goto(P[9])

turtle.dot()

turtle.goto(P[10])

turtle.dot()

turtle.goto(P[11])

turtle.dot()

turtle.goto(P[12])

turtle.dot()

turtle.goto(P[13])

turtle.dot()

turtle.goto(P[14])

turtle.dot()

18

Page 19: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Mais pontos

Crie uma função que recebe uma sequência contendo 200 pontos e desenha um pequeno círculo em cada ponto.

19

Page 20: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Mais pontos

Crie uma função que recebe uma sequência contendo 1000000 pontos e desenha um pequeno círculo em cada ponto.

20

Page 21: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

n pontos

Crie uma função que recebe uma sequência contendo um número qualquer de pontos e desenha um pequeno círculo em cada ponto.

21

Page 22: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

estrutura de repetição

22

Page 23: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

for x in sequencia: ...#Faz algo com x

23

Page 24: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exemplo

def desenha_pontos(P):'''Desenha todos os pontos de uma sequência P.'''turtle.up()for x in P:

turtle.goto(x)turtle.dot()

24

Page 25: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Não precisa ser x

def desenha_pontos(P):'''Desenha todos os pontos de uma sequência P.'''turtle.up()for y in P:

turtle.goto(y)turtle.dot()

25

Page 26: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Não precisa ser x

def desenha_pontos(P):'''Desenha todos os pontos de uma sequência P.'''turtle.up()for ponto in P:

turtle.goto(ponto)turtle.dot()

26

Page 27: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Não precisa ser x

def desenha_pontos(P):'''Desenha todos os pontos de uma sequência P.'''turtle.up()for tuts_tuts_tuts_tuts in P:

turtle.goto(tuts_tuts_tuts_tuts)turtle.dot()

27

Page 28: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Funciona com qualquer sequência

...L = 3, 1, 'bigorna'for v in L:

turtle.write(v, font=('Arial', 20, 'normal'))turtle.forward(50)

...

28

Page 29: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Funciona com qualquer sequência

...for v in 3, 1, 'bigorna':

turtle.write(v, font=('Arial', 20, 'normal'))turtle.forward(50)

...

29

Page 30: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Funciona com qualquer sequência

...for v in range(7):

turtle.write(v, font=('Arial', 20, 'normal'))turtle.forward(50)

...

30

Page 31: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

Função que recebe uma lista L e um valor x e retorna os valores de L que são menores do que x.

>>> L = 32, 10, 95, 74, 89, 5, 19, 59

>>> menores(L, 30)[10, 5, 19]>>> menores(L, 80)[32, 10, 74, 5, 19, 59]>>> menores(L, 0)[]

31

Page 32: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

def menores(L, x):'''Retorna uma lista com os valores de L menores do que x.'''res = []for v in L:

if v < x:res.append(v)

return res

32

Page 33: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

33

Page 34: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

34

Dando nome aos bois

Ao utilizar um for estamos criando um loop

Cada repetição dos comandos é chamada de iteração

Dizemos também que estamos iterando sobre uma sequência

De forma mais geral o for funciona com objetos iteráveis

for v in iterável:

comandos

Page 35: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

35

Objetos iteráveis

Até agora só vimos três tipos de objetos iteráveis: tuplas, listas e strings

Outros objetos iteráveis: conjuntos, dicionários e geradores

Só veremos conjuntos e dicionários em outra aula

Não vamos aprender a criar geradores, mas vamos usar alguns

Page 36: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

36

Geradores

Um gerador funciona como uma sequência, a diferença é que os dados não ficam todos guardados na memória.

Exemplo:

>>> a = range(10)>>> b = xrange(10) # xrange é um gerador!>>> a[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]>>> bxrange(10)

Page 37: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

37

Geradores

for x in xrange(10, 30):turtle.forward(x)turtle.left(5)

Page 38: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

38

Comparação range vs xrange

Compare o tempo de execução entre os comandos:

>>> a = range(100000000)

>>> b = xrange(100000000)

Page 39: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Falando em range

Outra forma de percorrer os itens de uma sequência:

...L = 'eita', 'vixe', 'oxe'for i in range(len(L)):

turtle.write(L[i], font=('Arial', 14, 'normal'))turtle.forward(50)

...

39

Page 40: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Falando em range

Esta forma é útil quando queremos usar também os índices

...L = 'eita', 'vixe', 'oxe'for i in range(len(L)):

r = str(i) + ': ' + L[i]turtle.write(r, font=('Arial', 14, 'normal'))turtle.forward(100)

...

40

Page 41: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

Crie uma função que recebe uma string L e um caractere x e retorna uma lista com todas as posições de x em L

>>> posicoes('Quem eh essa ai, papai?', 'a')[11, 13, 18, 20]>>> posicoes('Ta cheio de assunto, hein?', ' ')[2, 8, 11, 20]>>> posicoes('Ta cheio de assunto, hein?', 'e')[5, 10, 22]

41

Page 42: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

def posicoes(L, x):'''Retorna uma lista com todas as posicoes onde x aparece em L.'''res = []for i in range(len(L)):

if L[i] == x:res.append(i)

return res

42

Page 43: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

Crie uma função que recebe uma sequência L de valores e retorna uma lista contendo a diferença entre valores consecutivos de L.

>>> diferencas([1, 2, 5, 7, 9, 8])[1, 3, 2, 2, -1]>>> diferencas([18, 5, 9, 10, 30])[-13, 4, 1, 20]>>> diferencas([7, 8, 8, 8, 9, 9, 3, 3, 3])[1, 0, 0, 1, 0, -6, 0, 0]

43

Page 44: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

def diferencas(L):'''Retorna a diferenca entre valores consecutivos de L.'''res = []for i in range(1, len(L)):

res.append(L[i] - L[i-1])return res

44

Page 45: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

Crie uma função que recebe um número inteiro n e retorna uma lista contendo n valores entre 0.0 e 1.0, igualmente espaçados

>>> sequencia(3)[0.0, 0.5, 1.0]>>> sequencia(6)[0.0, 0.2, 0.4, 0.6, 0.8, 1.0]>>> sequencia(20)[0.0, 0.05263157894736842, 0.10526315789473684, 0.15789473684210525, 0.21052631578947367, 0.2631578947368421, 0.3157894736842105, 0.3684210526315789, 0.42105263157894735, 0.47368421052631576, 0.5263157894736842, 0.5789473684210527, 0.631578947368421, 0.6842105263157895, 0.7368421052631579, 0.7894736842105263, 0.8421052631578947, 0.8947368421052632, 0.9473684210526315, 1.0]

45

Page 46: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

def sequencia(n):'''Retorna uma sequencia de n valores de 0.0 a 1.0.'''res = []for i in range(n):

res.append(i/(n-1.0))return res

46

Page 47: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

Crie uma função que recebe um número inteiro n e retorna uma lista contendo n pontos da curva dada por

47

Page 48: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

def curva(n):'''Retorna uma lista contendo n pontos da curva (x, y) = (100 sen t, 200 sen 2t)'''res = []for i in range(n):

t = i/(n-1.0)*2*math.pip = 100*math.sin(t), 200*math.sin(2*t)res.append(p)

return res

48

Page 49: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Testando

turtle.color('green')desenha_pontos(curva(50))

P = (20, 30), (50, 120), (-35, 80), (100, 200), (130, 90)turtle.color('blue')desenha_pontos(P)

Q = (-120, -40), (150, 40), (-80, 70)turtle.color('red')desenha_pontos(Q)

49

Page 50: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

Função que recebe um número inteiro n e um número real x e desenha um polígono regular de n lados, cada lado com tamanho x.

poligono(3, 40)

...

poligono(5, 70)

...

poligono(12, 50)

50

Page 51: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

def poligono(n, x):'''Desenha um poligono de n lados cada lado de tamanho x.'''for i in range(n):

turtle.forward(x)turtle.left(360.0/n)

51

E pra que serviu o i?

Page 52: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

def poligono(n, x):'''Desenha um poligono de n lados cada lado de tamanho x.'''for i in range(n):

turtle.forward(x)turtle.left(360.0/n)

52

Pra nada...

Page 53: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Exercício

Não é necessário, mas vamos mandar a tartaruga escrever o i.

def poligono(n, x):'''Desenha um poligono de n lados cada lado de tamanho x.'''for i in range(n):

turtle.write(i)turtle.forward(x)turtle.left(360.0/n)

53

Page 54: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

54

Page 55: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

55

Page 56: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Múltiplas variáveis

56

Se soubermos que uma sequência é composta por pares, podemos então usar duas variáveis no for.

L = (3, 'agua'), (1, 'suco'), (2, 'refrigerante')

res = ''

for i, bebida in L:

res += i*bebida + ' '

...

>>> res

'aguaaguaagua suco refrigeranterefrigerante '

Page 57: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Múltiplas variáveis

57

O mesmo vale para sequências de trios, quádruplas, etc.

V = (30, 20, 'rato'), (100, -80, 'iguana'), (-200, -50, 'tamandua')

for x, y, palavra in V:

turtle.goto(x, y)

turtle.write(palavra)

Page 58: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Unir duas sequências

58

Podemos criar uma sequência que une duas sequências através da função zip:

>>> x = 'Camaro', 'Fuscao', 'Ferrari'

>>> y = 'amarelo', 'preto', 'vermelha'

>>> zip(x, y)

[('Camaro', 'amarelo'), ('Fuscao', 'preto'), ('Ferrari', 'vermelha')]

Page 59: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

Unir duas sequências

59

Isto é útil quando queremos percorrer duas sequências de uma vez só:

>>> x = 'Camaro', 'Fuscao', 'Ferrari'>>> y = 'amarelo', 'preto', 'vermelha'>>> res = ''>>> for carro, cor in zip(x, y):... res += carro + ' ' + cor + ', '... >>> res'Camaro amarelo, Fuscao preto, Ferrari vermelha, '

Page 60: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

enumerate

A função enumerate(L) retorna um gerador que produz pares do tipo (i, L[i])

Podemos usar esta função para acessar os índices sem usar a função range.

...L = 'eita', 'vixe', 'oxe'for i, v in enumerate(L):

r = str(i) + ': ' + vturtle.write(r, font=('Arial', 14, 'normal'))turtle.forward(100)

...

60

Page 61: Computação 1 - dcc.ufrj.brlcarvalho/comp1/slides/Aula7T.pdf · Cada repetição dos comandos é chamada de iteração Dizemos também que estamos iterando sobre uma sequência De

61