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

Librerías permitidas, no permitidas y malas prácticas T0 #31

Open
matiasmasjuan opened this issue Aug 28, 2021 · 36 comments
Open

Librerías permitidas, no permitidas y malas prácticas T0 #31

matiasmasjuan opened this issue Aug 28, 2021 · 36 comments
Assignees
Labels
IMPORTANTE Tarea 0 Dudas sobre la T0

Comments

@matiasmasjuan
Copy link
Contributor

Para consultar sobre una librería deben responder esta issue con una pregunta de la siguiente forma:

Puedo usar la librería nombre_librería para hacer explicación_de_lo_que_quiero_hacer

¡Recuerden especificar en su README qué librerías utilizan!


Librerías Permitidas

  • collections
  • dataclasses
  • datetime
  • os
  • random
  • string
  • sys.exit
  • copy

Librerías Prohibidas

  • csv
  • functools
  • numpy
  • pathlib
  • pandas
  • shutil
  • re
  • pickle

☠️ Built-ins Prohibidos

El uso de alguna de las siguiente funciones es automáticamente un 1,0 sin discusión. 😭

  • exec (explicación)
  • eval (explicación)
  • exception (try/except) (el uso correcto de try/except es contenido que se verá en una futura semana del curso, por lo que se espera que las tareas previas a esa fecha puedan ser resueltas sin este built-in)

¡Ánimo y éxito en sus tareas! ⚖️🤝️

@benjarsanchez
Copy link

Puedo usar la librería operator para ordenar por fecha una lista de tuplas?

@matiasmasjuan
Copy link
Contributor Author

Hola @benjarsanchez ! , puedes utilizar operator 👌

@aetamayo
Copy link

hola, ¿Se puede utilizar la librería time con time.sleep() en la tarea?

@agucova
Copy link

agucova commented Aug 30, 2021

¿Podemos usar Colorama o sty para utilizar colores de forma portable en el output?

@agucova
Copy link

agucova commented Aug 30, 2021

Y podemos usar typing y __future__.annotations de la librería estándar con tal de usar type hints de colecciones, uniones y anotaciones retrasadas acorde con PEP 448 y PEP 563?

@Dafnemami
Copy link

Puedo usar la librería time para usar la función sleep y simular los tiempos de espera entre prints (Para que parezca más un 'programa')?

@matiasmasjuan
Copy link
Contributor Author

@aetamayo y @Dafnemami : No pueden usar la función sleep de time. Si bien es cierto que agregar delays puede hacer que el programa sea mas realista, el uso de pausas en el código puede ocasionar molestias al momento de corregir 😢. Imaginen que en la corrección ejecutamos su tarea varias veces, al momento de tener pausas lo único que ocasiones es que el tiempo de revisión aumente considerablemente.

@agucova : Si, puedes usar colorama. Preferiblemente no sty ya que no estoy seguro que funcione en todos los sistemas operativos y puede ocasionar problemas o molestias al corrector.

@agucova : Si, puedes usar typing y __future__.annotations para hacer type hints. De todas formas, te recomiendo dejar algun breve comentario o explicación acerca de esto en tu README, señalando que esto es meramente con fines de orden y que no debería afectar el código.

@mmangiamarchi
Copy link

Hola ¿Se pueden usar diccionarios en la tarea?

@matiasmasjuan
Copy link
Contributor Author

Hola @mmangiamarchi ! , no hay problema con que usen estructuras de datos como diccionarios u otros que hayan visto durante la Semana 0 y 1 de los contenidos 😄

@isufan
Copy link

isufan commented Aug 31, 2021

Hola! El límite de 79 caracteres por línea que impone PEP8, ¿aplica también para comentarios o pueden ser una excepción?

@matiasmasjuan
Copy link
Contributor Author

Hola @isufan ! Si bien PEP8 utiliza límite de 79 caracteres por línea como máximo por convención, en el curso establecimos un límite de 100 caracteres como máximo según guía de descuentos. Con respecto a los comentarios, estos SI se consideran dentro de los 100 caracteres, por lo que ninguna línea debe sobrepasar este límite.

