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 T1 #110

Open
matiasmasjuan opened this issue Sep 25, 2021 · 24 comments
Open

Librerías permitidas, no permitidas y malas prácticas T1 #110

matiasmasjuan opened this issue Sep 25, 2021 · 24 comments
Assignees
Labels
IMPORTANTE Tarea 1 Dudas sobre la T1

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

  • ABC
  • dataclasses
  • random
  • collections
  • itertools
  • functools
  • operator
  • copy
  • string
  • pprint
  • beautifultable
  • os
  • sys.exit

Librerías Prohibidas

  • csv
  • json
  • pickle
  • shutil
  • pathlib
  • glob
  • pandas
  • numpy
  • ast
  • curses
  • io
  • re
  • sqlite3

☠️ Built-ins Prohibidos

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

Malas prácticas

El uso de las siguientes prácticas será considerado una mala práctica:

  • except Exception: o únicamente except: (excepciones bien capturadas sí estarán permitidas).
  • Variables globales de cualquier tipo, a excepción de los elementos considerados en parametros.py.
  • Import * o imports que no se encuentren al inicio del programa.
  • Paths absolutos y no relativos.
  • No añadir encoding al momento de trabajar archivos.

¡Éxito en sus tareas! ⚔️🕊️🔥️

@matiasmasjuan matiasmasjuan added Tarea 0 Dudas sobre la T0 Tarea 1 Dudas sobre la T1 and removed Tarea 0 Dudas sobre la T0 labels Sep 25, 2021
@matiasmasjuan matiasmasjuan self-assigned this Sep 25, 2021
@matiasmasjuan matiasmasjuan pinned this issue Sep 25, 2021
@bhenriquezsoto
Copy link

Buenas noches, espero se encuentren bien :). Tenia dos dudas:

1. Las instancias de clases se siguen sin considerar variables globales?

2. Las instancias de funciones cuentan como variables globales?? Es que tengo una funcion que me carga ciertos datos y tengo la duda si con solo eso puedo cargarlos sin problemas o se aplicara descuento.

Muchas gracias de antemano!

@matiasmasjuan
Copy link
Contributor Author

Hola @benja20029 !

Las variables globales son aquellas variables que se definen fuera de cualquier función o clase. Por lo tanto, existe la posibilidad de llamarlas y utilizarlas dentro de funciones o métodos de clases sin pasarlas como argumento. Esto es una muy mala práctica, ya que se pierde el origen de la variable, y existe la posibilidad de redefinir sus valores dentro de ellas. Esto podría provocar errores que son bastante difíciles de debuggear, por lo mismo lo consideramos como mala práctica y existe penalización por su uso.

En base a esto, y respondiendo a tus dudas: depende de donde guardes las variables de las instancias de una clase, o los resultados de una función. Si tu primera linea de código es:

instancia = Clase()

Contaría como variable global. Sin embargo, si es que lo realizas dentro de una función o clase:

def funcion():
    instancia = Clase()
    # ...

Ya no sería considerado una variable global.
Espero haber respondido a tu pregunta, y mucho éxito con la tarea! 😄

@Jpuc1143
Copy link

Hola! Tengo dos preguntas:

  1. Se puede usar la libreria Enum para organizar mejor los estados del menú?
  2. En la tarea anterior hice la misma pregunta y me dieron permiso. ¿Puedo asumir que se puede usar esta libreria nuevamente en la siguiente tarea o tengo que siempre preguntar?

Muchas Gracias.

@matiasmasjuan
Copy link
Contributor Author

Hola @Jpuc1143 !

, puedes usar Enum para organizar mejor los estados de los menús. Ahora bien, mucho cuidado en donde defines esos estados, ya que en el archivo parametros.py deben ir los parámetros descritos en el enunciado y no se pueden definir funciones o clases en ellas. Recomendaría hacer un archivo aparte en ese caso. Con respecto a la segunda pregunta, no, siempre es mejor preguntar, ya que sino lleva descuento.

Saludos!

@aplaza2
Copy link

aplaza2 commented Sep 30, 2021

Hola, tengo una duda con respecto al número de caracteres por línea. Si bien para el código tenemos permitido hasta 100 caracteres, ¿esto aplica para el archivo partidas.txt? ¿O este último puede tener más caracteres?

Saludos

@matiasmasjuan
Copy link
Contributor Author

Hola @aplaza2 !
No, el máximo de 100 caracteres solo aplica para los archivos .py, por lo que si deseas realizar el bonus, no se va a penalizar si el archivo partidas.txt tiene lineas sobre los 100 caracteres.

@Fernanda1232123
Copy link

Hola, tenía entendido que uno de los descuentos es que la tarea tiene que tener indentación de dos espacios, sino se descuenta. Pero no veo esto en esta issue, ¿se descuenta tener una identación distinta a dos espacios?

@matiasmasjuan
Copy link
Contributor Author

Hola @Fernanda1232123 !

Ese tipo de descuentos se evalúa en la sección de PEP8, el cual podrás ver específicamente en la sección de Descuentos. Por lo tanto, se descontará si no se usa indentación por espacios (4).

