我为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()
在输入数组中的值之前,我收到此错误。我该如何解决这个问题?
答案 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