def tarea(self): # Entrega enunciado. ''' Este metodo desencadena todas las funciones asociadas a la entrega del enunciado de la tarea. Se crean los futuros eventos que dependen de este. :return: ''' # revisar: Pendiente considerar las dos semanas evento = Evento.evento_actual # Ejecucion de funciones: for alumno in Alumno.lista_alumnos: alumno.calc_nota_tarea(evento.numero_tipo) # Creación de entrega tarea: revisar: # Creacion de entrega proximo enunciado: try: prox_fecha = evento.tiempo + 14 prox_contenido = Contenido.lista_contenidos[semana(prox_fecha)] Evaluacion(2, prox_fecha, prox_contenido) # Creación entrega de notas tarea: fecha = evento.tiempo + 14 EntregaNotasCoord(7, fecha, (2, evento.numero_tipo)) sim_logger.info( '[Día {dia}]: Se entregó el enunciado de la tarea {numero}.'. format(numero=evento.numero_tipo, dia=evento.tiempo)) except BaseException: pass
def nota_esperada(self): ''' Esta property revisa cual es el contenido que se esta pasando actualmente llamando a la variable 'contenido_actual' de la clase Contenido. Llama a la función del objeto 'Contenido' que permite calcular la nota esperada del alumno en base a la cantidad de horas que dedico al estudio de la materia. Se actualiza la variable 'nota_esperada' con el retorno de dicha funcion. :return: ''' # Revisa si el valor esta actualizado, sino, lo actualiza: n_evento = Evento.evento_actual.numero evento_ult_act = self.__confianza[1] eventos_evaluaciones = [1, 2, 3, 4] # revisar: Asegurarse que siempre que hay un evento 'evaluacion' se # llame a la property 'nota esperada' if (evento_ult_act < n_evento) and (Evento.evento_actual.tipo in eventos_evaluaciones): # Es una evaluacion n_contenido = semana(Evento.evento_actual.tiempo) contenido = Contenido.lista_contenidos[n_contenido] dia_de_la_semana = Evento.evento_actual.tiempo % 7 horas_hasta_dia = (self.horas_semana / 7) * dia_de_la_semana if horas_hasta_dia <= int(contenido.rango1[-1]): self.__nota_esperada[0] = round(uniform(1, 3.9), 2) elif horas_hasta_dia <= int(contenido.rango2[-1]): self.__nota_esperada[0] = round(uniform(4, 5.9), 2) elif horas_hasta_dia <= int(contenido.rango3[-1]): self.__nota_esperada[0] = round(uniform(6, 6.9), 2) elif horas_hasta_dia >= int(contenido.rango4[-1]): self.__nota_esperada[0] = 7 self.__nota_esperada[1] = Evento.evento_actual.numero return self.__nota_esperada[0]
def calc_nota_actividad(self, numero): # revisar: en caso de que exista la posibilidad de que hayan más # evaluaciones que la cantidad que se fijaron en un ptrincipio, el # programa deberá agregarlas haciendo append[nota esperada, nota final] num = semana(Evento.evento_actual.tiempo) exigencia = 7 + (randint(1, 5) / Contenido.lista_contenidos[num].dificultad) self.notas_actividades[numero - 1][1] = round( max((self.progreso_act_actual / exigencia) * 7, 1), 2)
def manejo_contenidos(self): if esta_actualizado(self.__manejo_de_contenidos[1]): return self.__manejo_de_contenidos[0] else: dificultad = Contenido.lista_contenidos[semana( Evento.evento_actual.tiempo)].dificultad self.__manejo_de_contenidos[0] = (1 / dificultad) * self.horas_semana self.__manejo_de_contenidos[1] = Evento.evento_actual.tiempo return self.__manejo_de_contenidos[0]
def catedra(self): ''' Este metodo desencadena todas las funciones asociadas a la realizaciond e la catedra. Se crean los futuros eventos que dependen de este. :return: ''' evento = Evento.evento_actual # Creacion proxima catedra: try: fecha = evento.tiempo + 7 sim_logger.info( '[Día {dia}]: Se realizó la catedra {numero}, acerca de {materia}.' .format(materia=Contenido.lista_contenidos[semana( evento.tiempo)].nombre, dia=evento.tiempo, numero=evento.numero_tipo)) Evento(6, fecha) except BaseException: pass
def actividad(self): ''' Esta función desencadena todas las funciones que deben ejecutarse cuando se reliza una actividad. Define cuando serán los eventos de las proximas evaluaciones y de las entrega de notas de esta actividad. :return: ''' evento = Evento.evento_actual # Ejecucion de funciones: for alumno in Alumno.lista_alumnos: alumno.calc_nota_actividad(evento.numero_tipo) # Creacion de proxima actividad: try: prox_fecha = evento.tiempo + 7 prox_contenido = Contenido.lista_contenidos[semana(prox_fecha)] Evaluacion(1, prox_fecha, prox_contenido) # Creacion entrega notas actividad: fecha = evento.tiempo + 14 EntregaNotasCoord(7, fecha, (1, evento.numero_tipo)) # Logging sim_logger.info( '[Día {dia}]: Se realizó la actividad {numero}.'.format( numero=evento.numero_tipo, dia=evento.tiempo)) except BaseException: pass
def calc_nota_control(self, numero): num = semana(Evento.evento_actual.tiempo) exigencia = 7 + (randint(1, 5) / Contenido.lista_contenidos[num].dificultad) self.notas_controles[numero - 1][1] = round( max((self.progreso_control_actual / exigencia) * 7, 1), 2)