# @author: Abhijeet vaidya
# @contact: abhijeetavaidya@gmail.com
# @license: MIT license(Free Open Source License)
# @Description: Gpa is Grade point average, which is use to determine the student academic pointer
# based on the value of the grade he/she acquired in single semester, where as cgpa is cumlative
# grade point average is to calculate the total credits and total grade acquired in
# his/her entire academics. Here i have determined to use grade scale of two values
# 5.0 and 10.0, many other academics may have different grading system.For a different grades and # their grade values, You can change the value in method called getGradeData.For any bug report # contact at above email-address
class Gpa(object):
# data attributes
"helps to calculate the Gpa and Cgpa"
arg1 = None
arg2 = None
subData = None
Scale = None
credits = None
initCourse = 0
initgetCredit = 0
totalCredits = 0
temp = 0
def getCourse(self):
"get the value of the no of course you registered"
self.arg1 = input("No of course you have registered: " )
pass
def getSubject(self,value):
"get the subject value"
self.arg2 = value
pass
def getScale(self):
"To get the scale value"
self.Scale = input("Enter the Scale value(Either 5 or 10): " )
pass
def getSubjectData(self):
"get the subject Data in string"
self.subData = raw_input("Enter the grade: " )
pass
def getGradeData(self):
# To calculate grade for two scale,one is for 5.0 and other one for 10.0
if self.Scale == 10:
grade1 = {'s':10,'a':9,'b':8,'c':7,'d':5,'e':3,'f':0}
x=grade1[self.subData]
else: #5.0 scale
grade2 = {'a':5,'b':4,'c':3,'d':2,'e':1,'f':0}
x=grade2[self.subData]
return x
def getCredits(self):
"get credit value"
self.credits = input("Enter the credits for a subject:" )
pass
def gpa(self):
print "Calculate GPA:"
sem = raw_input("Please Enter Semester: " )
self.getScale() #input the scale value
if self.Scale == 5 or self.Scale == 10:
self.getCourse()
if self.arg1 >= 2:
self.calculateGpa()
else:
print "In order to calculate Gpa you schould have atleast 2 subject minimum"
else:
print "you have not entered the scale correctly please try again"
pass
def calculateGpa(self):
"Method to calculate Gpa "
while self.initCourse!=self.arg1:
self.initCourse=self.initCourse+1
self.getCredits()
self.initgetCredit = self.credits
self.getSubjectData()
#type(self.getSubjectData())
self.temp = self.initgetCredit*self.getGradeData()+self.temp
self.totalCredits=self.totalCredits+self.initgetCredit
gpa = round((self.temp+.0)/(self.totalCredits+.0),2)
print "you have registered for total credits:"+" "+str(self.totalCredits)+" "+"and you have acquired GPA:\""+str(gpa)+"\""
pass
def cgpa(self):
print "Calculate your cgpa: "
semesters = input("Enter how many semester cgpa has to be found of: " )
counter = 0
tempInit = 0
tempTotalCredits = 0
self.getScale() #input the scale value
if self.Scale == 5 or self.Scale == 10:
while counter != semesters:
counter = counter+1
print "Please enter the details of the semester"+" "+str(counter)
self.getCourse()
self.calculateGpa()
tempInit = self.temp+tempInit
tempTotalCredits = tempTotalCredits + self.totalCredits
# re-assigning
self.arg1=0
self.initCourse =0
self.temp=0
self.totalCredits=0
print "\n"
cgpa = round((tempInit+.0)/(tempTotalCredits+.0),2)
print "you have registered for total credits:"+" "+str(tempTotalCredits)+" "+"and you have acquired CGPA:\""+str(cgpa)+"\" "
else:
print "you have not entered the scale correctly please try again"
pass
if __name__ == '__main__': # main method
#how to calculate it
Init = Gpa() # Creating Instance
# for calculation of Cgpa (cumulative grade point average)
Init.cgpa()
# In Order to calculate Gpa for single semester
#Init.gpa()
#output:
"""
[abhi@localhost ~]$ python gpaCalculator.py
Calculate your cgpa:
Enter how many semester cgpa has to be found of: 2
Enter the Scale value(Either 5 or 10): 10
Please enter the details of the semester 1
No of course you have registered: 2
Enter the credits for a subject:4
Enter the grade: a
Enter the credits for a subject:4
Enter the grade: c
you have registered for total credits: 8 and you have acquired GPA:"8.0"
Please enter the details of the semester 2
No of course you have registered: 3
Enter the credits for a subject:4
Enter the grade: b
Enter the credits for a subject:5
Enter the grade: a
Enter the credits for a subject:3
Enter the grade: c
you have registered for total credits: 12 and you have acquired GPA:"8.17"
you have registered for total credits: 20 and you have acquired CGPA:"8.1"
"""