@MaxiNavia
Copy link

Hola, quería saber si es obligatorio hacer uso de la librería "datetime" para acceder a las fechas del archivo "publicaciones.csv".
Sé que voy a tener que usar la librería más adelante, pero no sé si es obligatorio su uso para esa parte en específico de la tarea.
Gracias :D

@matiasmasjuan
Copy link
Contributor Author

Hola @MaxiNavia

, es obligatorio el uso de la librería datetime. Esto se encuentra indicado en el enunciado en la sección de archivos:
image
Además, si revisas la Distribución de Puntajes existe un item que evalúa el uso correcto de esta librería.

@FRANCOBARDI
Copy link

Hola, puedo usar la libreria time para la funcion strftime, con el objetivo de que me entregue la fecha y hora actual? Gracias!!

@matiasmasjuan
Copy link
Contributor Author

Hola @FRANCOBARDI . La función strftime te permite formatear una fecha en un string a tu preferencia, pero strftime no te entrega directamente la fecha y hora actual. Para obtenerla, debe ser a través de la librería datetime. Luego si deseas usar strftime de la librería time para convertilo a un string en el formato que tu prefieras, si puedes hacerlo. De todos modos, la clase date de datetime ya cuenta con la función strftime, por lo que no es necesario obtenerla de la librería time.

@naderhadweh
Copy link

Hola! Puedo usar datetime.now().date() y .time() para obtener la fecha y hora actual. Gracias de antemano!!

@matiasmasjuan
Copy link
Contributor Author

Hola @naderhadweh! , ningún problema con que utilicen todos esos métodos de datetime. 👌

@Jpuc1143
Copy link

Jpuc1143 commented Sep 1, 2021

Hola! Se puede usar la libreria enum para hacer que acceder a indices sea más limpio?

@matiasmasjuan
Copy link
Contributor Author

Hola @Jpuc1143 ! , puedes utilizar enum. 👌

@anais-mv
Copy link

anais-mv commented Sep 1, 2021

hola! puedo usar la librería xlwt?

@agucova
Copy link

agucova commented Sep 1, 2021

Pregunta, ¿Por qué pathlib está prohibido? Me preocupa que mi uso de paths relativos con forward slashes (/) no funcione en ayudantes con Windows.

¿Debería usar os en reemplazo?

@kunafuego
Copy link

Hola @agucova. Sí, te recomiendo ocupar la librería os, específicamente su método path.join. Esta resuelve justo lo que indicas ahí, pues genera el string del path según el sistema operativo en que se está corriendo el código.

@matiasmasjuan
Copy link
Contributor Author

@anais-mv : No, no puedes usar xlwt. Para esta tarea se espera que sepan manejar archivos correctamente.

@agucova : Depende para qué quieres utilizar pathlib. De todas formas, tal como menciona @kunafuego , el método path.join de os debería servirte perfectamente para lo que necesitas 👌

@agucova
Copy link

agucova commented Sep 1, 2021

@matiasmasjuan pathlib provee los path genéricos y portables de tipo PurePath que en mi opinión son una solución más general y elegante que usar os en muchos casos (pathlib wrappea os en muchos contextos).

De todas formas usaré os. ¡Muchas gracias!

@Cartterr
Copy link

Cartterr commented Sep 1, 2021

Hola! Entonces los comentarios que ingresan los usuarios al querer añadirlo a comentarios.csv tiene que ser menos de 100 caracteres? O no hay ningún limite o condición para estos comentarios?

@matiasmasjuan
Copy link
Contributor Author

Hola @Cartterr : No. La restricción de los 100 caracteres SOLO aplica para los archivos .py. Los csv no tienen límite de caracteres. 👌

@J0SEF4
Copy link

J0SEF4 commented Sep 1, 2021

Hola! Puedo usar la libreria operator. Especifico de esta forma: from operator import itemgetter. Se puede?

@matiasmasjuan
Copy link
Contributor Author

Hola @J0SEF4 : , si puedes utilizar itemgetter de la librería operator. 👌

@Cartterr
Copy link

