我必須創建一個程序來顯示變量列表的算術平均值。應該有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
這是可笑容易:
import numpy as np
print np.mean(grades)
或者,如果你寧願不輸入任何東西,
print float(sum(grades))/len(grades)
要獲得低於50等級的數量,假設你把它們都放在一個列表中,你可以這樣做:
grades2 = [x for x in grades if x < 50]
print len(grades2)
假設你有一個包含所有g拉迪斯。
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
是包含檔次的列表,你想遍歷grades
名單,並在range(0,50)
不重複。其次,在每一次迭代中,您都可以使用一個變量來計算迄今爲止您已經看到了多少個等級,以及另一個變量能夠總結到目前爲止所有的成績。類似的東西:
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)
我用max
函數,返回num_grades和1之間的最大數目 - 的情況下,等級的列表爲空,num_grades將爲0和除以0未定義。 我用float
得到一個分數。
要計算成績低於50的號碼,就可以他再添變數num_failed
和初始化0
就像num_counts,添加一個如果檢查,如果等級低於50,如果是由1
num_failed
請嘗試以下操作。函數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