def make_gradebook():
return []
def make_module_info(module, grade):
module_info = (module,grade)
return module_info
def get_module(module_info):
return module_info[0]
def get_grade(module_info):
return module_info[1]
def get_level(module_info):
for i in module_info[0]:
if str.isdigit(i):
return i
def add_grade(gradebook, module_grade):
gradebook.append(module_grade)
return gradebook
def sort_by_module(gradebook):
gradebook.sort(key=lambda gradeb: gradeb[0])
return gradebook
def sort_by_level(gradebook):
gradebook.sort(key=lambda gradeb: get_level(gradeb))
return gradebook
def grade_to_numeric_marks(grade):
for i in grade:
if i[0] == 'A':
if i[1] == '+':
return 90
elif i[1] == '-':
return 80
else:
return 75
elif i[0] == 'B':
if i[1] == '+':
return 70
elif i[1] == '-':
return 65
else:
return 60
else:
if i[1] == '+':
return 55
elif i[1] == '-':
return 50
else:
return 46
return grade.sort()
def sort_by_grade(gradebook):
gradebook.sort(key=lambda gradeb: grade_to_numeric_marks(gradeb))
return gradebook
### for testing ###
gb = make_gradebook()
cs1010s = make_module_info('CS1010S', 'A+')
cs2020 = make_module_info('CS2020', 'A')
ma1101r = make_module_info('MA1101R', 'C')
ssa1207 = make_module_info('SSA1207', 'B+')
cs4247 = make_module_info('CS4247', 'A+')
ea5001 = make_module_info('EA5001', 'B')
add_grade(gb, cs1010s)
add_grade(gb, cs2020)
add_grade(gb, ma1101r)
add_grade(gb, ssa1207)
sort_by_grade(gradebook):
返回按模块等级从高到低排序的成绩册的新副本。确保“A +”出现在“A”之前 我使用grade_to_numeric_marks(grade):
作为帮助函数,但我仍然无法获得我想要的输出,即[('CS1010S', 'A+'), ('CS2020', 'A'), ('SSA1207', 'B+'), ('MA1101R', 'C')]
出现了什么问题?根据数字对字母排序
而得到的输出__do__你? – sshashank124
[('CS1010S','A +'),('MA1101R','C'),('SSA1207','B +'),('CS2020','A')] – user3398505
未分类。我想要的是[('CS1010S','A +'),('CS2020','A'),('SSA1207','B +'),('MA1101R','C')] – user3398505