aula 15 - organizando os dados com listas

38
Introdução a Algoritmos e Linguagens de Programação Apresentação Luiz Augusto de M. Morais Aula 15 | Organizando os dados com listas

Upload: luiz-augusto-macedo-morais

Post on 18-Dec-2014

602 views

Category:

Education


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Aula 15 - Organizando os dados com listas

Introdução a Algoritmos e

Linguagens de Programação

ApresentaçãoLuiz Augusto de M. Morais

Aula 15 | Organizando os dados com listas

Page 2: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Roteiro

●Vários dados numa única variável●Listas se comportam como strings●Listas têm particularidades●Usando o interpretador

Listas

●Entendendo o problema●Maior placar●Separando os nomes e placares●Os três primeiros●Colocando na ordem certa●Quem ganhou?

Campeonato de futebol freestyle

Page 3: Aula 15 - Organizando os dados com listas

Listas

Vários dadosnuma única variável

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 4: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Vários dados numa única variável

fruta1 = 'pera'

fruta2 = 'uva'

fruta3 = 'maça'

print(fruta1)

print(fruta2)

print(fruta3)

E se fossem 10 frutas??

Page 5: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Vários dados numa única variável

frutas = ['pera', 'uva', 'maça', 'melão', 'manga', 'abacaxi', 'morango', 'caju', 'melancia', 'tomate']

for fruta in frutas:

print(fruta)Tudo isso em apenas 4 linhas!!

E com apenas uma variável

Page 6: Aula 15 - Organizando os dados com listas

Listas

Listas se comportamcomo strings

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 7: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Listas se comportam como strings

frutas_vermelhas = ['maça', 'morango', 'tomate']

frutas_amarelas = ['pera', 'melão', 'manga', 'caju']

frutas = frutas_vermelhas + frutas_amarelas

print(frutas[0])

print(frutas[-1])

print(len(frutas))

Page 8: Aula 15 - Organizando os dados com listas

Listas

Listas têmparticularidades

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 9: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Listas têm particularidades

notas = [9.2, 5.6, 7.9, 4.3, 5]

notas[0] = 6

notas.append(5.4)

notas.extend([1, 2, 3])

notas.sort()

print(notas)

lista_mista = [1, 5.6, True, 'Olá, mundo!', [1, 2]]

Podemos atribuir valores

Podemos adicionar valores

Podemos incorporar listas

Podemos ordenar elementos

Listas podem conter diferentes tipos de dados

Inclusive outras listas

Page 10: Aula 15 - Organizando os dados com listas

Listas

Usando o interpretador

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 11: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Usando o Interpretador 1/2

>>> carros = ['Ferrari', 'Gol', 'Fusca']>>> for carro in carros:... print(carro)...FerrariGolFusca>>> carros[1]'Gol'>>> carros[-1]'Fusca'

Page 12: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Usando o Interpretador 2/2

>>> carros = ['Ferrari', 'Gol', 'Fusca']>>> motos = ['Biz', 'CB500']>>> veiculos = carros + motos>>> print(veiculos)['Ferrari', 'Gol', 'Fusca', 'Biz', 'CB500']>>> veiculos[0] = 'Ônibus'>>> marinhos = ['Barco', 'Lancha']>>> veiculos.extend(marinhos)>>> veiculos.append('Tanque de Guerra')>>> print(veiculos)['Ônibus', 'Gol', 'Fusca', 'Biz', 'CB500', 'Barco','Lancha', 'Tanque de Guerra']

Page 13: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Entendendoo problema

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 14: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Entendendo o problema

Como os estudantes do curso IALP são bons de bola, resolvemos organizar um campeonato de futebol freestyle.

Nós já estamos com as pontuações dos jogadores.

O problema é que muita gente participou e, assim, fica difícil saber quem ganhou.

Page 15: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Maior placar

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 16: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Maior placar

Seu objetivo é desenvolver um programa que extraia o placar dos jogadores de um arquivo e depois diga quem obteve a maior pontuação.

