2016-11-15 15 views
0

プログラムは、最小の数値と最大の数値を破棄し、残りの数値の平均を計算して表示するものとします。これまでのところ、私は関数numpyをインポートする必要があると考えましたが、forループを入れる方法はわかりません。forループを使用してリスト内の数値の平均を計算する

import numpy 

numbers = input('Enter any list of numbers(seperated by any commas): ') 

n2 = numpy.mean(numbers) 
print(n2) 
+1

numpyの使用は必須ですか? –

+0

Python3は既に標準ライブラリを使って平均を計算できます。 Numpyは不要です –

+0

あなたはpython 3またはpython 2を使用していますか? – DSM

答えて

1

入力を数字のリストに変換するステップがありません。もしあなたがPython 2.xを使っているなら、あなたが使っているようなinput()はnumpy.mean()が扱うことができる数値のタプルを返します。 python3を使用している場合、input()は文字列を返します。文字列は数値に解析する必要があります。

Pythonの2.xバージョン:

import numpy 
numbers = input('Enter any list of numbers(seperated by any commas): ') 
n2 = numpy.mean(numbers) 
print(n2) 

のpython 3バージョン:

import numpy 
numbers = input('Enter any list of numbers(seperated by any commas): ') 
num_list = [int(x) for x in numbers.split(',')] 
n2 = numpy.mean(num_list) 
print(n2) 
+0

minとmaxを削除する部分がありません –

+0

数字がコンマで区切られている場合は、変換する前に文字列を分割する必要があります。 – DSM

+0

@DSM彼のコードで定義されている 'numbers'は、入力が与えられた後にタプルに設定されます。これにはsplit()はありません。私は最小/最大の部分を逃した。彼は一度彼と仕事する数字を持っていたその部分で刺すかもしれないと思った。それでも、このコードではすべてがintであると仮定していますが、これはおそらく正しくはありません。 –

0

あなたの質問は本当に明確ではありません。値の配列の平均を計算したいのであれば、それを行う方法があります。なぜforループが必要でしょうか?

入力は文字列なので、処理する前に配列に変換する必要があります。これはちょっと複雑で、あなたの疑問を超えているようです。だから、numbersは既に数字の配列であると仮定します。あなたが本当に使いたい場合は

numpy.mean(numbers) 

numbers.remove(max(numbers)) 
numbers.remove(min(numbers)) 

それからちょうどmeanメソッドを呼び出します。

は、あなたは、単にこの方法で行われた、最小と最大の値を削除したいですforループでは、平均を計算する方法があります(これはnumpyと同じですが、はるかに最適化された方法です)。

mean = 0 
for value in numbers: 
    mean += numbers 
mean /= len(numbers) 
+0

@ cricket_007 "あなたの入力は文字列なので、それを処理する前に配列に変換する必要があります。これは少し複雑で、あなたの疑問を超えているようですので、数字はすでに配列数字。" –

+0

右:逃した:) –

+0

@ cricket_007問題はありません。実際には、私はこの部分をスキップすると、私は実際にOPの問題を取得していない...私は、平均的な機能の使用に誤解があると思う? –

関連する問題