1.
matriz
=
[[
1
,
2
,
3
],[
4
,
5
,
6
],[
7
,
8
,
9
]]
Vamos ver como podemos visualizar os elementos de uma matriz quadrada qualquer. A questão essencial que temos que ter em conta é que, havendo duas dimensões, temos que criar dois ciclos, um dentro do outro,em que cada um deles responsável por percorrer de modo ordenado cada uma das dimensões. Vejamos o caso mais simples, ou seja, mostrar todos os elementos.
01.
def
mostra_por_linhas(matriz):
02.
“””Indexação pelo conteúdo.”””
03.
for
linha
in
matriz:
04.
for
coluna
in
linha:
05.
print
“
%
3d
”
%
coluna,
06.
print
07.
08.
09.
def
mostra_por_linhas(matriz):
10.
“””Indexação pela posição.”””
11.
for
pos_linha
in
range(len(matriz)):
12.
for
pos_coluna
in
range(len(matriz[
0
])):
13.
print
“
%
3d
”
%
matriz[pos_linha][pos_coluna],
14.
print
O que têm estes dois programas de diferente? O simples facto de, no primeiro, percorremos a matriz usando o seu conteúdo, enquanto que, no segundo, usamos as posições. E de comum, que pontos devem ser salientados??? Essencialmente o modo como fazemos a impressão: o comando print usa uma marca de formatação (%3d) e termina com uma vírgula. É este último facto que permite colocar os elementos de uma linha todos ao lado uns dos outros. O segundo print sem argumento serve apenas para mudar de linha.
Admitamos agora que queremos mostrar a matriz por colunas e não por linhas.
1.
def
mostra_por_colunas(matriz):
2.
""" AKO transposta. Indexação pelo conteúdo."""
3.
for
pos_coluna
in
range(len(matriz[
0
])):
4.
for
pos_linha
in
range(len(matriz)):
5.
print
"%3d"
%
matriz[pos_linha][pos_coluna],
6.
print
Bastou trocar a ordem: o primeiro ciclo trata das colunas, enquanto o segundo ciclo (mais interior) as linhas!
E se forem as matrizes triangulares superior e inferior??
01.
def
mostra_tri_sup(matriz):
02.
"""Matriz triangular superior.Indexação pela posição."""
03.
for
pos_linha
in
range(len(matriz)):
04.
print
' '
*
3
*
pos_linha,
# 3 por causa do %2d
05.
for
pos_coluna
in
range(pos_linha,len(matriz[
0
])):
06.
print
"%2d"
%
matriz[pos_linha][pos_coluna],
07.
print
08.
09.
def
mostra_tri_inf(matriz):
10.
"""Matriz triangular superior.Indexação pela posição."""
11.
for
pos_linha
in
range(len(matriz)):
12.
for
pos_coluna
in
range(
0
,pos_linha
+
1
):
13.
print
"%2d"
%
matriz[pos_linha][pos_coluna],
14.
print
Atente-se como tratamos de mostrar de modo conveniente. uma vez mais o comando print é essencial para esse objectivo. Terminamos com a matriz diagonal.
1.
def
mostra_diag_principal(matriz):
2.
""" Mostra diagonal principal."""
3.
for
pos_linha
in
range(len(matriz)):
4.
print
' '
*
3
*
pos_linha,
5.
for
pos_coluna
in
range(
0
,pos_linha
+
1
):
6.
if
pos_linha
=
=
pos_coluna:
7.
print
"%2d"
%
matriz[pos_linha][pos_coluna]
Deixamos ao leitor a tarefa de testar estes programas. Fica também como exercício resolver o problema não de visualizar mas de criar.
Sem comentários:
Enviar um comentário