Autor Tema: Python numpy y cuadrados mágicos

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

09 Junio, 2021, 06:14 am
Respuesta #10

ingmarov

  • Moderador Global
  • Mensajes: 5,113
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
... Pero la mayoría cree que Python es un gran primer lenguaje de programación, así que el equivocado debo ser yo.

A mi me agrada Paquita la del barrio, no me casaría con ella pero no me cae mal. Quiero decir, es cuestión de gustos. No estás equivocado y tampoco los que gustamos de python. Yo no sé si es mejor comenzar con python, no soy educador de oficio. Supongo que habrá que ver, después de unos años, cómo responden estudiantes que comenzaron programando en C y cómo lo hacen los que comenzaron usando python. En mi caso comencé programando mi calculadora canon en la secundaria, luego la graficadora que tuve en la universidad donde pronto me enseñaron un poco de C.

A ver si Soofíaa nos comenta algo de su nivel de conocimiento en programación y cómo la está pasando con este lenguaje (python).

Saludos
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...

09 Junio, 2021, 10:03 am
Respuesta #11

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 9,697
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Yo empecé a programar con el ordenador Spectrum, que usaba lenguaje Basic; entonces ya trabajaba en piano-bar y no le dediqué mucho tiempo, era una afición (como sigue siéndolo). En cierto modo el Basic del Spectrum iba más allá que Python; pues en las teclas estaban escritos los comandos (“print”, “for”... todos) y para ingresar las órdenes no había que escribir “a máquina”, bastaba con pulsar una sola tecla (junto a la del shif u otras en los casos que se requería). Por otra parte las líneas salían automáticamente numeradas (creo  recordar) no había lío de tabulación.

Después pasaron los años, estuve mucho tiempo sin jugar con ordenadores hasta que me dieron un PC antiguo y probé el Basic que llevaba; ahí sí que había que escribir a mano, pero yo me sabía las órdenes báscias y no me costaba; tampoco había líos de tabulación, aunque sí había que numerar a mano también, pero me adaptaba bien.

Después, ya en con internet y más recientemente, programé alguna tontería básica en Javascript. Y después me apunté al curso de C de Argentinator pero no profundicé.

Y... hace ya algunos años descubrí el Python. Me pareció muy rápido y cómodo en comparación con los demás pese a necesitar tabulación; enseguida empecé a usar TAB en vez del espaciador; para no hacerme líos.

En cuanto a las órdenes no es que sea más fácil (dejándo módulos con órdnenes poderosísimas aparte) lo fácil es la escritura, es el no usar tanta llave, tanto corchete... es más rápido.
Sí que es cierto que tiene esos módulos (como Numpy, Simpy...) que lo hacen todo con una simple orden; van más allá de lo que yo llamaría “preprogramación”.

No obstante, si a Sofíaa le interesa, tampoco es nada difícil sumar los elementos de una diagonal programando a mano:

Spoiler
Pongamos que tenemos la matriz

A=[[1,2,3],[4,5,6],[7,8,9]]

Como es una matriz \( n\times n
  \) (n=3 en este caso) el propio “n” nos da hasta dónde tiene que llegar el bucle con el cual vamos a buscar los elementos de la diagonal.

La orden n=len(A) lee la longitud de la cadena (o de la lista o vector) y la guarda en la variable “n”; así que con eso ya tenemos el “n” a partir de la matriz definida que tengamos de antemano.

Después necesitaremos un vector vacío para ir metiendo los elementos de la traza; sea T=[].

Y después ya podemos poner el bucle for j in range (n): que en este caso cuenta 0,1,2 por ser n=3.

Debajo y con la tabulación necesaria se pone

T.append(A[j][j])

Es decir, el elemento A[j] con j=0 es el primer vector; si ponemos detrás otro [j] toma la primera coordenada del primer vector.

Así, cuando j=0, introduce en el vector T el elemento \( a_{11}
  \) de la matriz A; con j=1 mete el \( a_{22}
  \) y con j=2 el \( a_{33}
  \).

Ya sólo queda sumarlo con la función “sum” para obtener la traza:

suma=sum(T)

Este comando, “sum”, quizá sí que es un poco automático respecto de otros lenguajes, pero sumar con un bucle tampoco es difícil; simplemente ahorra tiempo, que en el mundo de hoy es algo vital, cada vez más.

[cerrar]

Saludos.

09 Junio, 2021, 07:42 pm
Respuesta #12

mathtruco

  • Moderador Global
  • Mensajes: 5,175
  • País: cl
  • Karma: +0/-0
  • Sexo: Masculino
  • El gran profesor inspira
... Pero la mayoría cree que Python es un gran primer lenguaje de programación, así que el equivocado debo ser yo.

