我正在开发一个程序,用于对用户输入的一系列数字进行排序。我似乎有一个小的语法错误。这就是我所拥有的:
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按预期运行。我只需要弄清楚如何正确存储用户在数组中输入的数字。
谢谢。
答案 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]