Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Consulta por un problema de razonamiento con una consigna
#1
Hola buenas tardes mi consulta es porque no logro saber como plantear la resolucion a la siguiente consigna:
En un arreglo M(3, 4, 20) donde el primer índice señala el número de
centro, el segundo el número de curso y el tercero el número de alumno,
se almacenan en cada celda, las notas de los alumnos. Se solicita:
● La nota media por curso.
● La nota media por centro.
● La nota media general.
● Los dos mejores centros y sus notas.
● La posición del mejor alumno de cada curso con su correspondiente
nota.
Responder
#2
Según yo: es un arreglo tridimensional. 

La escuela o universidad seria el arreglo. El arreglo tiene 3 centros. Cada uno de esos centros tiene 4 cursos (3 * 4 = 12 en total) y cada curso tiene 20 alumnos (o podría tener) así que serian un maximo de 240 alumnos (12 * 20 = 240). 

Para crear un arreglo 3D hay varias formas, seguro acá en el foro hay ejemplos. Yo todavía tengo algunas dudas con python y no tengo mucho tiempo.

Una vez se tiene el arreglo de 3 dimensiones, si escribo: nota[2][3][9]= 7.5 estoy asignando una calificación de 7.5 al alumno numero 9 que esta en el curso 3 del centro 2.
 
Una media se calcula sumando todos los valores y a ese resultado dividirlo por la cantidad de valores que se sumaron. Por ejemplo la nota media por curso seria la suma de las notas de los alumnos (de ese curso) dividido por la cantidad de alumnos (de ese curso).
 
Podes usar un numero aleatorio para simular las notas, podes usar probabilidad para que las mayoría de las notas sean medias/altas, algo simple seria: generas un numero aleatorio entre 0 y 100, si el numero es mayor que 20 entonces generas una nota aleatoria entre 5 y 10, en caso contrario generas una nota aleatoria entre 1 y 5. Esto seria como decir que hay un 20% de probabilidad de que el alumno se saque menos de 5.

Comparando las notas medias de los centros, quien tenga la mas alta sera el mejor. 

Parece fácil pero son varias cosas a tener en cuenta. La librería numpy es ideal para esto (Crear arreglos multidimesionales, una función para sacar la media, empezar los indices desde un numero distinto de cero, etc) pero con python estandar se puede hacer perfectamente. 

Esto es lo que yo entiendo sobre la consigna del problema, espero sirva de algo.
Responder
#3
(08-11-2020, 02:53 PM)esteban84 escribió: Según yo: es un arreglo tridimensional. 

La escuela o universidad seria el arreglo. El arreglo tiene 3 centros. Cada uno de esos centros tiene 4 cursos (3 * 4 = 12 en total) y cada curso tiene 20 alumnos (o podría tener) así que serian un maximo de 240 alumnos (12 * 20 = 240). 

Para crear un arreglo 3D hay varias formas, seguro acá en el foro hay ejemplos. Yo todavía tengo algunas dudas con python y no tengo mucho tiempo.

Una vez se tiene el arreglo de 3 dimensiones, si escribo: nota[2][3][9]= 7.5 estoy asignando una calificación de 7.5 al alumno numero 9 que esta en el curso 3 del centro 2.
 
Una media se calcula sumando todos los valores y a ese resultado dividirlo por la cantidad de valores que se sumaron. Por ejemplo la nota media por curso seria la suma de las notas de los alumnos (de ese curso) dividido por la cantidad de alumnos (de ese curso).
 
Podes usar un numero aleatorio para simular las notas, podes usar probabilidad para que las mayoría de las notas sean medias/altas, algo simple seria: generas un numero aleatorio entre 0 y 100, si el numero es mayor que 20 entonces generas una nota aleatoria entre 5 y 10, en caso contrario generas una nota aleatoria entre 1 y 5. Esto seria como decir que hay un 20% de probabilidad de que el alumno se saque menos de 5.

Comparando las notas medias de los centros, quien tenga la mas alta sera el mejor. 

Parece fácil pero son varias cosas a tener en cuenta. La librería numpy es ideal para esto (Crear arreglos multidimesionales, una función para sacar la media, empezar los indices desde un numero distinto de cero, etc) pero con python estandar se puede hacer perfectamente. 

Esto es lo que yo entiendo sobre la consigna del problema, espero sirva de algo.

Código:
yo lo plantie asi hasta ahora estara bien?
import random

centro = 3

curso = 4

alumnos = 20

for i in range(centro):

    for j in range(curso):
        for k in range(alumnos):
            for n in range(1):
                nota = random.randint(1,10)
                print("centro numero",i+1,"curso numero",j+1,"alumno numero",k+1,"nota: ",nota)
Responder
#4
Esta bien, pero el ultimo for es inesesario, no tiene sentido. Aparte no estas creando el arreglo. Aca modifique tu codigo para que te des una idea de como lo haria:

  1. import random
  2. centro = 3
  3. curso = 4
  4. alumnos = 20
  5.  
  6. M = [] #lista para crear el arreglo 3D
  7.  
  8. for i in range(centro): #De 0 a centro -1
  9.     M.append([])
  10.     for j in range(curso):
  11.         M[i].append([])
  12.         for k in range(alumnos):
  13.             M[i][j].append(random.randint(1,10))
  14.        
  15.  
  16. def obtener_nota(ncentro, ncurso, nalumno):
  17.     return (M[ncentro - 1][ncurso - 1][nalumno - 1])
  18.  
  19.    
  20. def obtener_media_curso(ncentro, ncurso):
  21.     numero_de_alumnos= len(M[ncentro][ncurso]) #20
  22.     suma_notas= 0.0
  23.     for i in M[ncentro - 1][ncurso - 1]:
  24.         suma_notas += i
  25.     return suma_notas / numero_de_alumnos #cuidado! posible division por cero.
  26.  
  27. #...en estas funciones habria que comprobar que los
  28. #parametros que se les pasan no sean menor que 1.
  29.  
  30.  
  31. print("La nota media del curso 1 del centro 2 es: ")
  32. print (obtener_media_curso(2,1))
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)