Autor Tema: Comparar 2 números contenidos en variables tipo cadena.  (Leído 1051 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Comparar 2 números contenidos en variables tipo cadena.
« en: 02 de Noviembre de 2021, 18:22:08 »
Hola gente ¿Cómo están?, hice esto para practicar y me encuentro con el siguiente inconveniente, ya se que podría validar que si el primer ingreso es un número que el resto sean todos números y lo mismo si el primer ingreso es una palabra que todo el resto sean palabras.-
La pregunta es ¿se puede comparar 2 números contenidos en 2 string?, lei que la comparación se efectúa mediante el código ascii de cada letra y por lo general el orden no era correcto.-
Probé también con esto y lo mismo si ingreso números no ordena y con palabras si todo correcto.-

Código: Python
  1. import bisect
  2.  
  3. nombres = []
  4. while True:
  5.     ingreso = input(" Ingreso...: ")
  6.     if not ingreso:
  7.         break
  8.     bisect.insort(nombres, ingreso)
  9.  
  10. print(nombres)


Bueno es todo, les agradezco a los 2 por el invalorable apoyo y prometo ser criterioso y quitarles el menor tiempo posible, abrazo Daniel.
PD. También podría ordenar la lista al finalizar pero esto es tan sólo para aprender.


Código: Python
  1. miLista = []
  2. ban = 0
  3.  
  4. while True:
  5.     ingreso = input(" Ingreso...: ")
  6.     if not ingreso:
  7.         break
  8.     if len(miLista) > 0:
  9.         indice, ban = 0,0
  10.         for ord in miLista:
  11.             if int(ingreso) < int(ord):
  12.                 miLista.insert(indice, ingreso)
  13.                 ban = 1
  14.                 break
  15.             indice += 1
  16.         if ban == 0:
  17.             miLista.append(ingreso)
  18.     else:
  19.         miLista.append(ingreso)
  20.    
  21. print(miLista)
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Comparar 2 números contenidos en variables tipo cadena.
« Respuesta #1 en: 03 de Noviembre de 2021, 05:39:11 »
Quizá es esto lo que buscas:

Código: Python
  1. nombres = []
  2. while True:
  3.     ingreso = input(" Ingreso...: ")
  4.     if not ingreso:
  5.         break
  6.     try:
  7.         ingreso = "{num:>15.7f}".format(num=float(ingreso))
  8.     except:
  9.         pass
  10.     nombres.append(ingreso)
  11.  
  12. nombres.sort()
  13. print(nombres)
« Última modificación: 03 de Noviembre de 2021, 05:48:45 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5892
    • Picuino
Re:Comparar 2 números contenidos en variables tipo cadena.
« Respuesta #2 en: 03 de Noviembre de 2021, 08:02:43 »
Más difícil. Ahora con una función de comparación personalizada que devuelve los números como más pequeños que las cadenas de texto. Compara los números entre si y las cadenas entre si de forma tradicional.

Código: Python
  1. import functools
  2.  
  3. def isnum(a):
  4.     try:
  5.         num = float(a)
  6.         return True
  7.     except:
  8.         return False
  9.  
  10. def compare(a, b):
  11.     if isnum(a) and isnum(b):
  12.         if float(a) < float(b):
  13.             return -1
  14.         else:
  15.             return 1
  16.     elif not isnum(a) and not isnum(b):
  17.         if  a < b:
  18.             return -1
  19.         else:
  20.             return 1
  21.     elif isnum(a) and not isnum(b):
  22.         return -1
  23.     else:
  24.         return 1
  25.  
  26.  
  27. nombres = ['1', 'Hola', '100', 'mundo', '15.34', '10', 'Abba' ]
  28.  
  29. nombres.sort(key=functools.cmp_to_key(compare))
  30. print(nombres)

Resultado:
['1', '10', '15.34', '100', 'Abba', 'Hola', 'mundo']
« Última modificación: 03 de Noviembre de 2021, 08:04:54 por Picuino »

Desconectado Daniel1952

  • PIC16
  • ***
  • Mensajes: 127
Re:Comparar 2 números contenidos en variables tipo cadena.
« Respuesta #3 en: 04 de Noviembre de 2021, 11:28:16 »
Hola gente linda ¿Cómo están? Hola Picuino, gracias x el código mas completo no se puede pedir, lo tengo archivado para unos días estoy demasiado entusiasmado con los archivos.-
Gracias y un fuerte saludo desde Argentina.-
slds. Daniel
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-


 

anything