需要帮助计算文本文件的平均值

时间:2017-05-18 12:05:49

标签: python-3.x file-io average

我已经遇到了一个我最新作业的砖墙,我必须从用户输入一定数量的文本文件中计算出课程平均值。

代码:

 f=open('class.txt','w')

title=['name','english','math','science']
f.write(str(title)+""+"\n")


name=input("enter student name:")
m=int(input("enter math score:"))
e=int(input("enter english score:"))
s=int(input("enter science score:"))
o=input("do you wish to continue?: y/n:")
f.write(name + " " +str(m)+ " "+str(e)+" "+str(s)+" "+"\n")

name =[]
while o !='n':
    name=input("enter a student name:")
    m=int(input("enter math score:"))
    e=int(input("enter english score:"))
    s=int(input("enter science score:"))
    o=input("do you wish to continue?: y/n:")
    f.write(name + " " +str(m)+ " "+str(e)+" "+str(s)+" "+"\n")
f.close()

基本上,文本文件需要一个标题,因此带有"标题"在其中,并在用户点击' n'文本文件被保存。

现在我无法弄清楚如何编写读取文本文件的代码,计算每个学生的总分,计算每个学生的平均分数,然后将其全部打印成三列。如果我能得到关于如何做到这一点的任何指示,我将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:0)

(我不是一名phython程序员,所以语法可能不完全正确)

我假设您要编写生成文本文件的代码并同时计算平均值。如果是这样,则不需要写入文件然后重新阅读它,只需保持运行总计并在完成后计算平均值。

numberOfStudents = 0
int totalMathScore = 0
# Only showing math score add lines to do same with english / science
# see below about how loop should be structured
while continue != 'n':
   numberOfStudents += 1
   m=int(input("enter math score:"))
   totalMathScore += m

# Now calculate average math score
averageMathScore = totalMathScore / numberOfStudents

查找重复代码和重构的位。例如你在循环内外获得分数的地方。这个风格很差,应该是

a)把它放在一个函数

b)或者更有可能将这个简单的例子改变为类似

的循环
continue = 'y'
while (continue != 'n'):
    name=input("enter a student name:")
    m=int(input("enter math score:"))
    e=int(input("enter english score:"))
    ...

其他奖金

  • 使用描述性变量名称 - 例如mathScore而不是m
  • 错误处理 - 如果有人输入" BANANA"会发生什么?得分?