我正在尝试获得一个函数,如果您执行 sort(listname) ,它会将该列表中的所有数字从最小到最大排序。
我不确定我的问题出在哪里,但我需要一些帮助,因为输出实际上并不是从最小到最大,而是数字的前两个数字从最小到最大。
示例:
If list has 23, 212, 44 in it than I sort it the output will be like this.
输出:
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)
请您参考如下方法:
看起来您的列表不包含任何数字,但包含字符串。 Python 不会尝试猜测这些字符串中可能包含什么,因此您会得到一个奇怪的排序顺序。
你有两个选择:
- 在比较它们之前将列表元素转换为
int(if(int(my_list[j]) > int(my_list[j+1])):)< - 在本网站上搜索
python natural sort以获得如何在 Python 中实现“自然排序”的答案。
