2016-06-01 15 views
0

私はオブジェクト指向の概念をPythonで学んでいます。以下では、クラスとメソッドを作成しました。私は直接min()関数を呼び出すことによってリストの最小値を見つけようとしており、クラスメソッド findMin()を呼び出すことによっても試みています。min()arg空のシーケンス

以下のコードは私にエラーを与える:

min() arg is an empty sequence

私がここで行方不明です何を教えてください。

class Solution: 
    nums = list() 
    def findMin(self, nums): 
     self.nums.sort() 
     out = min(self.nums) 
     return out 

x = [4,5,6,7,0,1,2] 
y = Solution() 

print min(x) 
print y.findMin(x) 
print len(x) 
print type(y) 
print dir(y) 

答えて

1

あなたはself.numsnumsを混乱されています。あなたが書く

nums=list() 

あなたがクラスに変数を設定しています。あなたが書く

def findMin(self, nums): 

あなたはローカル変数、numsでパラメータを受けています。あなたは、次の2行にself.numsを書くとき

、あなたは空のリストだったクラスのnums変数の値に初期化されたインスタンスのnums変数を、参照しています。

このように、基本的には空のリストをソートしてから最小値を探します。空のリストには最小値を見つけることができないので、これはうまくいきません。したがって

、あなたが表示されるエラー:

ValueError: min() arg is an empty sequence 

、あなたはパラメータではなく、インスタンスフィールドを参照することがありますので、むしろself.numsよりnumsを使用して、この問題を解決するには。

関連する問題