Page 17: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Maior placar

maior_placar = 0

resultado = open('resultado.txt')

for placar in resultado:

if float(placar) > maior_placar:

maior_placar = float(placar)

resultado.close()

print('O maior placar foi: %1.1f' % maior_placar)

Converte algo para ponto flutuante

Page 18: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Test Drive

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 19: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Separandoos nomes e placares

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 20: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Separando os nomes e placares

O programa anterior não funcionou. O que será que aconteceu de errado?

Nome PlacarAdênio 8.9Carlos 3.6Edmarques 7.3Dênis 3.0

Tentamos converter a linha toda para float.

Temos que separar os nomes dos placares!

Page 21: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Usando o interpretador

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 22: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Usando o Interpretador

>>> help(split)>>> frase = 'Meu nome é Luiz'>>> palavras = frase.split()>>> print(palavras)['Meu', 'nome', 'é', 'Luiz']>>> nome, placar = 'Luiz 10'.split()>>> print(nome)Luiz>>> print(placar)10

Page 23: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Separando os nomes e placares

maior_placar = 0

resultado = open('resultado.txt')

for linha in resultado:

nome, placar = linha.split()

if float(placar) > maior_placar:

maior_placar = float(placar)

resultado.close()

print('O maior placar foi: %1.1f' % maior_placar)

Divide uma string

Page 24: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Test Drive

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 25: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Os três primeiros

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 26: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Os três primeiros

Ok, já temos o maior placar, mas temos três medalhas.

Modifique o programa para que ele exiba os três primeiros colocados.

Page 27: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Os três primeiros

placares = []

resultado = open('resultado.txt')

for linha in resultado:

nome, placar = linha.split()

placares.append(float(placar))

resultado.close()

print('Os três maiores placares foram:')

print('1) %1.1f' % placares[0])

print('2) %1.1f' % placares[1])

print('3) %1.1f' % placares[2])

Adiciona um elemento na lista

Cria uma lista vazia

Page 28: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Test Drive

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 29: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Colocando naordem certa

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 30: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Colocando na ordem certa

Ôpa! Tem alguma coisa errada com o resultado.

Como o segundo lugar pode ter menos pontos que o terceiro?

1) 8.92) 3.63) 7.3

Alguém lembrou de ordenar os valores desta lista?

Lembre-se: o método sort() ordena na ordem crescente.

Page 31: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Colocando na ordem certa

placares = []

resultado = open('resultado.txt')

for linha in resultado:

nome, placar = linha.split()

placares.append(float(placar))

resultado.close()

placares.sort(reverse=True)

print('Os três maiores placares foram:')

print('1) %1.1f' % placares[0])

print('2) %1.1f' % placares[1])

print('3) %1.1f' % placares[2])

Ordenando a lista em ordem decrescente

Page 32: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Test Drive

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 33: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Quem ganhou?

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 34: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Quem ganhou?

Ôba, já temos os resultados dos vencedores.

1) 9.22) 8.93) 8.8

Espera um minuto. Mas cadê os nomes dos vencedores???

Cadê ovencedor, mano?!

Cadê ovencedor, mano?!

Page 35: Aula 15 - Organizando os dados com listas

Campeonato de futebol freestyle

Perguntas Idiotas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Page 36: Aula 15 - Organizando os dados com listas

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

Perguntas Idiotas

●Quando devo usar listas?●Por que sort é pra ordenar e não sortear??●Posso fazer mais coisas com listas?

Page 37: Aula 15 - Organizando os dados com listas

●Listas●Métodos:

● sort● append● extend

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES

O que aprendemos hoje?

Page 38: Aula 15 - Organizando os dados com listas

Referências

UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETO HERMES

DOWNEY, Allen. Think Python: How to Think Like a Computer Scientist.Needham: Green Tea Press, 2008.

SWEIGART, Al. Invent Your Own Computer Games with Python.2. ed. [S. l. : s. n.]. 2010.