Question: My output is wrong, what do I change? import csv def readFromFile ( gradebook ) : gradebook = { } with open ( gradebook
My output is wrong, what do I change?
import csv
def readFromFilegradebook:
gradebook
with opengradebookcsvr as file:
reader csvreaderfile
header nextreader # Skip the header row
for row in reader:
studentname row
grades intgrade for grade in row:
gradebookstudentname grades
return gradebook
def computeStudentAvggradebook:
for student, grades in gradebook.items:
avg sumgrades lengrades if grades else
gradebookstudentappendavg
return gradebook
def computeClassAvggradebook:
numstudents lengradebook
if numstudents :
return gradebook
numassignments lennextitergradebookvalues
classavg numassignments
for grades in gradebook.values:
for i in rangenumassignments:
classavgi gradesi
classavg avg numstudents for avg in classavg
gradebookClass Average' classavg
return gradebook
def computeLetterGradegradebook:
for student, grades in gradebook.items:
if student 'Class Average':
continue
avg grades # Last element is the student's average
if avg :
lettergrade A
elif avg :
lettergrade B
elif avg :
lettergrade C
elif avg :
lettergrade D
else:
lettergrade F
gradebookstudentappendlettergrade
return gradebook
def writeToFilegradebook outputfilename:
numassignments lengradebookClass Average'
assignments fAssignment i for i in rangenumassignments
with openoutputfilename, w newline as file:
writer csvwriterfile
writer.writerowStudent assignments Average 'Letter Grade'
for student, grades in gradebook.items:
if student 'Class Average':
writer.writerowstudent grades
def determineColumnWidthsgradebook:
numassignments lengradebookgetClass Average',
maxlengths lenName # Initial width for the 'Name' column
for i in rangenumassignments:
maxlengths.appendlenfAssignment i
maxlengths.extendlenAverage lenLetter Grade'
for student, grades in gradebook.items:
if student 'Class Average':
continue
maxlengths maxmaxlengths lenstudent
for i grade in enumerategrades:numassignments:
maxlengthsi maxmaxlengthsi lenstrgrade
if 'Class Average' in gradebook:
maxlengths maxmaxlengths lenfgradebookClass Average':f
for student, grades in gradebook.items:
if student 'Class Average':
continue
avg grades # Average
lettergrade grades # Letter Grade
maxlengths maxmaxlengths lenfavg:f
maxlengths maxmaxlengths lenlettergrade
return maxlengths
def displayGradebookgradebook:
numassignments lengradebookClass Average'
assignments fGrade i for i in rangenumassignments
header Name assignments Average "Letter Grade"
colwidths determineColumnWidthsgradebook
print
GRADE BOOK
headerrow joinfheaderi:colwidthsi for i in rangelenheader
printheaderrow
for student, grades in gradebook.items:
if student 'Class Average':
continue
row fstudent:colwidthsjoinfgradesi:colwidthsi for i in rangelengrades
row fgrades:colwidthsfgrades:colwidths
printrow
print
Class Average:"
avgrow fClass Average':colwidthsjoinfavg:colwidthsi f for i avg in enumerategradebookClass Average'
printavgrow
def main:
inputfilename 'inputgradebook.csv
outputfilename 'outputgradebook.csv
gradebook readFromFileinputfilename
gradebook computeStudentAvggradebook
gradebook computeClassAvggradebook
gradebook computeLetterGradegradebook
displapyGradebookgradebook
writeToFilegradebook outputfilename
if namemain:
mainGRADE BOOK
Step by Step Solution
There are 3 Steps involved in it
1 Expert Approved Answer
Step: 1 Unlock
Question Has Been Solved by an Expert!
Get step-by-step solutions from verified subject matter experts
Step: 2 Unlock
Step: 3 Unlock
