0

私がやろうとしているのは、ファイルの各行を読み取り、それを 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' オブジェクトを連結できません

4

2 に答える 2

3

名前ではなく、値のみが返されます。

lname, fname, score, grade = handleLine(line)
于 2012-04-19T03:19:49.650 に答える
3

関数から値を返すとき、値の名前は関数内での名前ではなく、関数が戻るときに呼び出す名前です。

def myfunction():
   num = 5 
   return num  #returns 5


variableThatIsNotCalledNum = myfunction()
# my long named variable now holds the value 5

#error: no such variable around here
print num 

# prints the 5
print variableThatIsNotCalledNum 

もう1つnumericGrade()、それぞれletterGrade()必要です。return scoregrade

于 2012-04-19T03:29:55.537 に答える