Foros Python

Versión completa: Comparar 2 cadenas que contiene números.
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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.

Código:
miLista = []
ban = 0

while True:
    ingreso = input(" Ingreso...: ")
    if not ingreso:
        break
    if len(miLista) > 0:
        indice, ban = 0,0
        for ord in miLista:
            if int(ingreso) < int(ord):
                miLista.insert(indice, ingreso)
                ban = 1
                break
            indice += 1
        if ban == 0:
            miLista.append(ingreso)
    else:
        miLista.append(ingreso)
   
print(miLista)
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:

Código:
>>> a = "10"
>>> b = "2"
>>> a > b
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