【问题标题】:Find average of list + 2 inputs - python [duplicate]查找列表+ 2个输入的平均值-python [重复]
【发布时间】:2016-08-26 23:58:11
【问题描述】:

我需要找到 5 个作业的平均值 = 两个输入。我得到了一个结果,但它不正确。这是我所拥有的:

def main():

  # list of grades
   x = []

   # count of students 
   n = 5

   # fill list with grades from console input
   # using pythonic generator
   x = [int(input('Please enter the grade you got on assignment {}: '.format(i+1))) for i in range(n)]

   midTermGrade = int(input('Please enter the grade you got on you Mid-Term: '))
   finalGrade = int(input('Please enter the grade you got on you Final: '))

   average_assignment_grade = sum(x) + midTermGrade + finalGrade / 7 

   print('Avg grade is ', average_assignment_grade)

main()

正如你在这里看到的,数学是错误的,平均假设是 28 左右,而不是 114

【问题讨论】:

  • 你必须用括号括起来整个加法表达式。运算符优先级和PEMDAS,即(sum(x) + midTermGrade + finalGrade) / 7

标签: python list loops average


【解决方案1】:

操作顺序有问题。你需要改变:

average_assignment_grade = sum(x) + midTermGrade + finalGrade / 7 

到:

average_assignment_grade = (sum(x) + midTermGrade + finalGrade) / 7 

您可以阅读 Python 运算符优先级here

【讨论】:

    【解决方案2】:

    卡琳的回答是正确的。 Python 使用BEDMAS,这就是您没有得到预期结果的原因。


    但是,您使用的是 Python 3。statistics module 是在 Python 3.4 中添加的;它具有mean 函数,可以计算平均值(或“平均值”):

    from statistics import mean
    
    average_assignment_grade = mean(x + [midTermGrade, finalGrade])
    

    这个函数背后的基本原理是它不容易出现很多舍入错误:

    >>> a = 100000000000000000.0
    >>> sum([a, 3.0, -a) / 3
    0.0
    

    但是

    >>> statistics.mean([a, 3.0, -a])
    1.0
    

    【讨论】:

      猜你喜欢
      • 2015-05-17
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 2013-10-09
      • 2017-03-15
      • 1970-01-01
      相关资源
      最近更新 更多