私は宿題をしていて、合計()およびlen()関数を使用して入力数値リストの平均を見つける必要があります。sum()を使用してリストの合計を取得しようとすると、エラーが発生しましたTypeError:+のサポートされていないオペランドタイプ: 'int'および 'str'。以下は私のコードです:
numlist = input("Enter a list of number separated by commas: ")
numlist = numlist.split(",")
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:",m)
問題は、入力から読み取るときに、文字列のリストがあることです。あなたは2行目としてそのようなことをすることができます:
numlist = [float(x) for x in numlist]
問題は、文字列のリストがあることです。合計を計算する前に、それらを整数に変換する必要があります。例えば:
numlist = numlist.split(",")
numlist = map(int, numlist)
s = sum(numlist)
...
数値ではなく文字列を合計しています。これがエラーメッセージの意味です。
すべての文字列をそれぞれの整数に変換します。
_numlist = map(int, numlist)
_
そして、平均を取ります(私はfloat()
をあなたとは異なる方法で使用していることに注意してください):
_arithmetic_mean = float(sum(numlist)) / len(numlist)
_
分割する前にfloat()
をfloat(1/2) = float(0) = 0.0
として使用したいのですが、これはあなたが望むものではありません。
代わりに、最初にそれらをすべてfloat
にすることもできます。
_numlist = map(float, numlist)
_
入力された文字列をfloat値のリストに変換します。これが更新されたコードです。
numlist = list(map(int,input("Enter a list of number separated by commas: ").split(',')))
l = len(numlist)
s = sum(numlist)
print("mean :",s/l)
Splitは文字列の配列を返すため、関数sumを使用する前にこれらを整数に変換する必要があります。
Python 2.7の場合
numlist = map(int,raw_input().split(","))
s = sum(numlist)
l = len(numlist)
m = float(s/l)
print("mean:"+ str(m))
これを試すことができます。
reduce(lambda x,y:x+y, [float(x) for x in distance])