TypeError:- 的操作数类型不受支持:'str' 和 'int' (Python)

新手上路,请多包涵

我已经用 python 编写了快速排序的代码,但是这段代码抛出了一个错误。

 ----------

    k=0
    def partition(arr,low_index,high_index):
        key = arr[low_index]
        i = low_index + 1;
        j = high_index

        while True:
            while (i<high_index and key>=arr[i]):
                i+=1
            while (key<arr[j]):
                j-=1
            if i<j:
                arr[i,j] = arr[j,i]
            else:
                arr[low_index,j]=arr[j,low_index]
                return j

    def quicksort(arr,low_index,high_index):
         if low_index < high_index:
            j = partition(low_index,high_index,arr)
            print("Pivot element with index "+str(j)+" has thread "+str(k))
            if left<j:
                k=k+1
                quicksort(arr,low_index, j - 1)
            if i<right:
                k=k+1
                quicksort(arr,j+1,high_index)
         return arr

    n = input("Enter the value n ")
    arr=input("Enter the "+str(n)+" no. of elements ")
    brr=quicksort(arr,0,n-1)
    print("Elements after sorting are "+str(brr))

----------

它抛出的错误是

输入值 n 4

输入 4 号。元素 [5,6,2,7] 追溯(最近调用最后一次):文件“C:\Users\devendrabhat\Documents\dev\dev\quick.py”,第 38 行,在 brr=quicksort(arr,0 ,n-1) TypeError: 不支持的操作数类型 -: ‘str’ 和 ‘int’

原文由 Devendra Bhat 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 783
2 个回答

n 是字符串。所以你需要把它改成int:

 n = int(n)

如果您在第 37 行输入 [5,6,2,7],python 会将其解释为类似“[5,6,2,7]”的字符串。因此,您需要将字符串转换为列表。

 arr = eval(arr)

原文由 Hironsan 发布,翻译遵循 CC BY-SA 3.0 许可协议

您需要将 n 更改为整数,而不是字符串。您的错误告诉您,您正在尝试对字符串和整数执行操作(在本例中)。将 str(n) 更改为 int(n) 因此您始终具有相同的类型。

原文由 Nick H 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题