Download - 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
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
Listas
Vários dadosnuma única variável
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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??
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
Listas
Listas se comportamcomo strings
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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))
Listas
Listas têmparticularidades
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
Listas
Usando o interpretador
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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'
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']
Campeonato de futebol freestyle
Entendendoo problema
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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.
Campeonato de futebol freestyle
Maior placar
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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.
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
Campeonato de futebol freestyle
Test Drive
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Campeonato de futebol freestyle
Separandoos nomes e placares
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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!
Campeonato de futebol freestyle
Usando o interpretador
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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
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
Campeonato de futebol freestyle
Test Drive
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Campeonato de futebol freestyle
Os três primeiros
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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.
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
Campeonato de futebol freestyle
Test Drive
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Campeonato de futebol freestyle
Colocando naordem certa
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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.
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
Campeonato de futebol freestyle
Test Drive
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
Campeonato de futebol freestyle
Quem ganhou?
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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?!
Campeonato de futebol freestyle
Perguntas Idiotas
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
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?
●Listas●Métodos:
● sort● append● extend
UNIVERSIDADE ESTADUAL DA PARAÍBA | PROJETOHERMES
O que aprendemos hoje?
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.