IIC2233 / Syllabus-2024-1

80 stars 10 forks source link

Librerías permitidas, no permitidas y malas prácticas T4 #503

Open gecoli opened 3 months ago

gecoli commented 3 months ago

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?

Toda librería que tenga que instalarse no está permitida.

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


Librerías Permitidas

Librerías y Herramientas Prohibidas

☠️ 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:

¡Ánimo y éxito en sus tareas!

javibust commented 3 months ago

Hola, se puede usar math?

gecoli commented 3 months ago

¡Buenas tardes, @javibust !

Sí, sí se puede ocupar math.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

josefa00 commented 3 months ago

Hola! Entonces lo que vimos en los contenidos de interfaces if name == 'main': def hook(type, value, traceback) -> None: print(type) print(traceback) sys.excepthook = hook

app = QApplication([])
ventana = MiVentana()
sys.exit(app.exec()) esta prohibido?
3rdPix commented 3 months ago

@josefa00 ¿Qué parte te refieres con exactitud? Todo lo que muestras está en Librerías permitidas.

AndresFerrerC commented 3 months ago

Se puede usar la librería re (de python)?, Es muy útil para verificar el nombre del usuario

IsidoraCarmona commented 3 months ago

@josefa00 ¿Qué parte te refieres con exactitud? Todo lo que muestras está en Librerías permitidas.

Me imagino que se refiere a exec(), yo tengo la misma duda, dado que dicen que esta prohibido, pero yo he visto que siempre lo usan

3rdPix commented 3 months ago

@josefa00 @IsidoraCarmona

Entiendo su duda. Lo que ocurre es que son métodos distintos. Lo que está prohibido es la función built-in de python exec. Sin embargo, el objeto QApplication tiene un método exec que es distinto al de python. Este último se utiliza para lanzar la aplicación en el framework de PyQt; por eso es que se muestra en las librerías permitidas como "app.exec()", para indicar que se refiere al objeto aplicación.

IsidoraCarmona commented 3 months ago

@josefa00 @IsidoraCarmona

Entiendo su duda. Lo que ocurre es que son métodos distintos. Lo que está prohibido es la función built-in de python exec. Sin embargo, el objeto QApplication tiene un método exec que es distinto al de python. Este último se utiliza para lanzar la aplicación en el framework de PyQt; por eso es que se muestra en las librerías permitidas como "app.exec()", para indicar que se refiere al objeto aplicación.

ahh okaa, entonces para abrir un pop up no se puede ocupar exec() cierto?

3rdPix commented 3 months ago

¿Un pop up dentro de tu juego? ¿Cómo un mensaje de error o algo semejante? Los QWidget también tienen el método, y es nuevamente distinto al de python. Por lo que en ese contexto se podría utilizar. Sin embargo, hay otros métodos que vienen con QWidget que pueden cumplir satisfactoriamente (y a veces es hasta mejor) el comportamiento de un pop up. Lo ideal es que puedan escudriñar en la documentación oficial de PyQt para que aprovechen y puedan trabajar bien con la librería,

gecoli commented 2 months ago

¡Buenos días, @AndresFerrerC !

Sí, sí se puede ocupar re.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

gecoli commented 2 months ago

¡Buenos días, @ArthurFJ !

Sí, sí se pueden ocupar pyqtSlots.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

Vicente1824 commented 2 months ago

Holi, ¿puedo usar annotations del módulo __future__? Es que me gustaría tener un thread que tome una ventana de juego como argumento y me gustaría tener la "anotación" de esa clase.

ArthurFJ commented 2 months ago

Puedo usar QPropertyAnimation de PyQt6.QtCore?

augustayanez commented 2 months ago

hola! se puede usar random?

Arielmild commented 2 months ago

Hola, ¿puedo usar la librería Turtle, para el movimiento de objeto?

waknaudt commented 2 months ago

Hola, se puede usar os.walk,os.listdir y os.scandir?

gecoli commented 2 months ago

¡Buenos días!

@Vicente1824 , sí se puede ocupar __future__.

@ArthurFJ , sí se puede ocupar QPropertyAnimation.

@augustayanez , sí se puede ocupar random.

@Arielmild , no, no se puede ocupar Turtle.

@waknaudt , sí, sí se pueden ocupar esos métodos de os.

¡Éxito en sus tareas! ꒰ᐢ. .ᐢ꒱₊˚⊹

JPBarrosG commented 2 months ago

Hola, se puede usar functools?

gecoli commented 2 months ago

¡Buenas, @JPBarrosG !

¿Puedes explicar a grandes rasgos para qué quieres ocuparla? 👀

waknaudt commented 2 months ago

Se puede usar sleep() del modulo time?

ArthurFJ commented 2 months ago

