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