max()arg是空序列

2024-06-28 11:15:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我用Python编写了基数排序程序。但是当我执行代码时,我会得到以下错误消息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()

在数组中输入值之前会出现此错误。我该怎么解决?


Tags: 代码inselfforbindef错误array
2条回答

我认为你应该替换:

num = int(input())

self.num = int(input())

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

m = max(self.array) if self.array else 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

为什么使用输入而不是原始输入?您正在使用Python2.7

相关问题 更多 >