2016-08-26 5 views
-1

私は5つの割り当て= 2つの入力の平均を見つける必要があります。私は結果を得ているが、それは正しい。ここで私が持っているものです。リスト+2入力の平均を求める - python

def main(): 

    # list of grades 
    x = [] 

    # count of students 
    n = 5 

    # fill list with grades from console input 
    # using pythonic generator 
    x = [int(input('Please enter the grade you got on assignment {}: '.format(i+1))) for i in range(n)] 

    midTermGrade = int(input('Please enter the grade you got on you Mid-Term: ')) 
    finalGrade = int(input('Please enter the grade you got on you Final: ')) 

    average_assignment_grade = sum(x) + midTermGrade + finalGrade/7 

    print('Avg grade is ', average_assignment_grade) 

main() 

あなたがここに見ることができるように、数学が間違っている、平均化するとは周り28、いない114

Python Console

+2

追加の全体の表現をかっこで囲む必要があります。演算子の優先順位とPEMDAS、すなわち '(sum(x)+ midTermGrade + finalGrade)/ 7' – Li357

+0

Wow。ありがとう、笑 – David

答えて

2

の順序に問題がありますされますオペレーション。

average_assignment_grade = sum(x) + midTermGrade + finalGrade/7 

に:あなたは、Pythonの演算子の優先順位hereについて読むことができます

average_assignment_grade = (sum(x) + midTermGrade + finalGrade)/7 

あなたは変更する必要があります。

1

カリンの答えが正しい。 Pythonはを使用しているため、期待した結果が得られなかったのです。


しかし、あなたは、Python 3を使用しているstatistics moduleのPython 3.4で追加されました。それは(「平均」や)の平均を計算しますmean機能を持っています

>>> a = 100000000000000000.0 
>>> sum([a, 3.0, -a)/3 
0.0 

しかし

from statistics import mean 

average_assignment_grade = mean(x + [midTermGrade, finalGrade]) 

この機能の背後にある理由は、それが多くの丸め誤差しにくいということです

>>> statistics.mean([a, 3.0, -a]) 
1.0 
関連する問題