python - 获得随机成绩的平均值
问题描述
有谁知道如何获得随机成绩的平均值?她只想生成随机成绩并获得平均成绩,但我也做过一个,你在最后输入成绩,但我认为这不是她想要的。
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
推荐阅读
- ruby-on-rails - Rails 用户部分作为变量
- php - php - Mysql Query 工作除了一个过滤器
- c# - 关于加速硬盘备份代码的建议
- java - 在 Java 中 String hashCode() 的旧 impl 中跳过字符背后的想法是什么
- python - 如何运行托管在 a2hosting 上的 Flask 应用程序?
- matlab - 如何优化此字符串替换代码
- angular7 - 两种语言 Angular 构建,一种正常,一种有错误
- c# - C# - 线程任务 - Dotnet 4.x 中的最佳实践
- nix - 如何将我的 nix 环境重置为原始用户配置文件?
- c# - MailAddress 到正确的传真服务器工作不正常