0

我正在开发一个程序,对用户输入的一系列数字进行冒泡排序。我似乎有一个小的语法错误。这就是我所拥有的:

my_list = '[' + input('Please enter 5 numbers, separated by commas. ') + ']'
length = len(my_list)
for i in range(length):
    for j in range(length-1):
        if my_list[j] > my_list[j+1]:
            my_list[j], my_list[j+1] = my_list[j+1], my_list[j]
        print(my_list)

这给我带来了:

File "C:/Users/Luke/Dropbox/Programming/SDD real.py", line 19, in <module>
my_list[j], my_list[j+1] = my_list[j+1], my_list[j]

TypeError:“str”对象不支持项目分配

如果我将 my_list 设置为预定义的数字列表,例如:[1,5,2,3,4],则冒泡排序会按预期运行。我只需要弄清楚如何正确地将用户输入的数字存储在数组中。

谢谢你。

4

2 回答 2

1

代替:

my_list = '[' + input('Please enter 5 numbers, separated by commas. ') + ']'

和:

my_list = list(map(int, input('Please enter 5 numbers, separated by commas. ').strip().split(',')))

或者:

my_list = [int(i) for i in input('Please enter 5 numbers, separated by commas. ').strip().split(',')]

在您的代码中,my_list不是列表,而是字符串。使用str.strip删除空格的str.split方法和拆分字符串并返回结果列表的方法。

于 2013-02-10T02:59:47.133 回答
1

这不是您应该创建列表的方式。相反,请执行以下操作:

>>> my_list = list(input('Please enter 5 numbers, separated by commas. '))
Please enter 5 numbers, separated by commas. 1, 2, 3, 4, 5
>>> print my_list
[1, 2, 3, 4, 5]
于 2013-02-10T02:59:53.320 回答