You are on page 1of 5

Matrices

Qu es una matriz para Python y cmo funciona?


En palabras sencillas las matrices en Python es una lista que contiene listas como elementos.

Ejemplo:

Matriz M

1 2 3
2 12 6
= ( )
1 0 3
0 1 0

Cdigo en Python
>>> M = [[1, 2, 3], [2, 12, 6], [1, 0, -3], [0, -1, 0]]

Ilustracin de una matriz en Python

Entonces, si deseamos obtener algn elemento de la matriz operamos de la siguiente manera:

nombre_matriz[nmero_fila][nmero_columna]
>>> M[2][2] #Obtenemos el nmero en la fila 2 columna 2
-3
>>> M[0][1]
2
>>> M[3] #Obtenemos la fila 3 completa como una lista de nmeros
[0, -1, 0]
>>> M[1][3] #Error ndice de la lista fuera de rango. Columna 3 no existe.
Traceback (most recent call last):
File "<pyshell#49>", line 1, in <module>
M[1][3]
IndexError: list index out of range
Creacin de matrices
Se desea una matriz de 3x3 inicializada a ceros:
Recordando el uso del multiplicador en listas
>>> M = [0] >>> M = [0]*3 >>> M = [4]*6
>>> M >>> M >>> M
>>> [0] >>> [0, 0, 0] >>> [4, 4, 4, 4, 4, 4]
Definiendo M
>>> M = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

Manera dinmica (sirve cuando se necesitan matrices muy grandes)


>>> M = []
>>> for i in range(3): #El lmite del for indica la cantidad de filas.
M.append([0]*3) #Agregamos la fila con una cantidad de columnas.
>>> M
>>> [[0, 0, 0], [0, 0, 0], [0, 0, 0]]

Uso del mdulo random para llenar una matriz


Este mdulo genera nmeros pseudo-aleatorios con distintas distribuciones.

Para usar el mdulo random se debe de importar


>>> from random import *

Funciones principales del mdulo random de Python

Funcin Descripcin Ejemplo


Selecciona un >>> randrange(9)
nmero aleatorio >>> 8
randrange(stop) >>> randrange(9)
entre 0 y el stop
>>> 1
indicado.
Selecciona un >>> randrange(10, 90)
nmero aleatorio el >>> 79
randrange(start, stop[,step]) rango entre start y >>> randrange(2, 12, 3)
>>> 5
stop con un salto
opcional de step.
Genera un nmero >>> randint(0,4)
entero pseudo- >>> 0
>>> randint(5,5)
randint(a, b) aleatorio entre a y b
>>> 5
enteros ambos >>> randint(10,90)
incluidos. >>> 23
Selecciona un >>> seq = [1,5,6,2,7]
>>> choice(seq)
nmero al azar de la
choice(seq) >>> 5
secuencia (seq) >>> choice(seq)
dada. >>> 7
Reordena de manera >>> seq = [1,2,3,4,5]
>>> shuffle(seq)
shuffle(list) aleatoria la lista
>>> seq
dada. >>> [4, 1, 3, 2, 5]
Devuelve una lista de >>> seq = [1,2,3,4,5]
largo k con >>> sample(seq, 3)
elementos aleatorios >>> [5, 3, 1]
sample(population, k) >>> sample(range(99), 6)
sin repetir de la >>> [72, 83, 13, 56, 90]
poblacin o set
population.
Devuelve un nmero >>> random()
de punto flotante de >>> 0.740766990686618
>>> random()
random() manera aleatoria >>> 0.8193063781155664
dentro del rango >>> random()
[0.0, 1.0[. >>> 0.18337234328821872

La funcin a utilizar para rellenar una matriz de nmeros ser randint(a ,b). Una forma de
usarla sera la siguiente.

Usando randint(a, b) para rellenar una matriz 3x3 con nmeros entre -100 y 100

Cdigo en Python
from random import *
M = []
for i in range(3):
fila = []
for j in range(3):
fila.append(randint(-100,100))
M.append(fila)
print(M)
Salida del programa
>>> [[33, 4, -99], [-27, -1, -72], [76, 81, -70]]
Visualizacin de matrices
Se desea imprimir una matriz de 3x3 de forma ordenada, sea filas y columnas distinguibles a
simple vista.
Cdigo en Python
from random import *

# Creamos la matriz de 3x3


M = []
for i in range(3):
fila = []
for j in range(3):
fila.append(randint(-100,100))
M.append(fila)

# Desplegamos en pantalla la matriz


for i in range(len(M)): #Nmero de filas
for j in range(len(M[0])): #Nmero de columnas
print(M[i][j], end= )
print()
Salida del programa
>>> 33 4 -99
-27 -1 72
76 81 -70

Dato:
Pruebe remplazar la lnea
print(M[i][j], end=
que se encarga de imprimir el contenido de la matriz por la siguiente:
print(repr(M[i][j]).rjust(4), end=" ")
Nueva salida del programa
>>> 33 4 -99
-27 -1 72
76 81 -70

Ms informacin sobre:
Built-in Functions
- repr()
https://docs.python.org/3.5/library/functions.html#repr
Built-in Types
- str.rjust()
https://docs.python.org/3.5/library/stdtypes.html?highlight=rjust#str.rjust
Ejercicios matrices
Problema 1 Suma de matrices
Hacer un programa en Python que reciba dos matrices A y B de NxM y calcule e imprima por
pantalla su suma C.
Datos:
- C[i][j] = A[i][j] + B[i][j] para todo i<N, j<M,
- N y M son ingresados por el usuario,
- Los valores de la matriz son ingresados por el usuario uno a uno,
- Utilice funciones donde considere necesario.

Problema 2 Campo minado


Escriba un programa en Python en donde el usuario jugara con una matriz de 10x10 que esta
rellena de forma aleatoria con ceros (0) y unos (1). El usuario ingresara una coordenada de la
matriz y el programa devolver si se salv o muri por culpa de la explosin de una mina. El juego
termina cuando el jugador muere, el programa mostrara en pantalla la cantidad de turnos que se
mantuvo vivo y el campo minado en su totalidad.
Datos:
- Cada vez que se inicia un nuevo juego la matriz de minas cambia,
- Se debe de solicitar el nombre del jugador para identificarlo en caso de ganar o morir,
- Los unos (1) indican una porcin del campo minado,
- Los ceros (0) indican una porcin del campo limpio,
- Utilice funciones donde considere necesario.
Reto:
- Cada vez que sobreviva el jugador se le mostrar el campo con una F en la posicin que
escogi para descartarla. El resto del campo debe permanecer oculto bajo la letra M, la
idea es ocultar los ceros y unos.
- Contar la cantidad de no minas (ceros) y cuando el jugador las descubra todas declararlo el
mximo ganador.