-2

指定された数値の平均を計算する関数を作成しようとしています。数値は、タプル形式(1, 2, 3)またはリスト形式のいずれかになります[1, 2, 3]

今、私はこれを思いつきました:

def get_mean(*arg):
   for x in arg:           ### Calculating sum
      sum = float(sum) + x
   count = len(arg)
   mean = float(sum) / int(count)
   return mean

次に、次の属性でこの関数を呼び出そうとすると:

print get_mean(1, 2, 3)

出力は次のようになります2.0

print get_mean[1, 2, 3]

エラーを出力します:TypeError: 'function' object has no attribute '__getitem__'

これはなぜですか?

4

2 に答える 2

3

間違った構文で引数を渡しているため、括弧がありませんでした:

print get_mean[1, 2, 3]

ただし、TypeError: unsupported operand type(s) for +: 'float' and 'list'これを使用すると次のようになりargsます[[1, 2, 3]]

print get_mean([1, 2, 3])

したがって、リストをアンパックする必要があるので、単純に*演算子を使用します

print get_mean(1, 2, 3)
print get_mean(*[1, 2, 3])
#2.0
#2.0
于 2013-11-01T14:25:16.657 に答える
-1

ここで何かが足りないかもしれませんが、データをタプルまたはリストとして渡すだけではない理由はありますか?

from __future__ import division

def get_mean(nos):
    return sum(nos) / len(nos)

#test
t = (1, 2, 3, 4)
print get_mean(t)
l = [1, 2, 3, 4]
print get_mean(l)

これfrom __future__ import divisionは、Python 2.x を使用している場合に除算のために整数を浮動小数点数に自動的に変換することです (Python 3.x では自動的に行われます)。

于 2013-11-01T14:31:59.777 に答える