Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Comparar 2 cadenas que contiene números.
#1
Hola Francisco ¿Cómo estas?, 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 cadenas que contienen números?, 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.-
Bueno es todo, desde ya gracias, abrazo Daniel.
PD. También podría ordenar la lista al finalizar pero esto es tan sólo para aprender.

  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.-
Responder
#2
Hola, Daniel. Todo en orden por acá.

Se pueden comparar dos cadenas que contengan números, pero, a menos que sean números entre 0 y 9, el resultado será incorrecto en muchos escenarios. Por ejemplo:

  1. >>> a = "10"
  2. >>> b = "2"
  3. >>> a > b
  4. False


Como bien decís, al comparar dos cadenas usando los operadores > y <, el criterio es el código ASCII de cada carácter. (Este código se obtiene con la función incorporada ord(), así que no deberías usarla como nombre de variable). El código ASCII del carácter 2 es 50, mientras que el de 1 es 49, de ahí que "2" > "10" (cuando las cadenas tienen más de un carácter, se compara el primer carácter de la cadena A con el primer carácter de la cadena B, el segundo de la cadena A con el segundo de la cadena B, y así sucesivamente).

Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 2 invitado(s)