2014-01-09 5 views
7

これは私のクラスメイトの一部に、Pythonとコーディングのイントロを示すデモです。以下のコードは[0,1]のようなリストを取ることができ、average関数を使って実行すると0.5を返します。リストを使用して実行すると、以下の関数はエラー'list' object has no attribute 'len'を返します。私は、この関数は、私もそれが整数Pythonテスト平均電卓returenエラー 'list'オブジェクトに属性 'len'がありません

+0

コレクションの長さをこのコレクションのメソッドとして取得したい場合は、 'lst .__ len __()'を使用できます。 オペレータを連鎖させたい場合に便利なことがあります。 – Jacquot

答えて

13

変更ラインではなく、floatを返すようになるだろうどのようにlen()機能

def average(lst): 
    total = 0 
    for item in lst: 
     total += item 
    averageGrade= total/lst.len() 
    return averageGrade 

を削除せずに動作するようになるだろうどのように。内蔵のlenについてはPythonのドキュメントを参照してください。組み込みのlenは、シーケンス内の項目数を計算します。 listはシーケンスなので、組み込み関数はシーケンスで動作します。

averageGrade= total/lst.len() 

averageGrade= total/len(lst) 

listデータ型はlenという名前のメソッドを持っていない、ので、それは、エラー'list' object has no attribute 'len'で失敗した理由を。 list

のpythonドキュメントを参照してください。もう1つの重要な面は、整数除算を行うことです。両方のオペランドが整数の場合、Python 2.7とは異なり(あなたのコメントから推測します)、Python 3とは異なり、整数を返します。

変更浮かぶように除数のあなたのオペランドのいずれかを変換するためのライン

total = 0.0 

+0

整数除算について言及する必要があります! – jonrsharpe

+0

@jonrsharpe:はい、私はそれに気付かなかった。それを指摘してくれてありがとう。 – Abhijit

関連する問題