小编典典

在python中对数字进行排序

python

我正在尝试获得一个函数,如果您对它进行排序(列表名),它将对该列表中的所有数字进行从最小到最大的排序。

我不确定我的问题是什么,但是我需要一些帮助,因为输出实际上并不是最小到最大,对于输出的前两个数字来说,它最小到最大。

范例:

如果list中有23、212、44个,而不是我对它进行排序,则输出将是这样。

输出:

212,23,44

应该是 23、44、212。

码:

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

更多代码:

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)

阅读 243

收藏
2021-01-20

共1个答案

小编典典

看起来您的列表中除了字符串以外没有任何数字。Python不会尝试猜测这些字符串中可能包含的内容,因此您会得到一个奇怪的排序顺序。

您有两种选择:

  1. int在比较之前将列表元素转换为(if(int(my_list[j]) > int(my_list[j+1])):
  2. 在此站点上搜索python natural sort以获取有关如何在Python中实现“自然排序”的答案。
2021-01-20