2011-02-11 4 views
2

私はxを(以下のコードから)取る方法を理解しておらず、それを加算して合計を求め、それを格付けの数で割ります。クラスで与えられた例は、4つの評価であり、数字は3,4,1、および2でした。平均評価は2.5でなければなりませんが、私はそれを正しく得ることはできません!Pythonで範囲関数のすべての数値の和を求めるにはどうすればよいですか?

number_of_ratings = eval(input("Enter the number of difficulty ratings as a positive integer: "))  # Get number of difficulty ratings 
for i in range(number_of_ratings):  # For each diffuculty rating 
    x = eval(input("Enter the difficulty rating as a positive integer: "))  # Get next difficulty rating 
average = x/number_of_ratings 
print("The average diffuculty rating is: ", average) 
+1

あなたがこの問題のために数学を使用することができます。 'n *(n + 1)/ 2 =合計(範囲(n + 1))'である。これはnの値が大きい場合に便利です。 – razpeitia

+0

@raz:平均を計算するときに、この式が必要なのはどこですか? – Philipp

+0

@Philipp:「n」(アイテムの数)と「(n + 1)/ 2 = avg(範囲(n + 1))」に分割する – razpeitia

答えて

3

あなたのコードは、それだけで各反復でxが上書きされ、何も追加しません。変数に何かを追加するには、+=演算子を使用します。また、evalを使用しないでください:

number_of_ratings = int(input("Enter the number of difficulty ratings as a positive integer: ")) 
x = 0 
for i in range(number_of_ratings): 
    x += int(input("Enter the difficulty rating as a positive integer: ")) 
average = x/number_of_ratings 
print("The average diffuculty rating is: ", average) 
+0

ありがとう!これは私の最初のプログラミング経験ですが、これは大きな助けとなりました。 – Bobby

+0

これは完全に有効でもう少し簡潔です。 'x = sum(int(入力難易度を正の整数として入力します: '))i in range(number_of_ratings)' ' –

1
try: 
    inp = raw_input 
except NameError: 
    inp = input 

_sum = 0.0 
_num = 0 
while True: 
    val = float(inp("Enter difficulty rating (-1 to exit): ")) 
    if val==-1.0: 
     break 
    else: 
     _sum += val 
     _num += 1 

if _num: 
    print "The average is {0:0.3f}".format(_sum/_num) 
else: 
    print "No values, no average possible!" 
関連する問題