2016-06-29 4 views
-2

私は 'int'オブジェクトがiterableではないエラーを返し続けます。どんな解決策ですか?は、 'int'オブジェクトはPythonでiterableではありません

def calculate_average_sales(employee_list): 
    for e in employee_list: 
     average = sum(e.sales)/len(e.sales) 
    print("Average sales of all employees: ",average) 

print(calculate_average_sales(employee_list)) 
+0

より参考になっなりますので、ここでは完全なコードを投稿してくださいされていない場合ので、多分これはあなたの問題

def calculate_average_sales(employee_list): for e in employee_list: average = sum(e.sales)/len(e.sales) #in this line print("Average sales of all employees: ",average) 

このshul'd作品 'ですint上では動作しません。それは言うことは不可能です。将来、誰かがあなたが持っているものをコピーして貼り付けて問題を再現できるように、十分なコードを投稿してください。あなたの場合、問題は、あなたが仮定した変数は実際にはintであるということです。 – Michael0x2a

+0

'type(employee_list)'はlistを返すべきです。このこと – vinod

+0

リスト: はDEF(EMPLOYEE_LIST)をinit_employee_list: E = SalesEmployee( '101'、 'アンジー'、1200,15000) employee_list.append(E) E = SalesEmployee( '105'、 'シンディ'、 ( '112'、 'Jason'、3000,1200,12000) employee_list.append(e) e = SalesEmployee( '108'、 'David'、1500,20000) employee_list.append(e) e = SalesEmployee 30000) employee_list.append(e) e = SalesEmployee( '127'、 'Vivian'、2000,25000) employee_list.append(e) –

答えて

0

あなたはintsumを呼んでいるが、sumの署名が、それは最初の引数として反復可能を取る必要があります。

sum(e.sales) # ??? 

あなたが上sumを呼び出そうとした場合、それはよ3言います

>>> sum(3) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'int' object is not iterable 

に電話をかけることなく平均を計算することができますあなたのオブジェクトの。あなたがあなたのリストにミスマッチの種類を持っている場合は、あなたが行うことができます:

for e in employee_list: 
    if hasattr(e.sales, '__len__'): 
     average = sum(e.sales)/len(e.sales) 
    else: 
     average = e.sales 
+0

私は感謝をたくさん見る! –

+1

@Gohboonhuay彼はあなたの質問に答えたようです。だから、あなたは答えを受け入れて、この質問を閉じるべきです。 –

0

それはあなたがEMPLOYEE_LIST上でコードを投稿していなかったハンスをenswereするために非常に難しいのです。

:私は、コードをGUSSする必要がある場合は、このような何かを行う場合

for e in 120: #you wanted to put here some list , but you actualy send numbers 
    do something... 

それはshoul'dの仕事のように気にいらがあるので - NATのシェルで

は、あなたがint型にitarateしようその後、
my_list=[employee_list("name",1000),employee_list("nameb",1000),employee_list("namec",1000),] 

と、このような機能に送信:

calculate_average_sales(my_list) 

もう一つ、sumは、私たちがまさに `employee_list`を知らなくても

関連する問題