Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python max()arg是一个空序列_Python - Fatal编程技术网

Python max()arg是一个空序列

Python max()arg是一个空序列,python,Python,我已经用Python编写了一个基数排序程序。但是当我执行代码时,我得到以下错误消息max()arg是一个空序列。 这是我的密码: 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 el

我已经用Python编写了一个基数排序程序。但是当我执行代码时,我得到以下错误消息
max()arg是一个空序列
。 这是我的密码:

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()

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

我认为您应该更换:

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
输入要输入的元素数:
3.
现在输入元素:
回溯(最近一次呼叫最后一次):
文件“radix.py”,第35行,在
RObject.radixSort()
radixSort中第17行的文件“radix.py”
m=最大值(自数组)
ValueError:max()arg是一个空序列
因此m=max(self.array)失败,因为无法对不存在的对象执行max函数。您需要有一个init方法来创建self.array


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

一个旁注:在radixSort()中访问
self.array
应该会给您一个
Attribute'Error
-您必须将
array=[]
转换为
self.array=[]
@j4ck:
array=[]
是有效的,但
array
将是类属性,而不是实例的属性。或者,如果您更喜欢EAFP:使用
尝试
除了
来处理空序列。它可能会稍微提高性能;简而言之,如果您担心经常出现空序列,请使用
if
;否则请使用
试试
。是的,我有python 2.xx
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