私がやろうとしているのは、ファイルの各行を読み取り、それを handleLine と呼ばれる他の関数に入れて出力を作成し、numericgrade が全体のパーセンテージを計算し、lettergrade がグレードを割り当てることです。
たとえば、ファイルには「name、last name」、classid、exam、finalがあり、フルネーム、score、gradeを出力したい
def main():
fin=open("scores.csv", "r")
fout=open("grades.csv", "w")
fout.write('"Name", "Score", "Grade"\n')
line=fin.readlines()[1:]
for line in line:
line=line.split(",")
handleLine(line)
fout.write('"' + lname + "," + fname + '" ,' + score +", " + grade+ ' ", ')
def numericGrade(midterm, final):
score=0.4*float(midterm) + (0.6 * float(final))
def letterGrade(score):
grade = None
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
elif score >=70:
grade ="C"
elif score >= 60:
grade = "D"
else:
grade = "F"
def handleLine(line):
fout=open("grades.csv", "w")
fname= line[1][1 : -1]
lname= line[0][1 : ]
midterm= line[2]
final = line[3]
numericGrade(midterm, final)
score = numericGrade(midterm,final)
grade = letterGrade(score)
return lname, fname, score, grade
if __name__=="__main__":
主要()
ある関数を別の関数に配置するのに問題があります。lname が 14 行目で定義されていないと表示されます。今は本当に迷っています。
編集:私は修正しました
lname, fname, score, grade= handleLine(行)
しかし、14行目にエラーがあります
TypeError: 'str' オブジェクトと 'NoneType' オブジェクトを連結できません