TyperError'int'对象不可订阅

时间:2017-02-24 12:20:40

标签: python-3.x sorting typeerror bubble-sort

我正在尝试进行排序(基于冒泡排序),这将按字母顺序对单词进行排序。然而,它不断提出:

  

TypeError:'int'对象不可订阅。

它说错误在第25行和第28行,但我无法弄清楚我做错了什么。我知道我可以使用.sort(),但我想编写自己的排序功能。有什么建议吗?

代码是:

inp = input(r"Input: ")

inp = inp.split(" ")


def sort(inp):
    fin = False
    while not fin:
        fin = True
        pos = 0
        for i in range(0,len(inp)-1):
            if len(inp[i]) < len(inp[i+1]):
                overLen = len(inp[i])
            else:
                overLen = len(inp[i])
            if pos == overLen:
                if len(inp[i]) < len(inp[i+1]):
                    inp[pos] = inp[i]
                    inp[pos+1] = inp[i+1]
                else:
                    inp[pos] = inp[i+1]
                    inp[pos+1] = inp[i]
                fin = False
            elif inp[i[pos]] < inp[i+1[pos]]:
                inp[pos] = inp[i]
                inp[pos+1] = inp[i+1]
                fin = False
            elif inp[i[pos]] > inp[i+1[pos]]:
                inp[pos] = inp[i+1]
                inp[pos+1] = inp[i]
                fin = False
            else:
                pos += 1
                fin = False
    return(inp)

print(sort(inp))

1 个答案:

答案 0 :(得分:1)

i是一个整数,inp是您要排序的数组。您索引数组,而不是整数。

如果我理解你想要做的事情,那么这些就是你需要改变的事情:

添加索引以获得您想要的偏移量:
inp[i[pos]] - &gt; inp[i+pos]
inp[i+1[pos]] - &gt; inp[i+1+pos]