我有一個名爲'學生'的課程,它創建了一個基本的學生對象,並完成了啓動GPA所需的一切。我已經添加了兩種分別處理成績和字母等級的方法,然後計算GPA。我的問題是,如果輸入不可接受的字母等級(即G或X),最好的方法和位置是添加錯誤處理。我會在方法本身中做到這一點,還是在程序中調用它更合適?爲對象添加錯誤處理的最佳位置?
class Student:
def __init__(self, name, hours, qpoints):
self.name = name
self.hours = float(hours)
self.qpoints = float(qpoints)
def get_name(self):
return self.name
def get_hours(self):
return self.hours
def get_qpoints(self):
return self.qpoints
def gpa(self):
return self.qpoints/self.hours
def add_grade(self, grade_point, credit_hours):
self.qpoints += grade_point * credit_hours
self.hours += credit_hours
def add_letter_grade(self, grade_letter, credit_hours):
letter_grades = {
'A': 4.0,
'B': 3.0,
'C': 2.0,
'D': 1.0,
'F': 0.0
}
grade_point = letter_grades.get(grade_letter)
self.qpoints += grade_point * credit_hours
self.hours += credit_hours
def main():
new_student = Student('Mike Smith', 0, 0)
while True:
usr_input = input('Please enter the student course information'
' (grade and credit hours) separated'
' by a comma <q to quit>: ')
if usr_input == 'q':
break
else:
grade, hours = usr_input.split(',')
if grade.isalpha():
new_student.add_letter_grade(grade, float(hours))
else:
new_student.add_grade(float(grade), float(hours))
print('{0}\'s final GPA was {1:.2f}'.format(new_student.get_name(), new_student.gpa()))
if __name__ == '__main__':
main()
我投票結束這個問題作爲題外話,因爲「我的代碼有效,我怎麼能改進它」更適合CodeReview.stackexchange.com – TessellatingHeckler
@TessellatingHeckler更適合另一個網站不適合這是一個有效的密切原因,因爲遷移首先要求這個問題成爲題外話題。標準「太寬泛」或「基於意見」的理由是*更適合近距離投票;-) –