In: Computer Science
PYTHON
Write a program that asks the user to enter a student's name and 8 numeric assignment scores (out of 100 for each assignment). The program should output the student's name, a letter grade for each assignment score, and a cumulative average for all the assignments. Please note, there are 12 students in the class so your program will need to be able to either accept data for 12 students or loop 12 times in order to process all the students in the class.
Write the following functions in the program:
calc_average - this function should accept 8 assignment scores as arguments and return the average of the scores
determine_grade - this function should accept an assignment score as an argument and return a letter grade for the score based on the following grading scale:
90-100 A
80-89 B
70-79 C
60-69 D
Below 60 F
Data for the program:
Lucy Miller 45 69 70 66 87 82 75 73
Frank Jones 90 93 87 84 91 93 90 88
Nancy Franklin 99 97 92 90 88 89 87 90
Judy Forsyth 72 86 59 69 72 78 80 82
Tony Spirit 87 83 86 90 79 76 80 88
Ruth Ames 66 69 72 61 69 73 71 70
John Smith 100 98 89 93 82 86 91 93
Andrew Barnes 78 77 75 83 80 87 80 78
Becky Stone 98 94 90 89 84 83 79 93
Marvin Decker 59 54 61 45 39 66 70 72
Steve Parker 71 78 73 62 66 72 64 70
Frank Harper 89 86 90 92 91 85 88 93
CODE:
#function to get the grade
def determine_grade(marks):
#calculating the average marks of the list of marks
avg = int(sum(marks)/len(marks))
#returning the respective average
if(avg in range(90,101)):
return 'A'
elif(avg in range(80,90)):
return 'B'
elif(avg in range(70,80)):
return 'C'
elif(avg in range(60,70)):
return 'D'
else:
return 'F'
#function to calculate the average of list of marks
def calc_average(marks):
return sum(marks)/len(marks)
#list of students
listStudents = []
for i in range(12):
#dictionary which stores the data of each student
students = {'name':'','marks':
[0]*8,'grade':'','average':0.0}
#asking for the name
students['name'] = input('Enter the name: ')
marks = ''
#asking for 8 marks in a single line
while(True):
marks = input('Enter marks of 8 subjects separated by a space:
')
if(len(marks.split(' ')) == 8):
break
print('8 marks expected! Try Again')
#determining the grade and the average marks
students['marks'] = [int(x) for x in marks.split(' ')]
students['grade'] = determine_grade(students['marks'])
students['average'] = calc_average(students['marks'])
#appending the student to the list
listStudents.append(students)
#displaying the results
print('\nStudents Details: ')
for i in listStudents:
print('Name: {}; Grade: {}; Average: {}'.format(i['name'],
i['grade'],
str(i['average'])))
________________________________________
CODE IMAGES:
_____________________________________________
OUTPUT:
____________________________________________________
Feel free to ask any questions in the comments section
Thank You!