所以我对python(和一般编码)很陌生,我可以使用一些严肃的帮助来发现我的代码中的问题。基本上,我打开一个文件,其中包含任意数量的学生姓名和 4 个考试成绩。所以像这样:
John
78.0
80.0
69.0
98.0
Bob
40.0
78.0
77.0
89.0
etc
我的程序假设然后读取所述文件并输出到外壳:
John: 78.0 80.0 69.0 98.0 Average: 81.25
Bob: 40.0 78.0 77.0 89.0 Average: 71.0
最后它应该将名称和平均值保存到一个新文件中,例如,
John,81.25
Bob, 71.0
但是我的程序将其打印到屏幕上:
Mary
:76.0 89.0 82.0 100.0 Average: 86.75
Joey
:91.0 81.0 83.0 95.0 Average: 87.5
Sally
:92.0 93.0 90.0 97.0 Average: 93.0
并且正在保存这样的文件:
Mary
86.75Joey
87.5Sally
93.0
任何人都可以帮助解决这些问题吗?这是一项学校作业,因此仅帮助识别我的错误编码就足够了。
这是我乱七八糟的代码:
创建包含学生成绩的文件
scoresa = open('project3-scoresa.txt','w')
scoresa.write("Mary\n76\n89\n82\n100\nJoey\n91\n81\n83\n95\nSally\n92\n93\n90\n97")
scoresa.close()
def main():
averages = open("averages.csv","w")
file = input("Please enter the scores filename:")
try:
scores = open(file,'r')
print("File",file,"has been opened")
except IOError:
print("File",file,"could not be opened.")
scores = open(file,'r')
i = 0
for line in scores:
if i%5 == 0:
name = line
print(name.strip("/n"),":", end="")
j = 1
total = 0
else:
score = float(line)
print(score, end=" ")
total += score
ave = total/j
if j == 4:
print("Average:",ave)
Avestring = (name + str(ave))
averages.write(Avestring)
j += 1
i += 1
scores.close()
averages.close()
average = open("averages.csv","r")
for line in average:
print(line.strip("\n"))
main()