変数リストの算術平均を示すプログラムを作成する必要があります。 50の成績があるはずです。入力の範囲の平均を取得するにはどうすればよいですか?
私はかなり詰まっています。今は唯一持っている:
for c in range (0,50):
grade = ("What is the grade?")
また、50未満のグレード数はどのように印刷できますか?
何か助けていただければ幸いです。
変数リストの算術平均を示すプログラムを作成する必要があります。 50の成績があるはずです。入力の範囲の平均を取得するにはどうすればよいですか?
私はかなり詰まっています。今は唯一持っている:
for c in range (0,50):
grade = ("What is the grade?")
また、50未満のグレード数はどのように印刷できますか?
何か助けていただければ幸いです。
あなたは、これは途方もなく簡単です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)
すべての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])
@user Python 2.でのみ。このシナリオでは、Python 3.Xは浮動小数点除算を正しく行います。 – StardustGogeta
まず第一に、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_grades
でsum_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よりも低学年の数をカウントします
以下を試してください。関数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.")
https://stackoverflow.com/questions/7716331/calculating-arithmetic-mean-average-in-pythonが役に立ちますか? – StardustGogeta