繁体   English   中英

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

[英]TypeError: unsupported operand type(s) for -: 'str' and '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”

您需要将n更改为整数,而不是字符串。 您的错误告诉您,您正在尝试对字符串和整数执行操作(在这种情况下为-)。 str(n)更改为int(n)以便始终使用相同的类型。

您在代码中将n声明为字符串。 并尝试对字符串执行算术运算。

因此,它给那个错误。 将此str(n)更改为int(n)

它将工作!

n是字符串。 因此,您需要将其更改为int:

n = int(n)

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

arr = eval(arr)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM