[Python] - Matrices.

Iniciado por Meta, 14 Noviembre 2010, 06:24 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

He llegado un poco el tema de las matrices a ver como es.

Ver ejercicios.

Página 196 de este docuemnto PDF. http://marmota.act.uji.es/mtp/pdf/python.pdf

La verdad que no entiendo ni papa.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Karcrack

#1
Necesitas conocimientos sobre matrices.. la matriz identidad es la que tiene todo 0 menos la diagonal que son 1...

http://es.wikipedia.org/wiki/Matriz_identidad
Lo que te pide este ejercicio es que a partir de n saques la matriz Identidad de orden nxn

Meta

Intenté hacer algo como esto:

Código (python) [Seleccionar]
n = int(raw_input('Introduce un entero positivo: '))

M = []
for i in range(n):
    M.append( [0] * n )
    print M

M [0] [0] = 1
print M


Su resultado fue:
CitarIntroduce un entero positivo: 6
[[0, 0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]
[[1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0]]

Menudo disparate.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Karcrack

Yo lo haria asi:
Código (python) [Seleccionar]
while True:
   try:
       n = int(raw_input("[!]Introduce el orden de la matrix: "))
       break;
   except:
       print "[X]Formato incorrecto."
       
M = []
for i in range(n):
   a = [0] * n
   a[i] = 1
   print a         ## Simplemente para mostrarla, en realidad no se ha de mostrar
   M.append(a)

Meta

Me funciona.

Lo hiciste de una manera impresionante hasta el resultado.

Muchuas gracias.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Karcrack

De nada, pero para la proxima tal vez debas dedicarle mas tiempo a un mismo ejercicio, consiguiendolo por ti mismo aprenderas de una forma mas completa ;)

Meta

Si, será eso.
Debo leer y leer más el PDF, porque me olvido con facilidad lo aprendido en el pasado.

También a dedicarme hacer más algorito a mano para luego adaptarlo a programación.

La verda que me cuesta mucho programación yo solo sin profesor ni nada, sólo autodidacta y con el PDF que aparece en mi firma. Desde que coja el truco lo justo me paso a otra lengua a ver que tal.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Gabriela

Pues sí, del mismo PDF que tú llegue a finalizar el capitulo 4 , pero necesariamente debí hacer un stop, y regresar al dos, porque por ausencia de más práctica me olvido. Salvo los ejercicios muy simples, cuando repito los ejercicios, he programado códigos diferentes.

Si te digo, que en un código asigné a una variable tal.. y tal. Estuve más de una hora porque al ejecutarlo  me había equivocado en el nombre de la variable ( error ortográfico) y dale que dale Pyn marcandome error en el mismo lugar. Hasta que me di cuenta de lo que era ( una reverenda tontería) pues pillé buen cabreo.

La variable la llame prEmedio
Y luego al llamarla la llamaba prOmedio. Pues por raro que parezca y debido que no leemos letra a letra, sino el conjunto de significación, ahí estuve fastididada.

Pero nada de decaer, que Pyn es "adorable".

Gabriela.
Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.

Novlucker

Como hacer el código de karcrack más ilegible? :D
Código (python) [Seleccionar]
while True:
   try:
       n = input("[!]Introduce el orden de la matrix: ")
       break;
   except:
       print "[X]Formato incorrecto."

M = [[int(i==e) for i in range(n)] for e in range(n)]
print M


Saludos
Contribuye con la limpieza del foro, reporta los "casos perdidos" a un MOD XD

"Hay dos cosas infinitas: el Universo y la estupidez  humana. Y de la primera no estoy muy seguro."
Albert Einstein

Karcrack

Bonita forma de complicar las cosas Novlucker :laugh:
Pero si no me equivoco con tu metodo de todo-apretado-en-una-linea ( :xD) se hacen el doble de 'vueltas'.. es decir, tu usas un for de mas, para comprobar si es la diagonal... Me equivoco?