def student(sid,fname,lname, cc1,mark1,cc2,mark2,cc3,mark3,cc4,mark4,cc5,mark5,cc6,mark6): """Constructor for student""" return [sid,[fname,lname],[(cc1,mark1),(cc2,mark2),(cc3,mark3),(cc4,mark4),(cc5,mark5),(cc6,mark6)]] def get_id(std): """Returns students ID""" return std[0] def get_name(std): """Returns students Name""" return std[1] def get_courses(std): """Returns a list of tuples of course codes and grade""" return std[2] def get_fname(name): """Returns first name""" return name[0] def get_lname(name): """Returns last name""" return name[1] def get_ccode(course_det): """Returns course code part of the tuple""" return course_det[0] def get_grade(course_det): """Returns grade part of the tuple""" return course_det[1] st1=student("620000101","John","Doe","CS11Q",80,"CS11R",60,"CS20R",50,"CS20S",60,"CS22Q",65,"CS23Q",80) credit_list={'CS11Q':6,'CS11R':6,'CS20R':4,'CS23Q':4,'CS22Q':4,'CS20S':4} qp_list = {"A+":4.3,"A":4.0,"A-":3.7,"B+":3.3,"B":3.0,"B-":2.7,"C+":2.3,"C":2.0,"C-":1.7,"D+":1.3,"D": 1.0,"F": 0.0} ## For this fucntion to work you first need to write calc_gpa() def print_students_gpa(std): """Prints the students details and GPA""" print ("Student Id:", get_id(std)) print ("Student name:", get_fname(get_name(std)), get_lname(get_name(std))) print ("GPA: %.2f" %(calc_gpa(std))) def compute_letter_grade(grade): if grade > 85: return 'A+' elif (grade <= 85 and grade >= 70): return 'A' elif (grade <= 69 and grade >= 67): return 'A-' elif (grade <= 66 and grade >= 63): return 'B+' elif (grade <= 62 and grade >= 60): return 'B' elif (grade <= 59 and grade >= 57): return 'B-' elif (grade <= 56 and grade >= 53): return 'C+' elif (grade <= 52 and grade >= 50): return 'C' elif (grade <= 49 and grade >= 47): return 'C-' elif (grade <= 46 and grade >= 43): return 'D+' elif (grade <= 42 and grade >= 36): return 'D' elif grade <= 35: return 'F' def calc_letter_grade(student): course = [] courselist=get_courses(student) number_grade= [x[1] for x in courselist] course_code= [x[0] for x in courselist] letterGrade=map(compute_letter_grade,number_grade) course=zip(course_code,letterGrade) return course def convert_to_wtqp(codegrade): result1 = 0 result2 = 0 for my_key_cc,my_value_cc in credit_list.items(): if my_key_cc == get_ccode(codegrade).upper(): result1 = my_value_cc for my_key_lgrade,my_value_lgrade in qp_list.items(): if my_key_lgrade == get_grade(codegrade): result2 = my_value_lgrade return (result1,result2) def calc_gpa(std): cc_grade_point = [] cc_credit_weight = [] cc_lgrade_value = [] result = 0 lst_cc_lgrade = calc_letter_grade(std) for i in lst_cc_lgrade: cc_lgrade_value.append(convert_to_wtqp(i)) for i in cc_lgrade_value: cc_grade_point.append(i[0]*i[1]) for i in cc_lgrade_value : cc_credit_weight.append(i[0]) result=(sum(cc_grade_point)/sum(cc_credit_weight)) return result
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question