为什么我的“ quicksort”函数的“ a”参数从用户接受值列表抛出错误:“ NameError”?

问题描述 投票:0回答:1

我是Python和计算机编程的新手,因此,在在线阅读了基础教程之后,我实现了快速排序。我遇到以下错误:

Traceback (most recent call last):
  File "quicksort.py", line 1, in <module>
    def quicksort(a, left = 0, right = len(a)):
NameError: name 'a' is not defined

完整代码::

def quicksort(a, left = 0, right = len(a)):
    if(left<right):
        pivotindx = quick(a, left, right)
        quicksort(a, left, pivotindx-1)
        quicksort(a,pivotindx+1,right)
    return a




def quick(arr, start = 0, end = len(a)):
    pivot = arr[start]
    swpindx = start
    i = start + 1
    while(i < end):
        if(pivot > arr[i]):
            swpindx+=1
            arr[swpindx] , arr[i] = arr[i] , arr[swpindx]
        i+=1    

    arr[start] , arr[swpindx] = arr[swpindx] , arr[start]  
    return swpindx      


arr = []
size = int(input('enter size of array:'))
for i in range(size):
    x = int(input(f'enter value {i}:'))
    arr.append(x)
size = len(arr)    
result = quicksort(arr, 0, size) 
print(result)

python algorithm sorting quicksort
1个回答
0
投票

声明功能时,您无法指定len(a)

在python中,当声明函数时指定=为默认参数时。因此,当您在调用函数时不提供它时,将使用它。

In [36]: def hello(name, surename="James"): 
    ...:     print(name, surename) 
    ...:                                                                                                                                      

In [37]: hello("Thomas")                                                                                                                      
Thomas James

In [38]: hello("Thomas","Shelby")                                                                                                             
Thomas Shelby
© www.soinside.com 2019 - 2024. All rights reserved.