max()arg是一个空序列

时间:2016-04-04 08:52:13

标签: python

我为Python编写了Radix Sort程序。但是当我执行代码时,我得到以下错误消息max() arg is an empty sequence。 这是我的代码:

class RadixSort:
    num=0
    array=[]

    def getData(self):
        print 'Enter the number of elements you want to enter: '
        num=int(input())
        print 'Now enter the elements: '
        for i in range(0,self.num):
            print 'Element ',i+1,': '
            value=int(input())
            self.array.append(value)

    def radixSort(self):
        bin=[[],[],[],[],[],[],[],[],[],[]]
        r=1
        m=max(self.array)
        while m>r:
            for ele in self.array:
                bin[(ele/r)%10].append(ele)
            r=r*10
            self.array=[]
            for i in range(10):
                self.array.extend(bin[i])
                bin[i]=[]       

    def displayArray(self):
        print ''
        for ele in self.array:
            print ele


RObject=RadixSort()
RObject.getData()
RObject.radixSort()
RObject.displayArray()

在输入数组中的值之前,我收到此错误。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

我认为你应该替换:

num = int(input())

self.num = int(input())

检查数组是否为空不是多余的:

m = max(self.array) if self.array else 0

答案 1 :(得分:0)

您应该显示完整的回溯。当我运行你的代码时,我得到了这个:

Enter the number of elements you want to enter: 
3
Now enter the elements: 
Traceback (most recent call last):
  File "radix.py", line 35, in <module>
    RObject.radixSort()
  File "radix.py", line 17, in radixSort
    m=max(self.array)
ValueError: max() arg is an empty sequence

所以m = max(self.array)失败了,因为你不能对不存在的对象执行max函数。您需要使用 init 方法来创建self.array

为什么使用输入而不是raw_input?您正在使用python 2.7