Closed Igufu closed 1 month ago
Ok he solucionado el problema rehaciendo la función desde 0, el problema pareció surgir o desde el desempaquetamiento de la namedtuple o desde el operador dict()
. Dejare este Issue abierto ya que aún no estoy seguro cuál fue el problema original, y especialmente el hecho de que los testcases a veces daban bueno y a veces malo.
Hola @Igufu
Lo que pasa es que justamente ahí había un error por parte nuestra, donde se usó una forma de validar igualdad de diccionarios donde el orden de cada lista en el valor si importa, pero el enunciado es el que manda. Por lo tanto,
Los tests privados van a tener en consideración este error para no fallar en caso que la lista de los animes cambie el orden.
Se acaba de actualizar lo tests públicos para que ahora no afecte. Por lo tanto, te recomiendo hacer pull
del repositorio para probar la nueva versión.
Sobre el error de que a veces funcionaba o a veces no, es que justamente hay ciertos comandos en Python que no son deterministas, es decir, no siempre van a dar el mismo resultado. Pero para poder explicar muuucho mejor el error, necesitaría ver la forma que hiciste ese comando. Por lo cual, si quieres entender bien el error, te pediríamos que pushees, en otro archivo (main_viejo.py
por ejemplo) para ver cómo estaba programada la versión antigua, y así podemos ver en tu repositorio dicho archivo para dar mejor explicación.
Muchas gracias por noar esto. ¡Éxito con la actividad! 🦖 Saludosヾ(^-^)ノ
Hola!
He subido un archivo llamado main_viejo.py
a mí repositorio en - AC1/Test_issue
una cosa a destacar es que no use la namedtuple de manera (cosa que estoy arreglando), tal vez el bug podría originarse por eso. Ahora mismo no estoy en mi casa por lo que no alcanze a poner anotaciones. Así que si el código es muy difícil de entender al llegar a mi casa le pongo anotaciones para que sea más comprensible.
Gracias! 🐧
Hola @Igufu
Revisé tu código y el tema es el uso de set
y luego su transformación a una lista. En Python, los conjuntos (set
) son colecciones desordenadas y no tienen un orden garantizado. Cuando transformas un set
en una lista, el orden de los elementos en la lista puede no ser consistente porque los set
no mantienen un orden fijo de los elementos.
El orden de los elementos en un set
puede variar entre diferentes ejecuciones (como lo que te ocurrió a ti), o incluso entre diferentes ejecuciones de esa misma función dentro de una misma ejecución del programa. Por eso, en general si vas a transformar un set
a una lista, nunca esperar que el orden se mantenga, ahí es recomendable explorar otras herramientas, por ejemplo, transformar a lista y luego aplicar un tipo de ordenamiento deterministico.
Espero que haya resuelto tu duda, en otro caso no dudes en preguntar. ¡Éxito con la actividad! 🦖 Saludosヾ(^-^)ノ
Hola!
Gracias me quedo claro el error, la verdad tiene mucho más sentido de lo que pensaba.
Nuevamente agradezco la ayuda y espero que tenga un buen fin de semana!, ahora cerraré el issue.
Hola @Igufu
Recuerda porfis que en las Reglas del foro (punto 8) es que no cierren la issue. Esto lo haremos nosotros 😁
🦖 Saludosヾ(^-^)ノ
Prerrequisitos
(Marcar colocando una
X
entre los corchetes los ítems que ya hiciste, así:"[X]"
)Problema
Saludos, tengo un problema respecto a la función
animes_por_estreno(animes: list) -> dict:
en la actividad 1. Cuando corro el test con el comandopython3 -m unittest -v -b tests_publicos.test_consultas_animes_por_estreno
o todos los test a la vez hay veces que la consola imprimefailures=2
,failures=1
oOK
.Específicamente el error viene del test
test_resultado_varios_repetidos
De manera de prueba corrí el código 100 veces y anoté los resultados en la siguente tabla:
También me aseguré de correr el código en el path correcto (/Actividades/AC1) y de jamás editar los test cases.
Me parece un tanto extraño el error ya que en el enunciado dice que el orden de los animes dentro de las listas no importa:
Estoy seguro de que es un error mío, una sospecha que tengo es que tal vez el error se genera de otra parte, tal vez con los types pero la verdad es que he estado varias horas tratando de arreglarlo y no puedo llegar a pasar los tests de forma consistente.
Gracias y disculpen las molestias! :)
(unrelated gif)