python: listas rodrigo de toledo (adaptação do original do prof. claudio esperança)

53
Python: Python: listas listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Upload: internet

Post on 18-Apr-2015

109 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Python:Python:listaslistas

Rodrigo de Toledo(adaptação do original do prof. Claudio Esperança)

Page 2: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Estruturas de dadosEstruturas de dados Maneira de organizar dados de maneira a facilitar seu

acesso Algumas formas são clássicas:

Listas Arrays (vetores e matrizes) Tuplas (registros) Árvores

Linguagens freqüentemente possuem primitivas para construção dessas estruturas de dados

Outras estruturas de dados mais complexas podem ser construídas combinando as estruturas de dados clássicas

Page 3: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Listas em PythonListas em Python São variáveis que podem conter simultaneamente mais

de um valor, inclusive de diferentes tipos lista = [1, 'a', 'Rodrigo', 3.1415]

Na verdade, pode ser vista como uma implementação tanto de listas como de arrays Além de acesso seqüencial, suportam também acesso

direto através de índices

Listas são variedades de seqüências assim como strings e portanto têm APIs semelhantes Podem ser indexadas e fatiadas Podem ser concatenadas (+) e repetidas

Page 4: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Listas em PythonListas em Python

Entretanto, há diferenças importantes entre listas e strings Seqüência genérica X de seqüência de caracteres Elementos de listas podem ser alterados

individualmente mas os de strings, não

Listas constituem o tipo de agregação de dados mais versátil e comum da linguagem Python Podem ser usadas para implementar estruturas de

dados mais complexas como matrizes e árvores, por exemplo

Page 5: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Listas: constantes e índicesListas: constantes e índices Uma constante do tipo lista é escrita entre

colchetes com os elementos separados por vírgula:[] # lista vazia[1,2] # lista com 2 elementos

Os elementos de uma lista podem ser de qualquer tipo, inclusive listas. Ex.:lista = [1, 'a', 'Rodrigo', 3.1415]

Os elementos de uma lista podem ser acessados por índices como strings O primeiro elemento tem índice 0 O último elemento tem índice -1

Page 6: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Listas: constantes e índicesListas: constantes e índices

>>> lista = [1, 'a', 'Rodrigo', 3.1415]

>>> lista [0]

1

>>> lista [2]

'Rodrigo'

>>> lista [3]

3.1415

>>> lista [-1]

3.1415

>>> lista [0] = 2

>>> lista

[2, 'a', 'Rodrigo', 3.1415]

Page 7: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Listas: Concatenação e Listas: Concatenação e RepetiçãoRepetição

O operador + pode ser usado para concatenação e o operador * para repetição>>> lista = [0]*4>>> lista[0, 0, 0, 0]>>> lista = lista + [1]*3>>> lista[0, 0, 0, 0, 1, 1, 1]

Page 8: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Inicializando listasInicializando listas Não é possível atribuir a uma posição

inexistente de uma lista>>> vetor = []>>> vetor [0] = 1Traceback (most recent call last): File "<pyshell#21>", line 1, in -toplevel- vetor [0] = 1IndexError: list assignment index out of range

