Python 读入一个有多个等级的文件,每个等级用逗号分隔,然后打印出计算出的平均值

Python 读入一个有多个等级的文件,每个等级用逗号分隔,然后打印出计算出的平均值,python,average,Python,Average,问题:完成以下程序,读入一个有多个等级的文件,每个等级用逗号分隔,然后打印出计算出的平均值。也就是说,编写函数getGrades:和calculateAverage: 我已经插入了给定的函数并编写了一个新程序,但是我有点困惑,而且我得到了一个错误。请帮忙 def getGrades(): filename = input("Please enter a file name: ") openfile = open(filename, "r") readfile = openfile.r

问题:完成以下程序,读入一个有多个等级的文件,每个等级用逗号分隔,然后打印出计算出的平均值。也就是说,编写函数getGrades:和calculateAverage:

我已经插入了给定的函数并编写了一个新程序,但是我有点困惑,而且我得到了一个错误。请帮忙

def getGrades():
  filename = input("Please enter a file name: ")
  openfile = open(filename, "r")
  readfile = openfile.readlines()

  return readfile

def calculateAverage(n):
  totalGrades = []

  for i in (n):
    Split = list(map(int, i.split(",")))
    totalGrades += Split

  avg = sum(totalGrades)/float(len(totalGrades))

  return avg

def main():
  grades = getGrades()                  
  avg = calculateAverage(grades) 
  print("The calculated average is:", avg)
main()
在calculateAverage函数中,传递参数n,但对于for循环,使用函数getGrades的局部变量名readfile

此外,的结果是字符串列表。将它们转换为整数以执行可使用的求和。map返回一个迭代器,该迭代器将函数应用于iterable的每个项,并生成结果

要从您阅读的行中删除换行符和其他空格,可以使用

最后,要执行浮点除法,如果两个参数都是整数,则必须将其中一个转换为浮点。看看这个

最终的程序如下所示:

def getGrades():
  filename = input("Please enter a file name: ")
  openfile = open(filename, "r")
  readfile = openfile.readlines()

  return readfile

def calculateAverage(n):
  total_grades = []
  for i in (n):
    line_grade = list(map(int, i.rstrip().split(",")))
    total_grades += line_grade
  avg = sum(total_grades)/float(len(total_grades))
  return avg

def main():
  grades = getGrades()                  
  avg = calculateAverage(grades) 
  print("The calculated average is:", avg)

if __name__ == "__main__":
  main()
如果使用包含以下内容的测试文件运行此操作: 5,10,15,20 你会得到:

不带地图且带的calculateAveragen可以是:

def calculateAverage(n):
  total_grades = []
  for i in (n):
    line_grade = i.rstrip().split(",")
    line_grade = [int(x) for x in line_grade]
    total_grades += line_grade
  avg = sum(total_grades)/float(len(total_grades))
  return avg
最后,您可以使用简单的方法完成此操作,并使用for循环将split返回的列表中的每个元素转换为整数:

def calculateAverage(n):
  total_grades = []
  for i in (n):
    line_grade = i.rstrip().split(",")
    for element in line_grade:
      total_grades.append(int(element))
  avg = sum(total_grades)/float(len(total_grades))
  return avg

这是我的家庭作业。您遇到了什么样的错误?错误:readfile未定义是的,这是一个家庭作业问题。但我太过努力了。我只需要一点帮助。在getgrades函数中,您应该将等级放在一个列表中,并将其传递给另一个函数。如果您只输入一个文件名而不是一个文件路径,则open函数调用希望该文件与python脚本位于同一目录中。否则,您需要传递文件的路径。脚本/文件是否保存在同一目录中?您的程序给了我一个错误:以10为基数的int的无效文字:“4.9\n”您的程序给了我一个错误:以10为基数的int的无效文字:“4.9\n”这是因为您在将换行符添加到列表之前没有删除它们,例如\n。现在试一试,我已经添加了rstrip部分。你能用其他东西替换地图吗?我没有学过这个功能。地图还有其他选择吗?
def calculateAverage(n):
  total_grades = []
  for i in (n):
    line_grade = i.rstrip().split(",")
    line_grade = [int(x) for x in line_grade]
    total_grades += line_grade
  avg = sum(total_grades)/float(len(total_grades))
  return avg
def calculateAverage(n):
  total_grades = []
  for i in (n):
    line_grade = i.rstrip().split(",")
    for element in line_grade:
      total_grades.append(int(element))
  avg = sum(total_grades)/float(len(total_grades))
  return avg