2016-04-04 92 views
1

私はRadix Sort in Pythonのプログラムを書いています。しかし、コードを実行すると、エラーメッセージmax() arg is an empty sequenceに続いて表示されます。私は、配列内の値を入力する前に、このエラーが出る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() 

: はここに私のコードです。これをどうすれば解決できますか?私はあなたが交換するべきだと思います

+0

サイドノート:あなたのradixSort()で 'self.array'にアクセスすると、' Attribute'Error'が得られるはずです。 'array = []'を 'self.array ' = [] ' – nlsdfnbch

+1

@ j4ck:' array = [] 'は有効ですが、' array'はクラス属性であり、インスタンスの属性ではありません。 – Matthias

答えて

2

num = int(input()) 

self.num = int(input()) 

ない余分には、配列が空でないことを確認するために次のようになります。

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

EAFPにもっと興味があるなら、空のシーケンスを処理するには 'try'と' except'を使います。これは、あなたの入力の性質に応じて、少しのパフォーマンスの向上をもたらすかもしれません(http://stackoverflow.com/questions/1835756/using-try-vs-if-in-python)。要するに、あなたが空のシーケンスを定期的に持っていることを恐れたら、 'if'を使います。それ以外の場合は 'try'を使います。 – nlsdfnbch

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 

あなたは存在しないオブジェクトにMAX関数を行うことができないので、それほどメートル= MAX(self.array)が失敗します。 init self.arrayを作成する方法

なぜraw_inputではなく入力を使用していますか? Pythonを使用しています2.7

+0

はい私はpython 2.xxを持っています – Prashant

関連する問題