gpt4 book ai didi

python - 为对象添加错误处理的最佳位置?

转载 作者:太空狗 更新时间:2023-10-30 02:29:24 25 4
gpt4 key购买 nike

我有一个名为“学生”的类,它创建了一个基本的学生对象,其中包含完成 GPA 所需的一切。我添加了两种方法,分别处理成绩点和字母等级,然后计算 GPA。我的问题是最好的方法和位置是添加错误处理,以防他们输入 Not Acceptable 字母等级(即 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()

最佳答案

grade_point = letter_grades.get(grade_letter)

这是您应该触发错误的地方。

我会将 letter_grades.get(grade_letter) 更改为 letter_grades[grade_letter]。让它引发 KeyError,并渗透到调用者。

在主循环中捕获异常,

try:
new_student.add_letter_grade(grade, float(hours))
except KeyError:
print("That looks like a letter grade, but we don't know what it means. Ignoring it.")

```

关于python - 为对象添加错误处理的最佳位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32591943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com