我是Python的新手(我只有14岁),我想为随机的整数列表创建一个冒泡分类器。以下是我的代码:
list = input("Please put in a random set of integers, in any order you like (unlimited range), separated by spaces:")
list = list.split()
indexcounter = 0
def sorter(list, indexcounter):
for v in list:
int(v)
while indexcounter < len(list) - 1:
if list[indexcounter] <= list[indexcounter + 1]:
indexcounter += 1
else:
b = list[indexcounter + 1]
list[indexcounter + 1] = list[indexcounter]
list[indexcounter] = b
indexcounter += 1
print(list)
indexcounter2 = 0
def checker(list, indexcounter2):
for v in list:
int(v)
while indexcounter2 <= len(list) - 1:
if list[indexcounter2] < len(list) - 1:
if int(list[indexcounter2]) <= list[indexcounter2 + 1]:
indexcounter2 += 1
elif int(list[indexcounter2]) == len(list) - 1:
print("Process finished." + list)
else:
sorter(list, indexcounter2)
sorter(list, indexcounter)
checker(list, indexcounter2)
基本上,如果列表中的一个整数小于后面的整数,我继续前进并检查列表中的下一个值。如果没有,我将列表中的两个项目相互替换。当该过程完成时,我调用一个“检查器”函数,该函数查看列表是否从最小到最大顺序。如果是,那么我打印完成的列表。如果没有,那么我再次运行分拣机功能。这一直重复,直到列表完成。
然而,我一直在:
TypeError: unorderable types: str() < int()
检查功能的错误。我该如何解决?提前致谢!
我意识到这不是最有效的分拣机,但我只需要完成这个项目。
答案 0 :(得分:1)
这种异常最有可能在这里提出:
int(list[indexcounter2]) <= list[indexcounter2 + 1]
如果您确定只使用数字,则可以在致电int
后使用以下内容将列表中的所有元素更改为input
:
nums = list(map(int, values.split()))
这会获取int
对象并将其映射到values.split
中的每个值,如果values.split
中的值无法转换为int
则异常即将发生被提升。
正如您所看到的,我没有使用名称list
来获取从input
和收到的值,您不应该,list
是Python
中的内置对象,并通过将该名称指定给您屏蔽该内置对象的另一个值。所以将你的第一行改为:
values = input("Please put in a random set of integers, in any order you like (unlimited range), separated by spaces:")