A mi me agrada Paquita la del barrio, no me casaría con ella pero no me cae mal. Quiero decir, es cuestión de gustos. No estás equivocado y tampoco los que gustamos de python. Yo no sé si es mejor comenzar con python, no soy educador de oficio. Supongo que habrá que ver, después de unos años, cómo responden estudiantes que comenzaron programando en C y cómo lo hacen los que comenzaron usando python. En mi caso comencé programando mi calculadora canon en la secundaria, luego la graficadora que tuve en la universidad donde pronto me enseñaron un poco de C.

A ver si Soofíaa nos comenta algo de su nivel de conocimiento en programación y cómo la está pasando con este lenguaje (python).

Saludos

Estoy de acuerdo, o más o menos de acuerdo. Yo empecé a "programar" en mi calculadora HP en primer año de universidad, pero no lo llamaría programar realmente, era más bien configurar. Hasta algo "programé" en mi Atari, pero era más bien reescribir los ejemplos que traía su manual. En realidad esto no lo llamaría programar, sino sólo usar o configurar.

Me refiero a que el primer lenguaje de programación es el curso donde se enseña a programar. Si alguien aprende C aprende muchos aspectos sobre la programación, partiendo por el cuidado en el uso de memoria o el cuidado que hay que tener en el tipo de variables (que 1 no es igual a 1.0, ya que uno es un entero y el otro un real. De hecho, me parece que en Python 2.8 estos dos números no eran iguales, pero desde Python 3.0 el lenguaje los entiende como iguales). Alguien que sabe C en una tarde aprendre Python (no lo digo exajerando), pero alguien que sólo aprendió Python necesitará mucho más tiempo en aprender C. Creo que el objetivo de un curso de lenguaje de programación es aprender a programar, ya que sabiendo eso luego se puede usar cualquier lenguaje.

Todo lo que digo es una opinión sin mayor fundamento. Yo aprendí C en mi primer lenguaje de programación, y luego sin mayor instrucción matlab. Cuando me tocó cursar lenguaje de programación elegí tomarlo con los de informática en C, mientras que mis compañeros lo tomaron en matlab. En un par de generaciones después de la mía enseñaron matlab como primer lenguaje de programación, y ahora creo que enseñan Python. Cuando tomé un electivo de cálculo científico con Fortran, los que habían aprendido matlab como primer lenguaje de programación les costaba mucho aprender cosas que son básicas. Puedo estar 100% equivocado, es sólo mi percepción basado en eso.

Sobre gustos, traté que me guste Python, y aunque lo uso frecuentemente para hacer pequeños programas tiene varias cosas que me incomodan al programar matemática. Pero tienes razón, esto ya es cosa de gustos.


Sobre el último spoiler de feriva, para sumar los elementos de la diagonal principal de la matriz es más natural hacer:

Código: [Seleccionar]
suma=0
for i in range(0,n):
    suma = suma+A[i][i]

Con esto evitamos usar memoria innecesaria almacenando todos los elementos de la diagonal.

09 Junio, 2021, 07:56 pm
Respuesta #13

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 9,697
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino


Sobre el último spoiler de feriva, para sumar los elementos de la diagonal principal de la matriz es más natural hacer:

Código: [Seleccionar]
suma=0
for i in range(0,n):
    suma = suma+A[i][i]

Con esto evitamos usar memoria innecesaria almacenando todos los elementos de la diagonal.

Sí, normalmente suelo poner un contador yo también; pero con lo del vector de la diagonal me salió así sobre la marcha.

Saludos.

09 Junio, 2021, 08:25 pm
Respuesta #14

ingmarov

  • Moderador Global
  • Mensajes: 5,113
  • País: hn
  • Karma: +0/-0
  • Sexo: Masculino
...

Me refiero a que el primer lenguaje de programación es el curso donde se enseña a programar. Si alguien aprende C aprende muchos aspectos sobre la programación, partiendo por el cuidado en el uso de memoria o el cuidado que hay que tener en el tipo de variables (que 1 no es igual a 1.0, ya que uno es un entero y el otro un real.
 ...

Me gustó esta parte, estoy de acuerdo con el uso cuidadoso de la memoria, en python no se le da tanta importancia a este factor.

Repito no soy educador de oficio y agrego tampoco programador. Yo le llamo programar a lo que hice con una calculadora porque escribí instrucciones tales como una linea que me permitía ingresar números al correr el programa, sentencias goto que eran más o menos similares a un ciclo while. O instruir a la calculadora que al presionar cierta tecla se moviera el asterisco en cierta dirección y terminara el programa a llegar el asterisco a cierto punto de la pantalla. Todo esto no involucra pensar en el uso de la memoria.

Saludos
 
No te confíes, revisa lo que escribo. Yo también me equivoco.
Odio el autocorrector de Android...