0% found this document useful (0 votes)
81 views4 pages

Answer

The document describes extending a Student class to allow calculating GPA based on letter grades entered as strings. It involves: 1. Adding a addLetterGrade method to the Student class that takes a letter grade as a string, maps it to a numeric grade point value based on a grading scale, and updates the student's grade points and credits. 2. Modifying the main program to allow entry of letter grades which get passed to addLetterGrade instead of addGrade, and still calculates the final GPA. 3. Testing the modified class and program to ensure letter grades can now be entered and GPA calculated correctly.

Uploaded by

VIKRAM KUMAR
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
81 views4 pages

Answer

The document describes extending a Student class to allow calculating GPA based on letter grades entered as strings. It involves: 1. Adding a addLetterGrade method to the Student class that takes a letter grade as a string, maps it to a numeric grade point value based on a grading scale, and updates the student's grade points and credits. 2. Modifying the main program to allow entry of letter grades which get passed to addLetterGrade instead of addGrade, and still calculates the final GPA. 3. Testing the modified class and program to ensure letter grades can now be entered and GPA calculated correctly.

Uploaded by

VIKRAM KUMAR
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

1. Extend the previous exercise by implementing an addLetterGrade method.

This is similar to
addGrade except that it accepts a letter grade as a string (instead of a gradepoint). Use the updated
class to improve the GPA calculator by allowing the entry of letter grades.
Answer:

#! /usr/bin/python3
# gpa.py
# Program to take credits and grades and return calculated GPA

class Student:
def __init__(self, hours, qpoints, credits):
self.hours = float(hours)
self.qpoints = float(qpoints)

def getName(self):
return self.name

def getHours(self):
return self.hours

def getQPoints(self):
return self.qpoints

def gpa(self):
return self.qpoints/self.hours

def addGrade(self, gradePoint, credits):


self.hours += credits
self.qpoints += credits*gradePoint

def addLetterGrade(self, grade):


total = 0
for i in grade(A,B,C,D,E,F):
if grade == 'A':
total = total + 4.0
elif grade == 'A-':
total = total + 3.7
elif grade == 'B+':
total = total + 3.3
elif grade == 'B':
total = total + 3.0
elif grade == 'B-':
total = total + 2.7
elif grade == 'C+':
total = total + 2.3
elif grade == 'C':
total = total + 2.0
elif grade == 'C-':
total = total + 1.7
elif grade == 'D+':
total = total + 1.3
elif grade == 'D':
total = total + 1.0
elif grade == 'E':
total = total + 0.0
elif grade == 'F':
total = total + 0.0

def main():
grade = input('Enter grade for next course, or type done finish: ')
credits = input('Enter number of credit hours for this course: ')
error_float = 'error: expected a floating-point number'
# make a new Student object
# students = Student('students', 0.0, 0.0) # This is wrong declaration because you initialised "def
__init__(self, hours, qpoints, credits): "
students = Student(0.0, 0.0, 0.0)

# user-feedback loop
while 1:
# prompt user to enter a grade
grade_str = input(grade)
# quit if no grade is entered
if grade_str.strip() == 'done':
break

try:
# convert input to a floating-point value
grade = float(grade_str)
except ValueError:
# if input cannot be converted, restart feedback loop
print(error_float)
continue

# prompt user to enter the number of credits


credits_str = input(credits).strip()
try:
# convert input to a floating-point value
credits = float(credits_str)
except ValueError:
# if input cannot be converted, restart feedback loop
print(error_float)
continue

# update the student's grades


students.addGrade(grade, credits)

# after user has entered all grades, compute the cumulative GPA
if students.getHours() == 0.0:
# can't compute GPA if hours = 0
print('*** zero credit hours recorded')
else:
# otherwise, output cumulative GPA and finish
print('*** final GPA =', students.gpa())

if __name__ == '__main__':
main()

2. Write a modified Button class that creates circular buttons. Call your class CButton and
implement the exact same methods that are in the existing Button class. Your constructor should
take the center of the button and its radius as normal parameters. Place your class in a module
called cbutton.py. Test your class by modifying roller.py to use your buttons.
Answer:

You might also like