Autor
|
Tema: [Python3]¿Cómo lo puedo optimizar? (Leído 6,801 veces)
|
reconFito
Desconectado
Mensajes: 31
|
Básicamente se trata de una guía telefónica, la cual tiene ser construida usando diccionarios esa es la restricción, en la cual se puede realizar una búsqueda por el nombre de la persona y luego imprimir ese nombre con su respectivo número.PERO TODO INDICA QUE LE FALTA UNA MEJOR OPTIMIZACIÓN.Gracias por sus respuestas. def phone_book(): n = int(input()) phone_book = {} # dictionary for i in range(n): string = input().split() phone_book.update({string[0]: int(string[1])}) return phone_book # processing def query(phone_book): i = 0 while i < len(phone_book): _query = input() if _query in phone_book: print(f"{_query}={phone_book[_query]}") else: print("Not found") i += 1 query(phone_book()) [/
|
|
« Última modificación: 15 Enero 2020, 00:39 am por reconFito »
|
En línea
|
|
|
|
engel lex
|
[code=python]def query(phone_book): for i in range(len(phone_book)): _query = input()
no entiendo la cantidad de ciclos alli el primero... estás haciendo un query, entonces para que repetirlo tanto como numeros de telefonos haya? solo lo necesitas hacer una vez y listo... luego aqui if _query in phone_book: for key in phone_book: if _query == key: print(f"{key}={phone_book[key]}") else: print("Not found")
no entiendo que hace el ciclo, es decir si query está en el phone_book, tan simple como que lo puedes acceder, no tienes que recorrer el diccionario, ese es el punto de los mismos... con correcciones quedaría según mi estilo def phone_book(): n = int(input("indica cuantos numeros vas a ingresar: ")) # 1* phone_book = {} for i in range(n): buff = input("ingresa el nombre un espacio y el numero: ") # 2* nombre, numero = buff.split(" ", 1) # 3* phone_book[nombre] = numero # 4* return phone_book def query(phone_book): _query = input("ingresa el nombre a buscar: ") if _query in phone_book: print(f"{_query}={phone_book[_query]}") # 5* else: print("Not found") query(phone_book())
1* importante saber que pides 2* cuidado con usar palabras reservadas, no te vaya a traer errores mas adelante 3* aunque parezca redundante ayuda a dejar claro y visible lo que pasa 4* ya que no estás fusionando 2 diccionarios si no agregando un solo elemento, no es necesario usar update con un diccionario temporal 5* cuidado con la impresion de formato, esto es apropiado para debug pero puede traerte problemas en un sistema de produccion [/code]
|
|
« Última modificación: 14 Enero 2020, 05:17 am por engel lex »
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
@XSStringManolo
Hacker/Programador
Colaborador
Desconectado
Mensajes: 2.399
Turn off the red ligth
|
Los bucles while son más rápidos que los for en prácticamente todos los lengujes (en javascript no porque hacen cosas raras con los engine)
while --n:
Al llegar a 0 para solo porque equivale a false, no tienes que declarar ni iterar i ni comprobar el condicional de i con n.
Si buscas performance usa asyncio, multithread, controla instancias programáticamente o algo así. Testea y compara.
|
|
|
En línea
|
Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖
|
|
|
engel lex
|
Los bucles while son más rápidos que los for en prácticamente todos los lengujes (en javascript no porque hacen cosas raras con los engine)
while --n:
Al llegar a 0 para solo porque equivale a false, no tienes que declarar ni iterar i ni comprobar el condicional de i con n.
Si buscas performance usa asyncio, multithread, controla instancias programáticamente o algo así. Testea y compara.
insisto... los while a nivel de compilador son básicamente lo mismo, incluso si tuvieran 3 o 4 instrucciones extra es irrelevante incluso ante una suma... por otro lado, mira el tema y el código para tirar de cosas como esas librerias... es decir, virtualmente no creo que sea si quiera posible aplicarlas aqui... estamos hablando de un problema de algoritmia, no de limitacion de sistema por otro lado en python es preferible que uses el for para navegar los array ya que en el interprete se hace a bajo nivel en comparacion con tu accesandolo por ciclo
|
|
« Última modificación: 14 Enero 2020, 08:15 am por engel lex »
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
reconFito
Desconectado
Mensajes: 31
|
Obtuve un buen resultado usando el bucle while en la busqueda. Pero parece que aun le falta más optimización
|
|
|
En línea
|
|
|
|
engel lex
|
insisto... ni si quiera se para que haces una busqueda... :s es decir, tienes que obligatoriamente hacer una busqueda con un ciclo? porque python la hace por ti...
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
reconFito
Desconectado
Mensajes: 31
|
Si tengo que usar un ciclo ya que la cantidad de busquedas es igual a la longitud del diccionario. Es una práctica de HackerRank, con el ciclo while logre componer un error de compilación ahora obtengo un Runtime Error y busque en san google y encontre que es por falta de optimización pero no se que más hacerle.
|
|
|
En línea
|
|
|
|
engel lex
|
estás seguro que estás trabajando en python? python no compila, asi que no puedes tener errores de compilacion... y runtime error es un error generico que no recuerdo que python muestre, python da errores muy detallados tipo Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined que interprete de pyhton usas? como dice exactamente el problema que resuelves?
|
|
« Última modificación: 15 Enero 2020, 01:42 am por engel lex »
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
reconFito
Desconectado
Mensajes: 31
|
¿Que está?
|
|
|
En línea
|
|
|
|
engel lex
|
disculpa, estaba escribiendo y se mandó el mensaje... aqui completo estás seguro que estás trabajando en python? python no compila, asi que no puedes tener errores de compilacion... y runtime error es un error generico que no recuerdo que python muestre, python da errores muy detallados tipo Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'a' is not defined que interprete de pyhton usas? como dice exactamente el problema que resuelves?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
¿Como optimizar conexión wifi?
Wireless en Windows
|
motocros_elche
|
5
|
5,128
|
23 Diciembre 2012, 10:55 am
por zydas
|
|
|
como optimizar programas
Programación C/C++
|
Drewermerc
|
6
|
3,171
|
16 Mayo 2014, 05:55 am
por Drewermerc
|
|
|
Como podríamos optimizar al ser humano
« 1 2 »
Foro Libre
|
Ori-chan
|
11
|
5,584
|
31 Mayo 2015, 08:12 am
por scott_
|
|
|
[RESUELTO] ejecutar recv() temporalmente | Python3 sockets
Scripting
|
Drakaris
|
1
|
3,424
|
14 Agosto 2020, 16:39 pm
por Drakaris
|
|
|
Como puedo optimizar esta consulta?
Desarrollo Web
|
Panic0
|
2
|
2,322
|
24 Julio 2021, 16:36 pm
por Panic0
|
|