Question: I have snippits of my Python code and the output. I can't figure out why there is a header for Grade 1 1 - there
I have snippits of my Python code and the output. I can't figure out why there is a header for Grade there is no grade in the csv file, only grades. This error is misaligning the code for the average and the letter grade. import csvdef def computeLetterGrade gradebook:
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 gradebookdef writeToFilegradebook outputfilename:
numassignments lengradebookClass Average'
assgnments 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' columnfor i in rangenumassignments:
maxlengths.appendlenfAssignment i
maxlengths.extendlenAverage lenLetter Grade'
for student, grades in gradebook.items:
if student 'Class Average':
continue
maxlengths maxmaxlengths lenstudent # Update name column
for i grade in enumerategrades:numassignments: # Exclude Average
maxlengthsi maxmaxlengthsi lenstrgradeif 'Class Average' in gradebook:
maxlengths maxmaxlengths lenfgradebookClass Average'
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'
assgnments fGrade i for i in rangenumassignments
header Name assignments AverageLtter Grade"
colwidths determineColumnWidthsgradebook
print
GRADE BOOK
headerrow joinfheaderi:colwidthsi for i in rangelenheader
printheaderrowfor student, grades in gradebook.items:
if student 'Class Average':
continue
row fstudent:colwidthsjoinfgradesi:colwidthsi for i in rangelengrades
row fgrades:colwidthsfgrades:colwidths
printrowprint
Class Average:"
avgrow fClass Average':colwidthsjoinfavg:colwidthsi f for i avg in enumerategradebookClass Average'
print avgrowdef main:
inputfilename 'inputgradebook.csv
outputfilename 'outputgradebook.csv
gradebook readFromFileinputfilename
gradebook computeStudentAvgGradebook
gradebook computeClassAvg gradebook
gradebook computeLetterGrade gradebook
displayGradebookgradebook
writeToFilegradebook outputfilename
if :
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
