@AgileSoul Hay dos nombres y un solo objeto. En Python, A=B no hace una copia de B, sino que deja A y B apuntando a lo mismo. Cualquier cambio en uno se refleja en el otro. Ahora, si A sea inmutable (un string, por ejemplo), se genera una copia. Las listas son mutables; no se copian.
Soy nuevo y en una tarea tengo que construir un exception logger. Me dan una estructura y me piden elevar tres tipos de error. Para mi *args y **kwargs son los parámetros pero debo probar la salida. Es decir que debo llamar una función para el código y debo crearla?. No es clara la instrucció...
Sí, yo también observo mucha premura en los cierres. A menudo alguien pone una mala pregunta. Además del comentario pidiéndole que la arregle, suele recibir inmediatamente un negativo y un voto de cierre. En cuestión de pocas horas ya ha recibido tres votos y está cerrada. Todo ello mientras el OP quizás esté durmiendo (puede estar en otra zona horaria!). Yo esperaría como mínimo 16h tras el comentario de advertencia
gbianchi me enseñó a esperar 1 min. El dijo que si alguien está interesado por resolver su problema va a permanecer en el sitio y leerá los comentario y 1 min es suficiente para que responda a un comentario
Pues no estoy de acuerdo. No sabemos nada de la vida de otras personas. Por muy interesado que pueda estar en la respuesta, lo mismo en ese momento le llaman por teléfono para un asunto urgente
no veo por qué hay que estar en tensión atendiendo a los mods bajo la presión de que si no corriges rápidamente la pregunta será cerrada. SO no es un chat en tiempo real
por la misma razón, un OP tampoco debe suponer que su pregunta vaya a ser respondida inmediatamente y que si no es así es que "nadie sabe la respuesta"
los tiempos de reacción en SO creo que deben medirse en horas y no en minutos
pero todo eso está relacionado con la creación de paquetes de cara a publicarlos para pip
de modo que quien haga pip install instale tu paquete y las dependencias necesarias para que funcione (pero no las dependencias que tú como desarrollador instalaste, por ejemplo pytest y otras)
todo el asunto de la gestión de paquetes es bastante farragoso, la verdad. Hay un gestor llamado poetry que se supone que te simplifica la vida (y que es más robusto de cara a manejar dependencias complicadas) pero nunca lo usé
@gbianchi Pero supongo que es un problema generalizado de cualquier entorno de desarrollo mínimamente complejo. En js tienes el infame node_modules que crece cual agujero negro, en Android tienes el infame gradle y miles de problemas de dependencias en las que si cambias un dígito de una minor version de algun requisito ya nada funciona...
Y a la vez supongo que en todos estos casos, la razón última de la complicación es una mala gestión por parte del usuario/desarrollador, que al no comprender claramente el problema que hay debajo, no se molesta en arreglarlo sino por "fuerza bruta", dando palos de ciego y complicándolo aún más
incluso docker, que venía a resolver ese problema, puede caer también en lo mismo si en los Dockerfiles no especificas claramente qué versión de qué imagen y de qué cosa instalas, y confias en que la versión latest vaya a funcionar siempre bien
@gbianchi En realidad es bastante simple también. Un entorno virtual no es nada especial, salvo una carpeta que contiene el ejecutable y las librerías necesarias. Es una cápsula de deploy
el problema es cuando usas en un mismo script pyhon librerías que están en su entorno virtual y otras que no lo están (pero que son accesibles al intérprete por estar en carpetas de sistema)
pero eso suele deberse a un error del desarrollador que instaló cosas fuera del entorno sin darse cuenta
Pues en producción obviamente necesitas como mínimo un interprete python, a poder ser de la misma versión que el usado en desarrollo. Lo que copias a producción es un requirements.txt junto con tus scripts, y entonces en producción haces:
@abulafia todo esto, lo deberia hacer un tercero que no conoce de .py absolutamente nada.. y la tercer linea no la podia ejecutar.. en su momento, lo hablamos...
problemas internos de como se hace un deploy en mi compañia...
@abulafia más que crear mi propio paquete de pip solo quiero crear el ejecutable de mi intérprete
Para el funcionamiento no se requiere más que la importación de sys y por eso es que pytest esta de más (al igual que el directorio que contiene los test)
@JuanPerez O sea no quieres una función ya armada? entonces como te dijo gonzalo, tienes que escribir tu función de Sort, un buen lugar por dónde empezar: programiz.com/dsa/bubble-sort
def ordenamiento(lista):
for n in range(len(lista) -1, 0, -1):
posicion_maxima = 0
for l in range(1, n + 1):
if lista[l] > lista[posicion_maxima]:
posicion_maxima = l
temp = lista[n]
lista[n] = lista[posicion_maxima]
lista[posicion_maxima] = temp
jsc_arr = np.array(jsc_lista_contactos)
for x in jsc_arr:
anti = x['antiguedad']
ordenamiento(anti)
Intente hacer algo así...
lista[n] = lista[posicion_maxima]
TypeError: 'str' object does not support item assignment
Entonces anti no es una lista, le estas pasando cualquier cosa a ordenamiento, ese es el problema. Por otro lado no entiendo por que vas de jsc_lista_contactos a un array de numpy si no vas a ordenar usando las funciones de numy. jsc_lista_contactos es una lista? que contiene?
import numpy as np
"""
El departamento de fidelización de una empresa requiere almacenar información de sus clientes más fieles. La solución debe incluir mínimo 2 clases con sus respectivos atributos y métodos (adicionales al método constructor). Se requiere un programa que contenga las siguientes opciones en su menú.
1) Agregar cliente (nombre, cédula, teléfono, antigüedad en años, si tiene carné de fidelización o no).
2) Mostrar clientes.
3) Mostrar clientes por antigüedad.
4) Mostrar clientes que no hayan recibido carné de fidelización.
jsc_lista_contactos es una lista dónde cada elemento es un diccionario, y lo que buscas es ordenar esta lista en función de cierto dato (antiguedad) que hay en cada diccionario. El tema es que tienes que adaptar tu rutina de ordenamiento para que logre procesar la estructura de datos, ahora mismo solo escribiste una rutina que ordena una lista con cadenas.
El quid de la cuestión es la comparación de los valores en la función de ordenamiento: lista[l] > lista[posicion_maxima], tienes que adaptar esto a la lista jsc_lista_contactos.