Python 创建一个输入文件并计算成绩的函数
文件的每一行的格式如下: 在哪里Python 创建一个输入文件并计算成绩的函数,python,python-3.x,file-io,Python,Python 3.x,File Io,文件的每一行的格式如下: 在哪里 名称是一个字符串 q1到q6是测验分数(整数) a1到a4是分配分数(整数值) 期中成绩是期中成绩(整数) 期末考试是期末考试分数(整数) 例如,如果文件内容如下所示: 文本格式的文件内容: 汤姆,10,20,0,100,0,100,70,80,90,0,80,85 玛丽,0,50,66,40,10,60,70,80,90,100,80,85 琼,0,80,40,10,50,60,7,80,90,0,80,5 请注意,每行中的条目之间可能有额外的空格 函
- 名称是一个字符串
- q1到q6是测验分数(整数)
- a1到a4是分配分数(整数值)
- 期中成绩是期中成绩(整数)
- 期末考试是期末考试分数(整数)
- 最低的两个小测验应该取消,其余四个小测验的平均成绩占总成绩的25%
- 最低的作业分数应该取消,剩下的三份作业的平均分数占总分数的25%
- 期中考试和期末考试各占总成绩的25%
invalid syntax: <string>, line 25, pos 31
无效语法:,第25行,位置31
除此之外,我不确定我的回答是否正确?请帮助。以下代码有效(但是,我没有检查您的计算)
我留下了一些代码作为注释,以便向您展示它们之间的差异。基本上,您的原始代码返回了一个命令,即在dictionarydict\u
中将keyname
的值设置为out
,而不是返回dictionarydict\u
。
注意,如果遇到
return
语句,则该方法my_final_grade
终止。因此,原始方法总是在文本文件的第一行停止。如错误所示,请查看第25行。那是哪一行代码?第31个字符是什么?@LynnCrumbling我添加了行号如何在1行以上运行我给你的代码在整个文件中运行不,它没有。我在我的编译器上运行了它可能是您的缩进有问题吗?我为您的示例获得了以下输出:{'joan':'fail','mary':'pass','tom':'pass'}
invalid syntax: <string>, line 25, pos 31
def my_final_grade_calculation(filename):
file_pointer = open(filename, 'r')
data = file_pointer.readlines()
dict_={}
for line in data:
#a=[]
#q=[]
#dict={}
name, q1, q2, q3, q4, q5, q6, a1, a2, a3, a4, midterm, final = line.strip().split(',')
q=[int(q1),int(q2),int(q3),int(q4),int(q5),int(q6)]
a=[int(a1),int(a2),int(a3),int(a4)]
#int(midterm)
#int(final)
for i in range(0,2):
q.remove(min(q))
a.remove(min(a))
a_avg=0.0
for j in range(0,len(a)):
a_avg+=a[j]/len(a)
q_avg=0.0
for i in range(0,len(q)):
q_avg+=q[i]/len(q)
final = ((float(q_avg)/4)) + ((float(a_avg)/4)) + ((float(midterm)/4)) + ((float(final)/4))
if final>=60.0:
out='pass'
dict_[name]=out
else:
out='fail'
dict_[name]=out
return dict_
#calling function
print(my_final_grade_calculation('filename.txt'))