练习函数我创建了一个函数来对数字列表进行排序(Python 3.x):
def insertion_sort(list):
for index in range(1, len(list)):
value = list[index]
i = index -1
while i >= 0:
if value < list[i]:
list[i+1] = list[i]
list[i] = value
i = i - 1
else:
break
使用python解释器我得到了这个:
>>> a = [5,3,7,9,1,8,6,2,4]
>>> insertion_sort(a)
>>> print(a)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
如果在python解释器中使用这个函数效果很好但是我想做更多并使用输入法来“询问”数字,所以我这样做了......
a = input("Enter a list of numbers separated by a comma: ")
c = set(a)
b = []
b.append(c)
insertion_sort(b)
print (b)
当我运行代码并输入数字537918624
时,我得到了这个:
[{'8', '9', '2', '3', '1', '6', '7', '4', '5'}]
为什么不对它进行排序?如何在没有引号的情况下打印列表?
答案 0 :(得分:0)
引号表示您的集合中有字符串,而不是整数。 input
会一直给你一个字符串;您可以使用int()
将字符串转换为整数。
此外,您正在为排序功能提供一个列表,其中包含一个项目set
。使用单个项目对列表进行排序没有任何意义。
我会按如下方式处理:
ui = input(...) # take input e.g. "1, 2, 3"
numbers = list(map(int, ui.split(","))) # turn to list of ints [1, 2, 3]
insertion_sort(numbers) # sort the list
没有必要使用set
- 如果有重复的数字,您的排序算法应该能够管理它。
您输入的内容没有逗号 - 我假设(根据提示!)用户应该输入例如: 5,3,79,...
。
最后,请注意,您不应该将参数调用insertion_sort
list
,因为这会影响内置。