Closed gatochico closed 4 years ago
Como se puede usar add, se podría usar sub ?
¿Puedo usar la librería msvcrt para usar msvcrt.getch() en mostrar estado?
Podemos usar regex para manejar el padding de espacios en deportistas.csv? Como hay un numero variable de espacios antes de cada coma, usar regex haría as fácil el trabajo de dividir las columnas.
Hola a todes!
@yuwet15 Sí puedes usar sub
.
@javieraalfarop No puedes usar msvcrt
ya que no todes les ayudantes tienen windows, y el cambio sería sólo eliminar el tener que presionar Enter.
@tvallotton No puedes usar regex
. Sin embargo la inclusión de estos espacios fue error nuestro 😱 se acaba de subir al syllabus una versión sin los espacios para que no tengas que preocuparte de ellos y se enviará un aviso al respecto cuanto antes. Gracias por darte cuenta y disculpa las molestias!
Una pregunta, cuales eran la librerías y built ins prohibidos para la T00? que acabo de darme cuenta de que existen penalizaciones por esto
Hola! se puede usar round para redondear los decimales?
Hola, se puede usar setattr
?
Hola!
@javiermingo La issue de librerías prohibidas es #87 .No solo debes leer el post principal, sino también los comentarios donde se preguntan por librerías adicionales.
@amanda1415 round
viene por defecto en python así que sí puedes usarlo.
@sperezmasri setattr
viene por defecto en python así que sí puedes usarlo.
Éxito a todes!
Hola, a que se refiere que Import* es mala práctica ???
Hola @isidorabecker !
Import *
es considerado mala práctica dentro del curso. Esto es por la siguientes razones (citando los contenidos de la semana 00):
El uso de estas sentencias se considera una mala práctica, ya que importa definiciones sin saber cuantas o cuales son, y potencialmente importa nombres de definiciones que pueden coincidir con nombres de tu programa, sobre-escribiendo definiciones y obteniendo resultados inesperados. Siempre se prefiere tener algún tipo de referencia al módulo de donde proviene una definición, o en su defecto definir, mediante importación parcial, cuáles son aquellas importadas. Esto hace que el código ajeno sea más legible y fácil de entender.
Por lo tanto (y esto cuenta a partir de la T01 en adelante), si usas import *
en tu código, se te hará un descuento en la nota de tu tarea, por lo que recomiendo evitarlo.
Saludos y éxito!
Hola, se puede usar colorama?
@aerotecnia99 Sí puedes usar colorama 🎨 . Éxito!
Hola! queria saber si podia usar modulos como "pyfiglet" para poder hacer mas facil (y mas choros) los prints, tanto del status como normales. saludos !
Hola! Quería saber si se puede ocupar continue
Hola!
@sa-Appel Sí puedes usar pyfiglet
en específico. Cualquier otra librería extra que quieras usar debes preguntarla primero por aquí.
@fedezang continue
es built-in de python y no es considerado mala práctica, por lo que puedes usarlo.
Hola, se puede usar la librería tabulate
?
hola! creo que Rich puede ser una mejor opción que pyfliget , se puede usar?
Hola! Cuanto es la penalizacion por usar la libreria csv?
Hola!
@valerianazal Sí puedes usar tabulate
@sa-Appel Sí puedes usar Rich
, pero debes asegurarte que el output de tu tarea se vea correctamente en cualquier sistema operativo :eyes: (Windows, macOS, alguno Linux-based)
@mzigm El descuento por csv son 3 décimas (que no pueden ser eliminadas con el des-descuento de README), y no se dará puntaje en todas las celdas de la distribución que se vean beneficiadas por el uso de esta librería (En este caso, maneja correctamente los archivos csv).
Hola !! puedo hacer from archivo.py import *, es que necesito todos los datos que estan dentro del archivo
Hola, se puede usar exit()
cuanto descuentan por usar la libreria numpy?
Hola! (Feliz viernes)
@isidorabecker No puedes hacer eso, ya que es considerado mala práctica como se indica en la issue original. Debes usar las formas de importación permitidas.
@tsunayoshi21 Sí puedes usar exit()
@JuanVial1997 Numpy es una librería con bastantes usos, por lo que su descuento se evaluará durante la corrección (este puede ir entre 1 y 5 décimas, las cuales no pueden ser eliminadas con el des-descuento de Readme). Además, se darán 0 puntos en cualquier item que esté relacionado con su uso.
Hola! Se puede usar min(a,b) y max(a,b) para el método sanar_lesiones() ?
Hola @denisseleiva ! Sí puedes usar ambos, ya que son built-ins de python no prohibidos.
Puedo usar next
para buscar un objeto con cierto atributo en una lista?
@pedrobeckerj Sí puedes usar next
, ya que es un built-in de python
Si bien import *
es mala práctica, resulta tedioso escribir from parametros import PUNTAJE, OTRO_PARAMETRO, ...
cuando todos los parámetros se encuentran con nombres descriptivos.
¿Está entonces, permitido realizar el import de la forma import parametros as p
?
Hola @osonodml ! Sí, import parametros as p
es una de las formas válidas de importar funciones/parámetros de otros módulos.
Hola! Al instanciar una clase, la puedo dejar afuera de las funciones? Es decir, la definiría como una variable global... Sería una mala práctica hacerlo? Ya que, si lo es debería pasar mi clase función en función....
Hola @martin-iturralde! Sí, en ese caso se estaría haciendo uso de una variable global y sería considerado como mala práctica 😢 . Tu programa debería estar modelado de forma que no sea necesario el uso de este tipo de variables. Éxito! 🏅
@gatochico entonces no se puede instanciar una clase (por ejemplo campeonato) y después pasarla como parámetro a una función (ej menu principal)?
@denisseleiva Eso sí se puede hacer, siempre y cuando se la pases a la función como un argumento 🤓. Lo que es considerado variable global es instanciarla fuera de todas las funciones con el fin de llamarla dentro de dichas funciones sin tener que dársela como argumento. Algo así:
# Definimos una clase
class Clase:
def __init__(self):
self.saludo = "Hello"
def saludar(self):
print(self.saludo)
# Se instancia
clase_instanciada = Clase()
# Defino esta función, que no recibe como parámetro la instancia
def funcion():
# ...pero hago llamado a la instancia igual dentro de ella.
# Incluso desde dentro de la función le cambio un atributo.
clase_instanciada.saludo = "Hello world!"
# Ejecuto la función
funcion()
# Y cuando llamo a saludo de nuevo, el saludo ha cambiado :O
clase_instanciada.saludar()
Si ejecuto esto, me retornará: Hello World!
y no Hello
, por lo que se modificó el atributo de la clase al haber llamado a funcion()
. Si embargo nunca le dimos clase_instanciada
como argumento a funcion()
. Esto es lo considerado mala práctica, ya que en códigos de gran tamaño, como las tareas, esto dificulta la lectura del código. Sin embargo, si a las funciones le pasas la clase como argumento, se puede saber de forma más fácil de donde provienen las clases y variables utilizadas.
Esto sí sería permitido:
# Definimos una clase
class Clase:
def __init__(self):
self.saludo = "Hello"
def saludar(self):
print(self.saludo)
# Se instancia
clase_instanciada = Clase()
# Ahora si le doy el argumento
def funcion(clase):
# Le cambio el atributo, pero ya se de donde proviene la variable clase.
clase.saludo = "Hello world!"
# Ejecuto la función con la clase instanciada como argumento.
funcion(clase_instanciada)
# Y cuando llamo a saludo de nuevo, ha cambiado el valor, pero ya no es tan confuso como antes.
clase_instanciada.saludar()
Espero se haya entendido!
buenisimoo, muchas gracias!! @gatochico
se puede usar with open para abrir y editar archivo.txt?
@javiermingo with open
viene por defecto en python, por lo que sí puedes usarlo.
@denisseleiva Eso sí se puede hacer, siempre y cuando se la pases a la función como un argumento 🤓. Lo que es considerado variable global es instanciarla fuera de todas las funciones con el fin de llamarla dentro de dichas funciones sin tener que dársela como argumento. Algo así:
# Definimos una clase class Clase: def __init__(self): self.saludo = "Hello" def saludar(self): print(self.saludo) # Se instancia clase_instanciada = Clase() # Defino esta función, que no recibe como parámetro la instancia def funcion(): # ...pero hago llamado a la instancia igual dentro de ella. # Incluso desde dentro de la función le cambio un atributo. clase_instanciada.saludo = "Hello world!" # Ejecuto la función funcion() # Y cuando llamo a saludo de nuevo, el saludo ha cambiado :O clase_instanciada.saludar()
Si ejecuto esto, me retornará:
Hello World!
y noHello
, por lo que se modificó el atributo de la clase al haber llamado afuncion()
. Si embargo nunca le dimosclase_instanciada
como argumento afuncion()
. Esto es lo considerado mala práctica, ya que en códigos de gran tamaño, como las tareas, esto dificulta la lectura del código. Sin embargo, si a las funciones le pasas la clase como argumento, se puede saber de forma más fácil de donde provienen las clases y variables utilizadas.Esto sí sería permitido:
# Definimos una clase class Clase: def __init__(self): self.saludo = "Hello" def saludar(self): print(self.saludo) # Se instancia clase_instanciada = Clase() # Ahora si le doy el argumento def funcion(clase): # Le cambio el atributo, pero ya se de donde proviene la variable clase. clase.saludo = "Hello world!" # Ejecuto la función con la clase instanciada como argumento. funcion(clase_instanciada) # Y cuando llamo a saludo de nuevo, ha cambiado el valor, pero ya no es tan confuso como antes. clase_instanciada.saludar()
Espero se haya entendido!
Hablando de este tema (se que no tiene que ver con la issue pero justo salio el tema), me estaba preguntando como se hace en proyectos mas grandes donde hay muchas mas variables en el menu o algo por el estilo, uno no puede estar pasando 20 argumentos en cada función (se puede solucionar pasando solo 1 dicc pero igual no me parece ideal pasar algo de función en función a cada rato). No hay una forma de que se conserven los valores sin tener que estar pasandolos de función en función a cada rato?
@YehudaGurovich , podrías preguntar eso en una nueva issue? Creo que es una buena pregunta, pero de esa manera queda claro que es algo aparte y es más fácil de encontrar después nuevamente 👌
Ok!
Hola! se puede ocupar PrettyTable?
@RodrigoUC , No puedes usar PrettyTable
😞 . Investiga las otras opciones permitidas (beautifultable o pprint, por ejemplo).
Para consultar sobre una librería deben responder esta issue con una pregunta de la siguiente forma:
¡Recuerden especificar en su README qué librerías utilizan!
✔ Librerías Permitidas
❌ Librerías Prohibidas
☠️ Built-ins Prohibidos
(try/except)
(el uso correcto detry/except
es contenido que se verá en la semana 4 del curso, la cual no está incluida dentro de los contenidos que evalúa la T01)global
, ya que las variables globales son consideradas como malas prácticas.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:
parametros.py
.Import *
¡Éxito y vamos por la medalla de oro en la tarea 🏅!