Hola, puedo usar AlignmentFlag y FoucsPolicy? Los saque de aca: https://doc.qt.io/qtforpython-6/PySide6/QtWidgets/QWidget.html#PySide6.QtWidgets.QWidget.setFocusPolicy https://forum.qt.io/topic/130569/center-align-in-pyqt6-python/4

LemmyLimonLimonada commented 2 months ago

Hola, puedo usar QPainter? Como que queda bonito jkasjksaj 🦅

gecoli commented 2 months ago

¡Buenas tardes, @waknaudt @ArthurFJ y @LemmyLimonLimonada !

Todo lo que piden usar, se pueden usar.

¡Éxito en sus tareas y manténganse secos! ꒰ᐢ. .ᐢ꒱₊˚⊹

undieguito commented 2 months ago

Buenas tardes, puedo ocupar try/except ValueError: (?) Saludos.

scovarrubiasm commented 2 months ago

Hola, en el main.py del cliente y servidor se puede usar except??

IsidoraCarmona commented 2 months ago

Hola, cuando dicen que no se pueden usar variables gloables se refieren a que no se puede hacer esto? class Clase: variable = [] def init(self): ..........

josegrz commented 2 months ago

Hola entonces si estría permitido usar exec() para QMessageBox? def button_clicked(self, s): dlg = QMessageBox(self) dlg.setWindowTitle("I have a question!") dlg.setText("This is a simple dialog") button = dlg.exec()

    if button == QMessageBox.StandardButton.Ok:
        print("OK!")

este ejemplo es de https://www.pythonguis.com/tutorials/pyqt6-dialogs/

Jpdelaf commented 2 months ago

@josegrz misma duda, escribo esto para que me llegue la notificación cuando te respondan.

Qjudini commented 2 months ago

se puede usar qwidget para las clases del cliente y el juego?

gecoli commented 2 months ago

Buenas tardes!

@undieguito y @scovarrubiasm es posible ocupar Try/Exception siempre y cuando se ocupe de manera debida (especificando la excepción a tratar y no un simple except Exception).

@IsidoraCarmona , eso se llama variable de clase, lo cual está permitido.

@josegrz , @Jpdelaf Ese exec() es distinto al prohibido, así que está permitido.

@Qjudini , sí, se puede ocupar.

¡Éxito en sus tareas! ꒰ᐢ. .ᐢ꒱₊˚⊹

rinsoni commented 2 months ago

holaa, se puede usar break de casualidad? lo pienso usar cuando un cliente se desconecte de golpe o haya algun error

jfierro2801 commented 2 months ago

Hola, se puede usar grabKeyboard?

nicolaslindl commented 2 months ago

hola, se puede usar qsplitter? para hacer las divisiones de la pantalla en la interfaz grafica de la ventana de juego

gecoli commented 2 months ago

¡Buenas tardes!

@rinsoni , no es recomendable ni una buena práctica ocupar break, pero tampoco será penalizado su correcto uso.

@jfierro2801 , si te requieres a la función de Qwidget, sí, sí se puede.

@nicolaslindl , sí, sí se puede ocupar.

¡Éxito en sus tareas! ꒰ᐢ. .ᐢ꒱₊˚⊹

brbaracanales commented 2 months ago

Hola! se puede usar glob.glob()?

gecoli commented 2 months ago

Buenas noches, @brbaracanales

Lamento la confusión, sí se puede!

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

Bonjour1X commented 2 months ago

¿puedo usar "os.path.dirname("file")","os.path.abspath("file")", como os.path.join("...", "...") para abrir o colocar "algo" al menú/tarea? ya que lo ví en una ayudantia y estaba viendo como adaptarlo con los demas os.path y me esta sirviendo en un momento

gecoli commented 2 months ago

Buenas noches, @Bonjour1X !

Sí, sí se puede ocupar.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

R3Y3X commented 2 months ago

hola esta perimitido usar self.exec() para un Qthread ?

gecoli commented 2 months ago

Buenas, @R3Y3X

¿Puedes explicar para qué quieres ocuparlo en vez de run? 👀

BenjaMedinaPUC commented 2 months ago

Hola! se puede usar itemgetter de operator? para ordenar numeros estaré atento a la respuesta

gecoli commented 2 months ago

Buenas, @BenjaMedinaPUC !

Sí, sí se puede.

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹

R3Y3X commented 2 months ago

Buenas, @gecoli

¿Puedes explicar para qué quieres ocuparlo en vez de run? 👀 utilizo run pero lueg utilizo self.exec() para que cuando el usuario haga mas movimientos de pepa no se caiga el programa y pueda ejecutarlos uno detras de otros

gecoli commented 2 months ago

@R3Y3X

Puedes ocuparlo!

¡Éxito en tu tarea! ꒰ᐢ. .ᐢ꒱₊˚⊹