Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

duda test 10 carga de datos #446

Closed
4 tasks done
xperseosses opened this issue Oct 2, 2024 · 10 comments
Closed
4 tasks done

duda test 10 carga de datos #446

xperseosses opened this issue Oct 2, 2024 · 10 comments
Assignees
Labels
Resuelto Issues resueltas por el equipo docente Tarea 3 Dudas sobre la T3

Comments

@xperseosses
Copy link

Prerrequisitos

(Marcar colocando una X entre los corchetes los ítems que ya hiciste, así: "[X]")

Duda

Hola, en el test 10, tengo buenos los de correctitud, pero malos los de carga de datos y me fijé que todos mis precios solo varían por una unidad, ejemplo: 991 != 990. Nose si es porque estoy usando mal round() o porque los tests están mal.
(todo esto en el test de tamaño S, para que se pueda visualizar)
Captura de pantalla 2024-10-02 a la(s) 8 46 49 p  m

@xperseosses xperseosses added the Tarea 3 Dudas sobre la T3 label Oct 2, 2024
@NachoRinda NachoRinda self-assigned this Oct 3, 2024
@NachoRinda
Copy link

Hola, el detalle que puedes tener es que el descuento con redondeo se aplica a cada una de las pizzas del pedido por separado. No es llegar y aplicar descuento + round() una vez sumado todo, sino que debes aplicar el descuento con round() para cada pizza de un pedido. Avísame como te va considerando esto.

@xperseosses
Copy link
Author

Sigue arrojando error, aunque ahora en menor cantidad de los datos :(
Captura de pantalla 2024-10-02 a la(s) 11 27 30 p  m

@NachoRinda
Copy link

NachoRinda commented Oct 3, 2024

Hola, acabo de ver tu código. El error que tienes es uno bastante imperceptible. Presta atención en donde calculas la ganancia: el orden en el que multiplicas si afecta al resultado. En general, deberías evitar multiplicar por un float siempre que puedas cuando necesitas exactitud, y si no puedes como este caso, realízalo al final pues este tipo de datos inducen problemas de precisión. En vez de multiplicar por el descuento en el medio, multiplícalo al final. Avísame si ahora si te resultan los tests.

@xperseosses
Copy link
Author

gracias hermano ahí funcionó, te pasaste de verdad🙏🙏🙏

@NachoRinda NachoRinda added the Resuelto Issues resueltas por el equipo docente label Oct 3, 2024
@canija2000
Copy link

Hola! No termino de comprender el procedimiento del descuento.
Lo siguiente es lo creo entender de lo comentado más arriba:

  • Un pedido de id : x tiene un descuento z , y si este pedido tiene 4 pizzas w, entonces este descuento z se le aplica a cada precio de w ? Para luego sumar las 4 pizzas con descuento?
  • O, teniendo el total de 4 pizzas w le aplico el descuento a ese valor.

Luego lo de los round, bueno, el enunciado dice que este se le debe aplicar al total de las ganancias por pedido, sin embargo acá mencionas que el round se le hace al descuento. Entonces no entiendo muy bien a quién seguir y cómo proceder.
Gracias!

@NachoRinda
Copy link

NachoRinda commented Oct 5, 2024

Hola, vayamos por partes. Leamos lo que dice el enunciado:

La ganancia de cada pedido estará determinada por: la cantidad pedida de una determinada pizza, el
tipo y tamaño de dicha pizza y el eventual descuento utilizado. En caso de que alguna ganancia sea un
número decimal (float) se debe aproximar por redondeo con la función built-in round a la cifra de la
unidad para que se obtenga una ganancia entera (int).

De acá queda claro que la ganancia de cada pizza por separado, usando los atributos de las namedtuples, es: precio * cantidad * (1- descuento).
Ahora bien, podrías suponer, de manera totalmente honesta, que como cada pedido tiene el mismo descuento, este se podría aplicar luego de sumar todos los precio*cantidad. Sin embargo, algo que tal vez faltó considerar en el enunciado es ser más estricto en la manera de calcular pues cuando multiplicas floats y aproximas con round(), el orden en el que hagas las operaciones puede suponer un desvío final minúsculo (como el error original en esta issue) pero error al fin y al cabo.
Por lo tanto, la forma de calcular el descuento para obtener el resultado exacto de los tests es:

  1. A cada pizza individual calcularle su ganancia dada la fórmula, asegurándote de multiplicar por el float al final (int * int * float) y a esta ganancia aplicarle round().
  2. Sumar todas las ganancias calculadas del pedido.

Haciendo esto deberías llegar a la solución esperada. Si te fijas bien, la aplicación de round() en este procedimiento no contradice el enunciado pues este explícitamente dice que siempre se debe usar cuando tengas una ganancia tipo float, y esto efectivamente se cumple pues al multiplicar int por float este último tipo es el que adopta el resultado por defecto en python.
Espero que te haya quedado claro, y si no, házmelo saber.

@canija2000
Copy link

Vale gracias!

@MaxPrietoC
Copy link

Hola , siguiendo los pasos de dados para calcular el precio de cada pedido que diste me sigue dando dos errores por una unidad en dos casos, especificamente en los de archivos de porte s y no logro entender el por que de estos (mi codigo esta subido a mi repositorio).

@RumNCola
Copy link

Este Issue me acaba de salvar media hora de cabezasos contra el teclado, muchas gracias

@ManoCarva
Copy link

ManoCarva commented Oct 17, 2024

disculpen pero aun tengo problemas incluso haciendo round antes de sumar los (int * int * float) entre los con mismo ID como se dijo. Habría alguna otra razón por la que algunos elementos se diferenciarian solo por 1 unidad?

@3rdPix 3rdPix closed this as completed Nov 6, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Resuelto Issues resueltas por el equipo docente Tarea 3 Dudas sobre la T3
Projects
None yet
Development

No branches or pull requests

7 participants