Python - 使用bubblesort模块的小字符串连接/语法错误

时间:2013-02-10 02:54:53

标签: python string variables concatenation

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

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],则bubblesort按预期运行。我只需要弄清楚如何正确存储用户在数组中输入的数字。

谢谢。

2 个答案:

答案 0 :(得分: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方法拆分字符串并返回结果列表。

答案 1 :(得分: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]