Se uma lista vai ser usada como um array, isto é, vai conter um número predeterminado de elementos, é conveniente iniciá-la>>> vetor = [0]*10>>> vetor [0] = 3>>> vetor[3, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Page 9: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExemploExemplo

Faça um programa que leia 15 números e os imprima e ordem inversa a qual foram lidos.

lista=[0]*15

i=0while (i<15): lista[i]=input() i+=1

i=1while (i<=15): print lista[-i] i+=1

Page 10: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExercíciosExercícios1. Faça um programa que leia as notas dos 50 alunos de uma turma e diga ao

final quais notas ficaram acima da média da turma.

2. (vetor contador): Faça um programa que leia diversos votos para 100 candidatos (votos entre 0 e 99) e ao final diga qual foi o candidato vencedor (considere que não há empate). Os votos terminam com um número inválido (negativo ou maior que 99). Obs: Altere o programa de modo a considerar a possibilidade de empates.

3. Escreva um programa que leia uma lista de x inteiros seguida de uma lista de y caracteres, criando uma terceira lista que intercale os elementos das duas listas lidas obs1: pergunte ao usuário x e y no início obs2: a lista que for maior deverá ser repetida sequencialmente ao final Exemplo: x=3, y=5, l1 = [1,2,3] e l2 = ['a','b','c','d','e'],

o programa deve computar a lista [1,'a',2,'b',3,'c','d','e']

4. DESAFIO:Faça um programa que leia as informações dos 70 produtos de uma farmácia (código, preço e quantidade em estoque). Em seguida permita ao usuário entrar com código e quantidade que deseja comprar do produto até que seja entrado o código –1. Para cada código entrado diminua a quantidade do estoque (caso tenha o suficiente) se o código for válido, senão imprima mensagem de erro. Ao final da compra, diga o total a ser pago!

Page 11: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Sobre o desafio...Sobre o desafio...

Para realizar o desafio anterior, entender os conceitos de: um único índice para diversos vetores busca do índice

No futuro será mais fácil tratar esse desafio: index() tuplas

Page 12: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Outros exercíciosOutros exercícios

1. Faça um programa que leia um conjunto de notas (nota - tipo inteiro) de 20 alunos (uma nota por aluno) e imprima quantas notas iguais a 0, iguais a 1, iguais a 2, ... e iguais a 10.

2. Faça um programa que leia 100 valores reais da entrada e identifique o valor mais próximo da média. Exemplo supondo quatro valores:2.5 7.5 10.0 4.0média = 6.0 (não deve ser impresso)valor mais próximo da média = 7.5 (resultado a ser impresso)

3. Faça um programa que conte a quantidade de cada uma das letras (sem levar em conta as maiúsculas e minúsculas)

digitadas em um texto (vetor de 26 posições).

Page 13: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Lista de tamanho indefinidoLista de tamanho indefinido

Page 14: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Lista de tamanho indefenidoLista de tamanho indefenido

Às vezes não sabemos em tempo de programação qual deve ser o tamanho da lista (exemplo: “leia 50 notas” ≠ “leia notas até uma negativa”).

Nesse caso a lista deve ir crescendo (ou diminuindo) de acordo com a necessidade.

Precisaremos de: len: para saber tamanho do vetor del: para retirar um elemento da lista append: para acrescentar

Page 15: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Deletando elementosDeletando elementos

O operador del pode ser usado para remover elementos de uma lista

Ex.:>>> lista[11, 22, 33, 'Rodrigo']>>> del lista [2]>>> lista[11, 22, 'Rodrigo']>>> del lista [2]>>> lista[11, 22]

Page 16: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Len, min e maxLen, min e max len (lista) retorna o número de elementos de lista min (lista) e max (lista) retornam o menor/maior

elemento de lista Ex.:

>>> lista = [55, 1, 22, 99, 3, 4]>>> min (lista)1>>> len (lista)6>>> max (lista)99>>> max (['a', 'b', 'c'])'c'

Page 17: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

minmin e e maxmax Na verdade, min e max podem ser usados também

com vários argumentos ao invés de uma lista Ex.:

>>> min (1,2,3,4)1>>> max (3,4,5)5>>> max ([],[1],['a'])['a']

Page 18: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Método APPENDMétodo APPEND append(elemento)

Acrescenta o elemento no fim da lista Observe que a operação altera a lista, e não

simplesmente retorna uma lista modificada Ex.:

>>> lista = [1,2]

>>> lista.append(3)

>>> lista

[1, 2, 3]

Page 19: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExemploExemplo Leia uma sequência de números INTEIROS positivos

terminada por um número NEGATIVO, guardando-os num vetor. Remova do vetor os números PARES. Ao final, imprima o vetor!

lista = []num = input()while (num>=0): lista.append(num) num=input()

i=0while i<len(lista): if lista[i]%2==0: del lista[i] else: i+=1

print lista

Page 20: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExercíciosExercícios1. Faça o programa do jogo: “Acerte os números”.

Inicialmente, leia diversos números inteiros entrados pelo dono da casa de aposta, guardando numa lista.

Termina com número negativo

Em seguida o apostador poderá entrar com vários números para verificar o seu acerto.

Caso acerte um dos números da lista, informe do acerto e diga quantos números faltam acertar.

O programa termina caso o apostador erre 10 vezes ou até ele acertar todos os números.

2. Altere o programa anterior para guardar os números sem que haja repetição, ou seja, caso o dono da casa de apostas tenha entrado com um número que já exista, ignore-o.

3. DESAFIO:Faça um programa que mantenha o estoque do hortifruti Leguminosas. Apresente um menu com as seguintes opções:

(a) inserir novos produtos(b) acrescentar no estoque(c) baixar do estoque(d) listar produtos com estoque baixo(e) listar estoque de todos os produtos(f) sair!

Para cada produto inserido, ler nome, código e quantidade inicial Para acrescentar ou baixar do estoque, ler código e quantidade Quando der baixa no estoque, verificar se não está negativo, nesse caso, avisar ao

usuário que serão baixados apenas a quantidade atual no estoque (zerando esse produto)

“Estoque baixo” significa que há apenas 5 ou menos produtos

Page 21: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Fatias...Fatias...

Page 22: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Listas: fatias (slices)Listas: fatias (slices)

A notação de fatias também pode ser usada, inclusive para atribuição:>>> lista = [1, 'a', 2+3j, ['ab', 'CD']]>>> lista [1:]['a', (2+3j), ['ab', 'CD']]>>> lista [:1][1]>>> lista [1:2]['a']>>> lista [0:-1][1, 'a', (2+3j)]

Lista de lista,veremos isso posteriormente!

Page 23: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Listas: atribuição a fatiasListas: atribuição a fatias(e inserção)(e inserção)

A atribuição a uma fatia requer que o valor atribuído seja uma seqüência (uma lista ou uma string, por exemplo)

A atribuição substitui os elementos da fatia pelos da seqüência (INSERÇÃO)>>> lista = [1, 'y', ['ab', 'CD']]>>> lista [1:1] = ['z']>>> lista[1, 'z', 'y', ['ab', 'CD']]>>> lista [1:3] = [['x']]>>> lista[1, ['x'], ['ab', 'CD']]>>> lista [1:-1]= [2,3,4]>>> lista[1, 2, 3, 4, ['ab', 'CD']]>>> lista [:2] = 'xyz'>>> lista['x', 'y', 'z', 3, 4, ['ab', 'CD']]

Page 24: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Inserindo lista em listaInserindo lista em lista

Também é possível inserir uma variável lista na outra:

>>> var1 = ['a', 'b', 'c', 'd', 'x']

>>> var2 = [6,7]

>>> var1[2:2] = var2

>>> var1

['a', 'b', 6, 7, 'c', 'd', 'x']

Page 25: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Incrementos em FatiasIncrementos em Fatias

É possível usar um terceiro número na notação de fatias designando o incremento Default é 1 , ou seja, toma os elementos de um em

um do menor para o maior índice Pode-se usar qualquer número inteiro diferente de

0 a[0:10:2] retorna uma lista com os 10 primeiros

elementos de a tomados de 2 em 2 (5 elementos, no máximo)

a[5:0:-1] retorna uma lista com os 5 primeiros elementos de a tomados da direita para a esquerda

Obs.: Esta notação só existe nas versões de Python a partir da 2.3

Page 26: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Incrementos em FatiasIncrementos em Fatias

Exemplo>>> a = ['a', 2, 3, 'd', 'x']

>>> a [:3:2]

['a', 3]

>>> a [::-1]

['x', 'd', 3, 2, 'a']

>>> a [3:0:-2]

['d', 2]

Page 27: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Incrementos em FatiasIncrementos em Fatias

Se um incremento de fatia é diferente de 1, uma atribuição à fatia deve ter o mesmo número de elementos:>>> l = [1,2,3,4,5]>>> l [0::2] = ['x','y','z']>>> l['x', 2, 'y', 4, 'z']>>> l [0::2] = [6,7]

Traceback (most recent call last): File "<pyshell#17>", line 1, in -toplevel- l [0::2] = [6,7]ValueError: attempt to assign sequence of size 2 to extended slice of size 3

Page 28: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist sort(cmp=None, key=None, reverse=False)

Ordena a lista Os argumentos são opcionais. Por default, a lista é

ordenada crescentemente Ex.:

>>> lista = [9,8,7,1,4,2]>>> lista.sort()>>> lista[1, 2, 4, 7, 8, 9]

Page 29: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist sort(cmp=None, key=None, reverse=False)

É possível obter a ordem inversa, passando True para o argumento reverse

Ex.:>>> lista = [9,8,7,1,4,2]>>> lista.sort(reverse=True)>>> lista[9, 8, 7, 4, 2, 1]

OBS.: A notação acima permite passar um argumento sem especificar os anteriores, mas poderíamos ter escrito:>>> lista = [9,8,7,1,4,2]>>> lista.sort(None,None,True)>>> lista[9, 8, 7, 4, 2, 1]

Page 30: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExercícioExercício Em uma universidade a fila do bandejão funciona da

seguinte forma: As filas começam a se formar pela manhã. Até às 11h, horário

de abertura do restaurante, alunos podem guardar lugar para no máximo 3 outros colegas, depois disso a fila é congelada.

Faça um programa que: Leia uma fila de alunos (matrícula) até que seja entrada uma

matrícula negativa (às 11h). Imprima a fila inicial. Para cada aluno, pergunte para quantas pessoas ele está

guardando lugar na fila e se ele irá continuar na fila (para esta pergunta ele deverá responder ‘S’ ou ‘N’). Leia a matrícula dos alunos a serem inseridos e remova aqueles que vão sair da fila.

Imprima a fila final. Use uma única fila!!!

Page 31: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

forforinin

rangerange

Page 32: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Operador “in”Operador “in”

Permite saber se um elemento pertence a uma lista

Serve também para strings Ex.:

>>> lista = [1, 'a', 'bc']>>> 1 in listaTrue>>> 2 in listaFalse>>> 'b' in listaFalse>>> 'b' in lista[2]True>>> 'bc' in 'abcd'True

Page 33: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

A função A função rangerange Retorna uma progressão aritmética de inteiros numa lista Forma geral: range (início, parada, incremento)

início (opcional) é o primeiro valor a ser gerado (default: 0) parada é o limite da progressão: a progressão termina no

último valor antes de parada incremento (opcional) é o passo da progressão (default:1)

Ex.:>>> range(3)[0, 1, 2]>>> range(2,5,2)[2, 4]>>> range(5,2,-2)[5, 3]

>>> range (2,5,-2)[]>>> range (5,2,2)[]

Page 34: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Comando Comando forfor Assim como while, o comando for é um comando

de repetição (loop) Permite iterar sobre os elementos de uma lista Forma geral: for var in lista : comandos

Os comandos são repetidos para cada valor de lista Durante a repetição, var possui o valor corrente da lista

Uma grande utilidade da função range é construir a lista de iteração

Ex.:>>>for i in range(1,7): print i,

1 2 3 4 5 6

Page 35: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Quando usar for ou while?Quando usar for ou while? Duas situações distintas que precisam de comando de

repetição: Quando se deseja repetir um bloco de comandos uma

quantidade de vezes pré-determinada (antes de chegar ao bloco). USO DO FOR É IDEAL!

Quando não se sabe a quantidade de vezes antes de entrar no bloco de comandos, havendo apenas uma condição para o fim do loop. USO DO WHILE É IDEAL!

Na verdade existe uma terceira situação: Quando há pelo menos duas condições para término da

repetição, uma determinada e outra indeterminada Exemplo:

Faça a leitura das notas de no máximo 30 alunos de uma turma (a entrada termina se for digitada uma nota negativa ou se já foram entradas as 30 notas). Ao final diga a média da turma.

Rever exercícios, propor o uso de for...

Page 36: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExemploExemplo

Condição pre-determinada: Leia a nota de 30 alunos de uma turma

Condição indeterminada: Combinados:

Page 37: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExercíciosExercícios

Faça um programa que leia código de produto, preço e quantidade vendida de 1881 produtos e informe os 10 produtos (código e preço) responsáveis pelo maior faturamento.

Modifique o programa anterior para que a leitura termine com código inválido (código válido varia de 10000 até 99999, inclusive os extremos). Ou seja, não necessariamente haverá 1881 produtos.

Page 38: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist count(elemento)

Retorna quantas vezes o elemento aparece na lista Ex.:

>>> [1,2,3,1,2,3,4].count(1)2

extend(lista2) Acrescenta os elementos de lista2 ao final da lista OBS.: Altera a lista ao invés de retornar a lista

alterada Ex.:

>>> lista=[1,2]>>> lista.extend([3,4])>>> lista[1, 2, 3, 4]

Page 39: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist index(elemento)

Retorna o índice da primeira ocorrência de elemento na lista

Um erro ocorre se elemento não consta da lista Ex.:

>>> lista = [9,8,33,12]>>> lista.index(33)2>>> lista.index(7)

Traceback (most recent call last): File "<pyshell#3>", line 1, in -toplevel- lista.index(7)ValueError: list.index(x): x not in list

OBS: use in para ter certeza que o elemento existe na lista!

Page 40: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist insert(indice, elemento)

insere elemento na lista na posição indicada por índice

Ex.:>>> lista = [0,1,2,3]>>> lista.insert(1,'dois')>>> lista[0, 'dois', 1, 2, 3]

Como o extend, altera a lista ao invés de retornar a lista

O valor retornado é None! Atribuições a fatias servem para a mesma finalidade

mas são menos legíveis>>> lista = [0,1,2,3]>>> lista [1:1] = ['dois']>>> lista[0, 'dois', 1, 2, 3]

Page 41: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist pop(índice)

Remove da lista o elemento na posição índice e o retorna

Se índice não for mencionado, é assumido o último Ex.:

>>> lista = [1,2,3,4]>>> lista.pop()4>>> lista[1, 2, 3]>>> lista.pop(1)2>>> lista[1, 3]

Page 42: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist remove(elemento)

Remove da lista o primeiro elemento igual a elemento Se não existe tal elemento, um erro é gerado Ex.:

>>> lista = ['oi', 'alo', 'ola']>>> lista.remove('alo')>>> lista['oi', 'ola']>>> lista.remove('oba')

Traceback (most recent call last): File "<pyshell#24>", line 1, in -toplevel- lista.remove('oba')ValueError: list.remove(x): x not in list

OBS: use in para ter certeza que o elemento existe na lista!

Page 43: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Alguns métodos da classe Alguns métodos da classe listlist reverse()

Inverte a ordem dos elementos da lista Ex.:

>>> lista=[1,2,3]>>> lista.reverse()>>> lista[3, 2, 1]

Page 44: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExercícioExercício Faça um programa para cadastrar os alunos da turma de Python. O programa deverá

apresentar um menu de opções ao usuário contendo: a. inclusão b. exclusão c. listagem geral d. listagem acima nota e. listar aluno f. trocar de nota g. fim

  Regras: Para cadastrar um aluno, deverá ser realizada a leitura de sua matrícula e sua nota. Para excluir um aluno, apenas sua matrícula deverá ser pedida. A listagem geral deverá listar todos os alunos matriculados. A listagem por nota deverá listar todos os alunos acima de uma determinada nota. Listar um aluno significa mostrar a nota de um aluno. Para trocar a nota de um aluno, é necessário apenas a sua matricula e sua nova nota.

Observações: A listagem deverá ser mantida sempre ordenada (dica: insira ordenado durante a leitura). GRANDE DESAFIO: crie uma opção a mais que seria listar alunos por ordem de notas. Crie um

vetor auxiliar contendo os índices dos vetores alunos e notas, para que não seja necessário reordenar os vetores a cada listagem de notas e alunos.

Page 45: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Exercício UPAExercício UPA Faça um programa para controlar o atendimento da emergência de uma

UPA (Unidade Python de Atendimentos). As seguintes regras de precedência devem ser respeitadas toda vez que

há um médico disponível: Todo caso urgente tem precedência máxima e serão atendidos em ordem de

chegada. Caso não haja ninguém na fila de urgência:

Pessoas acima de 65 anos devem ser atendidas, a prioridade deve ser por idade (o mais velho primeiro).

Crianças de até 8 anos por ordem de chegada. Mas atenção, enquanto houver mais de 5 crianças, então elas têm precedência em relação aos idosos (para evitar tumulto).

Demais pessoas devem ser atendidas em ordem de chegada.

O seu programa deve manter quatro filas (urgentes, idosos, crianças e demais). As lista guardam a identidade dos pacientes (valor inteiro). No caso dos idosos, deve-se usar uma lista auxiliar com as idades.

O programa deverá manter o seguinte menu: (a) Registro de paciente:

Ler identidade, idade e urgência (‘s’ ou ‘n’). Encaminhar o paciente para a fila correta.

(b) Proximo paciente: Baseado nas regras acima, dizer quem é o próximo (mostrar identidade) e retirá-lo da

fila (c) Troca de plantão:

Imprimir as quatro filas, total de atendimentos e sair do programa

Page 46: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Exercício nomesExercício nomes Faça um programa que leia uma série de nomes completos (termina

quando for inserido um nome vazio). Em seguida, o programa deverá dizer para cada primeiro nome diferente, quantas vezes ele apareceu.

Ex: Entrada:

OTAVIO HENRIQUE FLAESCHEN OLIVEIRA PAULO EDUARDO ANDRADE RODRIGUES DA SILVA PAULO FELIPE NUNES DE LIMA OTAVIO SECKLER MACHADO MATHEUS SOARES DA SILVA NICOLAS D AURIA OCTAVIO LACERDA DE ALMEIDA PAULA ALVES BESSA PAULO RICARDO MORAIS SHOR MATHEUS GALLUZZI MALAFAIA

Saída: MATHEUS 2 NICOLAS 1 OCTAVIO 1 OTAVIO 2 PAULA 1 PAULO 3

Page 47: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

MatrizesMatrizes Exemplo: Calcule as médias das turmas de uma escola e, ao

final, exiba as notas dos alunos da turma com a maior média.

Para representar os dados do problema descrito acima poderíamos usar tantos vetores quanto fosse o número de turmas existentes no colégio.

Porém, seria ideal uma estrutura de dados que armazenasse todas as notas de todas as turmas, e que pudesse ser referenciada pelo conjunto, ou pelo conjunto das notas de uma turma, ou por cada nota individualmente: Notas

Exemplo:notas[4]

[3]=7.5;

0 5,0 3,0 8,0 .......... 9,5

1 7,3 2,2 5,6 .......... 8,0

2 5,7 1,8 6,4 ........... 5,9

3 2,4 4,9 6,0 .......... 3,8

4 10,0 9,5 3,0 .......... 4,0

0 1 2 ......... 49

Page 48: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

MatrizesMatrizes Listas podem ser usadas para guardar matrizes Uma matriz é um tipo de dado usado para

representar uma certa quantidade de valores homogêneos de natureza bidimensional (na verdade, podem ser multidimensionais). Podemos imaginar uma matriz como sendo uma lista, onde cada elemento dessa lista é também uma lista.

Logo, para referenciarmos um elemento em uma matriz precisamos de dois índices: o primeiro para selecionar a lista (linha) e o segundo para selecionar o elemento da lista previamente selecionada (coluna).

Exemplo: notas[4][3]=7.5

Exemplo:notas[4]

[3]=7.5;

Page 49: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

MatrizesMatrizes Percorrendo matrizes:

São necessárias duas estruturas de repetição aninhadas (while ou for) Por exemplo, a estrutura de repetição mais externa percorrerá as

linhas da matriz, enquanto a estrutura de repetição mais interna percorrerá os elementos (colunas) da linha corrente.

Exemplo:notas = [[5,6,7],[9,8,7],[10,9,8]]for i in range(3): for j in range (3): print notas[i][j]

Inicializando uma matriz: Por exemplo, podemos criar uma matriz-identidade de 3x3 com o

código:m = []for i in range(3): m.append([0]*3) m[i][i]=1

.

Page 50: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExercícioExercício Escreva um programa para computar o produto de duas

matrizes m1 e m2. Seu programa deve começar lendo os tamanhos das matrizes e verificando se são de tamanhos compatíveis para multiplicação. Em seguida faça a leitura preechendo os valores das matrizes m1 e m2. Finalmente faça o cálculo matemático, imprimindo a matriz final no formato tradicional (linhas e colunas alinhadas, use /t).

Page 51: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Exercícios MatrizExercícios Matriz Uma pista de Kart permite 10 voltas para cada um dos 6 corredores.

Faça um programa que leia todos os tempos em segundos e guarde em uma matriz 6 x 10. Ao final diga: De quem foi a melhor volta da prova e em que volta Classificação final em ordem (1º o campeão) Qual foi o piloto mais regular? Qual foi a volta com a média mais rápida?

Uma editora quer saber o relacionamento entre seus autores. Faça um programa que: Dado o total de livros da editora (lido no início), leia para cada livro da

editora, o nome dos autores. Cada livro pode ter mais de um autor Para facilitar, basta guardar o primeiro nome Lista terminada por linha vazia Não precisa ler o nome do livro

Mantenha uma lista de autores e quantidade de livros escritos. Mantenha uma matriz de inteiros com a relação de autorias. Observe que

essa matriz é simétrica e sua diagonal é igual a lista do item anterior. Ao final, imprima:

Quais autores escreveram mais livros juntos Dado um autor, com quais autores ele nunca escreveu

Page 52: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

Exercício Matriz (e funções)Exercício Matriz (e funções) Faça um programa que gere um jogo do tipo "caça-palavras". O programa

deverá inicializar uma matriz 6x6 com letras minúsculas em ordem alfabética por coluna (tabela 1) (caso não haja mais letras minúsculas para preencher a matriz, deve-se voltar à letra ‘a’). A seguir o programa deverá ler o conjunto de informações para montar o caça-palavras composto por:

Uma palavra de até 6 caracteres A linha inicial A coluna inicial O sentido (1=p/ cima; 2=p/ baixo; 3=diagonal p/Nordeste; 4=diagonal

p/Suldeste; 5=p/ esquerda; 6=p/direita, 7=diagonal p/Noroeste, 8= diagonal p/Sudoeste)

A leitura das palavras termina com uma palavra vazia. Para cada palavra lida, o programa deverá colocá-la na matriz de acordo com o sentido. Caso a palavra não caiba na posição e direção definida, esta deverá ser ignorada e uma mensagem de erro deverá ser emitida. (crie uma função para cada sentido)

Exemplo:

Page 53: Python: listas Rodrigo de Toledo (adaptação do original do prof. Claudio Esperança)

ExercíciosExercícios Escreva um programa para computar o

triângulo de Pascal até a linha n, onde n é um valor inteiro positivo lido da linha de comando Lembre-se que o elemento na i-ésima linha e j-

ésima coluna do triângulo de Pascal contém o número de combinações de i elementos j a j

O triângulo deve ser posto numa lista onde o i-ésimo elemento é uma lista com a i-ésima linha do triângulo

Ex:Quantas linhas? 7[[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1], [1, 5, 10, 10, 5, 1], [1, 6, 15, 20, 15, 6, 1]]