python计算学分绩点的程序_Python:使用学分和成绩计算类的GPA

我非常接近这段代码,我需要找出一个以上的成绩作为参数。它需要一个完美的,但我的代码是写的,所以它一直采取的成绩和学分,直到什么都没有输入。但不是这样的。

我的代码:#! /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)

# 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()