@svilaza
Copy link

svilaza commented Sep 30, 2021

Hola! En esta tarea está permitido el uso de generadores y funciones como filter/reduce/map etc...?

@matiasmasjuan
Copy link
Contributor Author

Hola @svilaza! , puedes hacer uso de generadores y las funciones vistas dentro de los contenidos de la Semana 6.

@bhenriquezsoto
Copy link

Buenas, se puede usar la libreria time para usar sleep en esta tarea??

@bhenriquezsoto
Copy link

Otra duda, si por ejemplo el usuario ingresa inputs erroneos, es necesario hacer levantamiento de errores? o puedo hacer:

while x=='algomalo':
print("lo hiciste mal")

Se aplicaria descuento en caso de que no se haga levantamiento de errores?

@matiasmasjuan
Copy link
Contributor Author

Hola @benja20029 !

  1. No, no pueden usar sleep de la librería time por las mismas razones indicadas en la issue Librerías permitidas, no permitidas y malas prácticas T0 #31 : generaría ciertos delays en la ejecución lo cual puede molestar bastante en la corrección.
  2. No, no es necesario manejar los errores a través de try/except (especificando la captura del error), por lo que no habrá penalización si no se usan. Ahora bien, puede ser una buena oportunidad para poner en práctica los conocimientos aprendidos 👀

@Fernanda1232123
Copy link

@matiasmasjuan entendí que hay que dejar la tarea con indentación de 4 espacios. Si hago un tab equivalente a 4 espacios, en vez de poner los espacios uno por uno, ¿es lo mismo?

Otra pregunta, ¿se puede usar la librería math?

@vpaivag
Copy link

vpaivag commented Oct 3, 2021

Hola. ¿Se puede usar la librería threading?

@matiasmasjuan
Copy link
Contributor Author

Hola @Fernanda1232123: Si tienes configurado una tabulación de 4 espacios, entoces si sería equivalente. Por ejemplo, si estás utilizando VSCode, puedes ver cómo utilizas la indentación en la esquina inferior derecha:

image

Verás que la indentación se define por 4 espacios y no por tabs.

Con respecto a tu otra pregunta: ¿Para qué quieres utilizar la librería math?

Hola @vpaivag : ¿Para que quieres utilizar threading? Recuerda que para esta tarea no se evalúa la programación concurrente, por lo que si realizas procesos que dificulten la corrección, similar a lo que ocurre con sleep de la librería time, habrá un descuento asociado.

@cristobalba
Copy link

Hola, para abrir los archivos no se puede usar encoding utf8 ? si no los abro con esto quedan los datos con simbolos extraños :(

@matiasmasjuan
Copy link
Contributor Author

Hola @cristobalba !

Para el manejo de archivos deben utilizar encoding utf-8, ya que de otro modo no se leeran correctamente ciertos caracteres especiales, como la ñ.

@pedrocorrea2
Copy link

Hola! Se puede usar la librería datetime para guardar las partidas con fecha y hora con datetime.now()?

@matiasmasjuan
Copy link
Contributor Author

Hola @pedrocorrea2 . No es necesario guardar la fecha de la partida, ya que solo se pide el nombre. Sin embargo, si prefieres hacer uso de la librería datetime, no hay problemas 😄 👌

@aurmeneta
Copy link

Hola! ¿Está permitido usar métodos estáticos?

@matiasmasjuan
Copy link
Contributor Author

Hola @aurmeneta. No hay problema en que utilices métodos estáticos o el decorador @staticmethod en tu tarea, siempre y cuando tengas claro su funcionamiento y correcto uso.

@diegocostares
Copy link

Hola, quería preguntar si las librerias que se permitieron en la tarea pasada también se pueden usar en esta, específicamente typing y future.annotations para hacer type hints y colorama para mostrar menus con colores.

Además, saliéndome un poquito del tema quiero aprovechar de preguntar algo... En parámetros.py estoy poniendo las rutas a los archivos como una tupla(), pero al hacer import.os.path estoy agregando un "*" antes de poner la RUTA, esto lo hice para que me funcione lea la misma tupla, pero no sé si esto está permitido o si hay un método mas util (Si hay una forma más estándar me gustaría una explicación, ya que se me hace extraño poner un *)

@matiasmasjuan
Copy link
Contributor Author

Hola @diegocostares !

No puedes asumir que las librerías permitidas anteriormente también se podrán utilizar en esta. Siempre se debe preguntar. Ahora bien, para los casos que mencionas si puedes usar esas librerias, pero recuerda especificar en tu readme el significado de typing y sus usos en caso de que el ayudante corrector no este familiarizado con esa notación.

Con respecto a tu duda sobre el path: Sí, es completamente válido guardar el path como una tupla. Se considera una buena manera de hacerlo, ya que al agregar un * en la tupla estas haciendo un desempaquetamiento del path. Por lo tanto, es correcto y una buena manera de hacerlo (pero no la única).

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

No branches or pull requests