我是一名蟒蛇新手,因为我是一名10年级的学生,正在攻读GCSE计算机科学。我正在尝试对冒泡排序算法进行编码,我对TypeError: Can't convert 'int' object to str implicitly
感到磕磕绊绊,因为我使用x
同时检查了length
和isinstance()
,所以我一无所知都是整数。有人帮忙! :)
到目前为止,这是我的代码:
x = 1
list1 = list(input("What numbers need sorting? Enter them as all one - "))
length = len(list1)
print(list1)
while True:
for i in range(0,length):
try:
if list1[i] > list1[i+1]:
x = list1[i]
list1.remove(x)
list1.insert(i+1,x)
print(list1)
if list1[i] < list1[i+1]:
x += 1
print(list1)
except IndexError:
break
if x == length:
print("The sorted list is - ",''.join(list1))
break
答案 0 :(得分:0)
list1
由整数组成(大概是;它取决于用户输入的内容但代码主要是编写好像它需要一个整数列表),但是你使用''.join
作为整数虽然它包含字符串:
>>> ''.join([0])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> ''.join(['0'])
'0'
>>>
答案 1 :(得分:0)
错误发生在join(list1)
电话中。 str.join
需要可迭代的字符串 。但是,list1
是一个整数列表。因此,它出错了。
您可以通过将列表的元素映射到str
等效项来修复错误本身,方法是:
print("The sorted list is - ",''.join(map(str, list1))
但话虽如此,代码很容易出错:
x
来计算订购的元素和交换元素; x
,因此你会计算两次气泡。IndexError
非常不优雅,因为您还可以限制i
的范围。可能更优雅的解决方案是:
unsorted = True
while unsorted:
unsorted = False # declare the list sorted
# unless we see a bubble that proves otherwise
for i in range(len(l)-1): # avoid indexerrors
if l[i] > l[i+1]:
unsorted = True # the list appears to be unsorted
l[i+1], l[i] = l[i], l[i+1] # swap elements
print(l) # print the list using repr