如何解决“TypeError:unorderable types:str()< int()”错误?

时间:2016-07-09 00:40:44

标签: python python-3.x

我是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() 
检查功能的

错误。我该如何解决?提前致谢!

我意识到这不是最有效的分拣机,但我只需要完成这个项目。

1 个答案:

答案 0 :(得分:1)

这种异常最有可能在这里提出:

int(list[indexcounter2]) <= list[indexcounter2 + 1]

如果您确定只使用数字,则可以在致电int后使用以下内容将列表中的所有元素更改为input

nums = list(map(int, values.split()))

这会获取int对象并将其映射到values.split中的每个值,如果values.split中的值无法转换为int则异常即将发生被提升。

正如您所看到的,我没有使用名称list来获取从input收到的值,您不应该listPython中的内置对象,并通过将该名称指定给您屏蔽该内置对象的另一个值。所以将你的第一行改为:

values = input("Please put in a random set of integers, in any order you like (unlimited range), separated by spaces:")