2016-09-29 5 views
0

変数リストの算術平均を示すプログラムを作成する必要があります。 50の成績があるはずです。入力の範囲の平均を取得するにはどうすればよいですか?

私はかなり詰まっています。今は唯一持っている:

for c in range (0,50): 
    grade = ("What is the grade?") 

また、50未満のグレード数はどのように印刷できますか?

何か助けていただければ幸いです。

+2

https://stackoverflow.com/questions/7716331/calculating-arithmetic-mean-average-in-pythonが役に立ちますか? – StardustGogeta

答えて

2

あなたは、これは途方もなく簡単ですnumpyを使用して気にしない場合:

print float(sum(grades))/len(grades) 
が50を下回る成績の数を取得するには、むしろ何かをインポートしたくない場合、

import numpy as np 
print np.mean(grades) 

あるいは、リストにすべてが含まれていると仮定すると、次のようになります。

grades2 = [x for x in grades if x < 50] 
print len(grades2) 
1

すべてのg rades。

avg = sum(gradeList)/len(gradeList) 

これは実際にはnumpy.mean()よりも高速です。

50未満の成績を見つけるには、条件文を含むループに入れることができます。

numPoorGrades = 0 
for g in grades: 
    if g < 50: 
     numPoorGrades += 1  

また、リストの解説を使用して、これを少しコンパクトに書くこともできます。

numPoorGrades = len([g for g in grades if g < 50]) 
+0

@user Python 2.でのみ。このシナリオでは、Python 3.Xは浮動小数点除算を正しく行います。 – StardustGogeta

0

まず第一に、gradesは成績を含むリストであると仮定すると、あなたはrange(0,50)を反復gradesリストを反復処理し、しないようにしたいと思います。

第2に、変数を使用してこれまでに見た成績の数とそれまでのすべての成績を合計する変数を使用できます。そのような何か:

num_grades = 0 
sum_grades = 0 
for grade in grades: 
    num_grades += 1 # this is the same as writing num_grades = num_grades + 1 
    sum_grades += sum # same as writing sum_grades = sum_grades + sum 

は、今あなたがする必要があるすべては結果を得るためにnum_gradessum_gradesを分割することです。

average = float(sum_grade)s/max(num_grades,1) 

Iはnum_gradesと1の間の最大数を返すmax機能を使用 - グレードのリストが空である場合には、num_grades 0によって0と分割であろうことは未定義です。 私はfloatを使って分数を得ました。

グレードが50より低いので、1

num_failedを増やす場合であればそれがチェックすると追加し、あなたが別の変数 num_failedを追加して、ちょうどnum_countsよう 0に彼を初期化することができ、50よりも低学年の数をカウントします
0

以下を試してください。関数isNumberは文字列として読み込まれた入力を浮動小数点数に変換しようとします。浮動小数点数は整数の範囲にも当てはまりますが、使用しているバージョンのPython 3では浮動小数点型です。try...exceptブロックは、他のプログラミング言語に見られるtry...catchステートメントと似ています。

#Checks whether the value is a valid number: 
def isNumber(value): 
    try: 
     float(value) 
     return True 
    except: 
     return False 

#Variables initialization: 
numberOfGradesBelow50 = 0 
sumOfAllGrades = 0 

#Input: 
for c in range(0, 5): 
    currentGradeAsString = input("What is the grade? ") 
    while not isNumber(currentGradeAsString): 
     currentGradeAsString = input("Invalid value. What is the grade? ") 
    currentGradeAsFloat = float(currentGradeAsString) 
    sumOfAllGrades += currentGradeAsFloat 
    if currentGradeAsFloat < 50.0: 
     numberOfGradesBelow50 += 1 

#Displays results: 
print("The average is " + str(sumOfAllGrades/5) + ".") 
print("You entered " + str(numberOfGradesBelow50) + " grades below 50.") 
関連する問題