获得随机分数的平均值



有人知道如何获得随机分数的平均值吗?她只想生成随机的分数并得到平均值,但我也做过一个,你在你的一端输入分数,但我不认为这是她想要的。

import random
grade = random.randint(50,100)
grade2 = random.randint(50,100)
grade3 = random.randint(50,100)
grade4 = random.randint(50,100)
grade5 = random.randint(50,100)
if int(grade) >= 90 and int(grade) <= 100:
print ("Grade 1:", grade, "A")
elif int(grade) >= 80 and int(grade) <=90:
print("Grade 1:", grade, "B")
elif int(grade) >= 70 and int(grade) <= 80:
print("Grade 1:", grade, "C")
elif int(grade) > 60 and int(grade) <=70:
print("Grade 1:", grade,"D")
elif int(grade) <= 60:
print("Grade 1:", grade, "F")
if int(grade2) >= 90 and int(grade2) <= 100:
print ("Grade 2:", grade2, "A")
elif int(grade2) >= 80 and int(grade2) <=90:
print("Grade 2:", grade2, "B")
elif int(grade2) >= 70 and int(grade2) <= 80:
print("Grade 2:", grade2, "C")
elif int(grade2) > 60 and int(grade2) <=70:
print("Grade 2:", grade2,"D")
elif int(grade2) <= 60:
print("Grade 2:", grade2, "F")
if int(grade3) >= 90 and int(grade3) <= 100:
print ("Grade 3:", grade3, "A")
elif int(grade3) >= 80 and int(grade3) <=90:
print("Grade 3:", grade3, "B")
elif int(grade3) >= 70 and int(grade3) <= 80:
print("Grade 3:", grade3, "C")
elif int(grade3) > 60 and int(grade3) <=70:
print("Grade 3:", grade3,"D")
elif int(grade3) <= 60:
print("Grade 3:", grade3, "F")
if int(grade4) >= 90 and int(grade4) <= 100:
print ("Grade 4:", grade4, "A")
elif int(grade4) >= 80 and int(grade4) <=90:
print("Grade 4:", grade4, "B")
elif int(grade4) >= 70 and int(grade4) <= 80:
print("Grade 4:", grade, "C")
elif int(grade4) > 60 and int(grade4) <=70:
print("Grade 4:", grade4,"D")
elif int(grade4) <= 60:
print("Grade 4:", grade4, "F")
if int(grade5) >= 90 and int(grade5) <= 100:
print ("Grade 5:", grade5, "A")
elif int(grade5) >= 80 and int(grade5) <=90:
print("Grade 5:", grade5, "B")
elif int(grade5) >= 70 and int(grade5) <= 80:
print("Grade 5:", grade5, "C")
elif int(grade5) > 60 and int(grade5) <=70:
print("Grade 5:", grade5,"D")
elif int(grade5) <= 60:
print("Grade 5:", grade5, "F")

正如Kraigolas所指出的,你可以通过将成绩放在一个列表中而不是5个单独的变量中,并使用enumerate生成"等级1"等级2";,等

获得平均值的最简单方法是使用statistics.mean,它会给你传递给它的任何列表的平均值:

>>> grades = [70, 80, 85]
>>> import statistics
>>> statistics.mean(grades)
78.33333333333333

我还建议将确定字母等级的逻辑放入函数中,如下所示:

def letter_grade(grade: float) -> str:
assert 0 <= grade <= 100
for score, letter in [
(90, "A"),
(80, "B"),
(70, "C"),
(60, "D"),
]:
if grade >= score:
return letter
return "F"

现在你可以用一小段代码把它们放在一起:

import random
import statistics
grades = [random.randint(50, 100) for _ in range(5)]
for n, grade in enumerate(grades, 1):
print(f"Grade {n}: {letter_grade(grade)}")
print(f"Average: {letter_grade(statistics.mean(grades))}")

样本输出:

Grade 1: F
Grade 2: A
Grade 3: A
Grade 4: A
Grade 5: A
Average: B

如果你发现自己在变量名后面放了一个数字,这是一个很大的迹象,表明你可能想使用列表(或者通常是可迭代的(来存储元素:

grades = [51, 62, 87, 57]

有几种方法可以生成随机等级列表numpy.random.rand就是其中之一,但对于初学者来说,一个更简单的方法可能是从这样的列表开始

grades = []

然后创建一个循环来附加等级。Python提供了一个sum函数来汇总列表中的所有值,以及一个len函数来计算列表中的元素数量。使用这些函数,您可以计算成绩。

如果你熟悉的话,你也可以使用列表理解来生成分数。

如果你继续创建成绩列表,你的代码可以进行如下调整:

for idx, grade in enumerate(grades, 1):
label = f"Grade {idx}"
if int(grade) >= 90 and int(grade) <= 100:
print (label, grade, "A")
elif int(grade) >= 80 and int(grade) <=90:
print(label, grade, "B")
elif int(grade) >= 70 and int(grade) <= 80:
print(label, grade, "C")
elif int(grade) > 60 and int(grade) <=70:
print(label, grade,"D")
elif int(grade) <= 60:
print(label, grade, "F")

这里enumerate(grades, 1)grades返回一个索引和一个元素,从1开始,因为我们在这里指定了1。

最新更新