Ordenar números en python

Estoy tratando de obtener una función en la que si clasificas (nombre de lista) clasificaría todos los números dentro de esa lista de menor a mayor.

No estoy seguro de lo que está mal con el mío, pero necesito algo de ayuda, ya que la salida no es realmente la mejor, sino la mejor para los dos primeros números del número.

Ejemplo:

Si la lista tiene 23, 212, 44 en la ordenación, la salida será así.

Salida:

212,23,44

Debería ser 23, 44, 212.

Código:

def sort(my_list): size = len(my_list) for i in range(size): for j in range(size-i-1): if(my_list[j] > my_list[j+1]): tmp = my_list[j] my_list[j] = my_list[j+1] my_list[j+1] = tmp 

Más código:

 numbers=([]) amount=input("How many numbers are in your list? ") print("") counter = 0 ran = 0 while counter < int(amount): counter = counter + 1 ran = ran + 1 num3 = input(str(ran) + ". Input: ") try: val = int(num3) except ValueError: num3 = input(str(ran) + ". Input: ") sort(numbers) numbers.append(num3) 

Parece que tu lista no contiene ningún número sino cadenas. Python no intenta adivinar lo que podría haber dentro de esas cadenas, por lo que obtienes un orden extraño.

Tienes dos opciones:

  1. Convierta los elementos de la lista a int antes de compararlos ( if(int(my_list[j]) > int(my_list[j+1])):
  2. Busque en este sitio python natural sort para obtener respuestas sobre cómo implementar la “clasificación natural” en Python.

Si solo quieres ordenarlo, usa ordenado:

 sorted_my_list = sorted(my_list,key=int) 

O para clasificarlo, en su lugar, usar

 my_list.sort(key=int) 

Si desea arreglar su progtwig, convierta my_list en ints o al menos compare enteros

 if ( int(my_list[j]) > int(my_list[j+1])): 

Además, puedes intercambiar dos variables en una statement:

 my_list[j],my_list[j+1] = my_list[j+1],my_list[j] 

Acabo de usar su código (acaba de agregar una statement de return ). Y devuelve los valores esperados:

 def sort(my_list): size = len(my_list) for i in range(size): for j in range(size-i-1): if(my_list[j] > my_list[j+1]): tmp = my_list[j] my_list[j] = my_list[j+1] my_list[j+1] = tmp return my_list # Note I added this return statement print sort([23,212,44]) >>> [23, 44, 212]