Python 05 Listas
Download
Report
Transcript Python 05 Listas
Python:
listas
Rodrigo de Toledo
(adaptação do original do prof. Claudio Esperança)
Estruturas 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
Listas 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
Listas 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
Listas: 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
Listas: 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]
Listas: Concatenação e Repetição
O operador + pode ser usado para concatenação e o
operador * para repetição
>>>
>>>
[0,
>>>
>>>
[0,
lista
lista
0, 0,
lista
lista
0, 0,
= [0]*4
0]
= lista + [1]*3
0, 1, 1, 1]
Inicializando listas
Não é possível atribuir a uma posição inexistente de
uma lista
>>> vetor = []
>>> vetor [0] = 1
Traceback (most recent call last):
File "<pyshell#21>", line 1, in -toplevelvetor [0] = 1
IndexError: 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
>>>
>>>
>>>
[3,
vetor = [0]*10
vetor [0] = 3
vetor
0, 0, 0, 0, 0, 0, 0, 0, 0]
Exemplo
Faça um programa que leia 15 números e os imprima e ordem
inversa a qual foram lidos.
lista=[0]*15
i=0
while (i<15):
lista[i]=input()
i+=1
i=1
while (i<=15):
print lista[-i]
i+=1
Exercícios
1.
2.
3.
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.
(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.
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
4.
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']
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!
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
Outros 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.0
mé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).
Lista de tamanho indefinido
Lista 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
Deletando 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]
Len, 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.:
>>>
>>>
1
>>>
6
>>>
99
>>>
'c'
lista = [55, 1, 22, 99, 3, 4]
min (lista)
len (lista)
max (lista)
max (['a', 'b', 'c'])
min e max
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']
Mé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.:
>>>
>>>
>>>
[1,
lista = [1,2]
lista.append(3)
lista
2, 3]
Exemplo
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=0
while i<len(lista):
if lista[i]%2==0:
del lista[i]
else:
i+=1
print lista
Exercícios
1.
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
Fatias...
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:]
Lista de lista,
['a', (2+3j), ['ab', 'CD']] veremos isso posteriormente!
>>> lista [:1]
[1]
>>> lista [1:2]
['a']
>>> lista [0:-1]
[1, 'a', (2+3j)]
Listas: atribuição a fatias
(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']]
Inserindo 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']
Incrementos 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
Incrementos em Fatias
Exemplo
>>> a = ['a', 2, 3, 'd', 'x']
>>> a
['a',
>>> a
['x',
>>> a
['d',
[:3:2]
3]
[::-1]
'd', 3, 2, 'a']
[3:0:-2]
2]
Incrementos em Fatias
Se um incremento de fatia é diferente de 1, uma
atribuição à fatia deve ter o mesmo número de
elementos:
>>> l
>>> l
>>> l
['x',
>>> l
= [1,2,3,4,5]
[0::2] = ['x','y','z']
2, 'y', 4, 'z']
[0::2] = [6,7]
Traceback (most recent call last):
File "<pyshell#17>", line 1, in -toplevell [0::2] = [6,7]
ValueError: attempt to assign sequence of size 2 to
extended slice of size 3
Alguns métodos da classe list
sort(cmp=None, key=None, reverse=False)
Ordena a lista
Os argumentos são opcionais. Por default, a lista é
ordenada crescentemente
Ex.:
>>>
>>>
>>>
[1,
lista = [9,8,7,1,4,2]
lista.sort()
lista
2, 4, 7, 8, 9]
Alguns métodos da classe list
sort(cmp=None, key=None, reverse=False)
É possível obter a ordem inversa, passando True para o
argumento reverse
Ex.:
>>>
>>>
>>>
[9,
lista = [9,8,7,1,4,2]
lista.sort(reverse=True)
lista
8, 7, 4, 2, 1]
OBS.: A notação acima permite passar um argumento
sem especificar os anteriores, mas poderíamos ter
escrito:
>>>
>>>
>>>
[9,
lista = [9,8,7,1,4,2]
lista.sort(None,None,True)
lista
8, 7, 4, 2, 1]
Exercí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!!!
for
in
range
Operador “in”
Permite saber se um elemento pertence a uma lista
Serve também para strings
Ex.:
>>> lista = [1, 'a', 'bc']
>>> 1 in lista
True
>>> 2 in lista
False
>>> 'b' in lista
False
>>> 'b' in lista[2]
True
>>> 'bc' in 'abcd'
True
A função range
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.:
>>>
[0,
>>>
[2,
>>>
[5,
range(3)
1, 2]
range(2,5,2)
4]
range(5,2,-2)
3]
>>> range (2,5,-2)
[]
>>> range (5,2,2)
[]
Comando for
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
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...
Exemplo
Condição pre-determinada:
Leia a nota de 30 alunos de uma turma
Condição indeterminada:
Combinados:
Exercí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.
Alguns métodos da classe list
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.:
>>>
>>>
>>>
[1,
lista=[1,2]
lista.extend([3,4])
lista
2, 3, 4]
Alguns métodos da classe list
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 -toplevellista.index(7)
ValueError: list.index(x): x not in list
OBS: use in para ter certeza que o elemento existe na lista!
Alguns métodos da classe list
insert(indice, elemento)
insere elemento na lista na posição indicada por índice
Ex.:
>>>
>>>
>>>
[0,
Como o extend, altera a lista ao invés de retornar a
lista
lista = [0,1,2,3]
lista.insert(1,'dois')
lista
'dois', 1, 2, 3]
O valor retornado é None!
Atribuições a fatias servem para a mesma finalidade
mas são menos legíveis
>>>
>>>
>>>
[0,
lista = [0,1,2,3]
lista [1:1] = ['dois']
lista
'dois', 1, 2, 3]
Alguns métodos da classe list
pop(índice)
Remove da lista o elemento na posição índice e o retorna
Se índice não for mencionado, é assumido o último
Ex.:
>>>
>>>
4
>>>
[1,
>>>
2
>>>
[1,
lista = [1,2,3,4]
lista.pop()
lista
2, 3]
lista.pop(1)
lista
3]
Alguns métodos da classe list
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 -toplevellista.remove('oba')
ValueError: list.remove(x): x not in list
OBS: use in para ter certeza que o elemento existe na lista!
Alguns métodos da classe list
reverse()
Inverte a ordem dos elementos da lista
Ex.:
>>>
>>>
>>>
[3,
lista=[1,2,3]
lista.reverse()
lista
2, 1]
Exercí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.
Exercí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:
(b) Proximo paciente:
Ler identidade, idade e urgência (‘s’ ou ‘n’).
Encaminhar o paciente para a fila correta.
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
Exercí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
Exemplo:
notas[4][3]=7.5;
Matrizes
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
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
Exemplo:
notas[4][3]=7.5;
Matrizes
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
Matrizes
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
Exercí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).
Exercí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
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, devese 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:
Exercí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]]