Cartterr commented Sep 2, 2021

Consulta, se va a evaluar todas aquellas cosas que no se especificaron? Por ejemplo al quitar un comentario mi código reordena los id para que queden de menor a mayor, y cuando hay un input erróneo en el menú de publicaciones, vuelve al menú principal.

Ambas cosas no se especificaron, pero igual se descuenta por ello?

@matiasmasjuan
Copy link
Contributor Author

Hola @Cartterr !
Esta sección es para preguntar sobre librería permitidas, no permitidas o malas prácticas de código. Cualquier duda acerca de los criterios de evaluación, enunciado o distribución de puntajes porfavor hacerla en una nueva issue para que la respuesta quede disponible y fácilmente accesible para algún otro compañero o compañera. 😄

@cristobalba
Copy link

Hola, el descuento por malas practicas (especificamente uso de variables globales) es de 5 decimas por cada vez que haga uso de una variable global, o se descuentan 5 decimas en total por todas las que haya usado? Gracias salu2

@matiasmasjuan
Copy link
Contributor Author

Hola @cristobalba !
Es lo segundo que mencionas. Si existe al menos una variable global, se descuentan las 5 décimas. Recuerda que una variable global son todas aquellas variables definidas fuera de cualquier función, método o clase. Esto permitiría ser llamadas desde cualquier parte, como funciones, sin ser pasadas como argumentos de ella. Por lo tanto, variables dentro de funciones podrían cambiar el valor de la variable global, lo que podría ocasionar errores muy graves en el funcionamiento del programa, y son muy díficiles de debuggear. Es por esta razón que las variables globales se consideran una muy mala práctica y reciben la sanción correspondiente.

@Jpuc1143
Copy link

Jpuc1143 commented Sep 3, 2021

Hola de nuevo! ¿Por qué shutil esta prohibida? Se podría utilizar solamente get_terminal_size para hacer texto centrado?

@agucova
Copy link

agucova commented Sep 3, 2021

¿Puede usarse tempfile para la creación de archivos temporales?

Quiero utilizarla para evitar posibles errores fatales en la escritura a los CSV.

@matiasmasjuan
Copy link
Contributor Author

@Jpuc1143 : shutil es una librería que contiene múltiples métodos sobre el manejo de archivos y paths. Para esta tarea se evalúa el correcto manejo de ellos sin la necesidad de librerías externas. Con respecto a get_terminal_size, es posible que existan errores al centrarse el texto en la consola, lo que ocasionalmente podría causarle molestias al corrector, asi que estaría prohibido su uso.

@agucova : No, no puedes utilizar tempfile ya que se evalúa el correcto manejo de archivos. Tal como mencionas, parte de la tarea es evitar errores de escritura en los csv sin la necesidad de librerías externas.

@larryuc
Copy link

larryuc commented Oct 9, 2021

@aetamayo y @Dafnemami : No pueden usar la función sleep de time. Si bien es cierto que agregar delays puede hacer que el programa sea mas realista, el uso de pausas en el código puede ocasionar molestias al momento de corregir 😢. Imaginen que en la corrección ejecutamos su tarea varias veces, al momento de tener pausas lo único que ocasiones es que el tiempo de revisión aumente considerablemente.

@agucova : Si, puedes usar colorama. Preferiblemente no sty ya que no estoy seguro que funcione en todos los sistemas operativos y puede ocasionar problemas o molestias al corrector.

@agucova : Si, puedes usar typing y __future__.annotations para hacer type hints. De todas formas, te recomiendo dejar algun breve comentario o explicación acerca de esto en tu README, señalando que esto es meramente con fines de orden y que no debería afectar el código.

Se podría utilizar de igual forma el sleep(p.PARAMETRO)?
Asi el corrector puede cambiar el parámetro a cero y ningún sleep corre? O es mejor decir presione Enter para continuar? Esto ya que mi código cada vez q muestra o vuelve a un menú. Limpia la pantalla.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IMPORTANTE Tarea 0 Dudas sobre la T0
Projects
None yet
Development

No branches or pull requests