import unittest
class Student(object):
def __init__(self, name, score):
try:
self.name = name
self.score = score
except ValueError as e:
raise ValueError
def get_grade(self):
if 60 <= self.score < 80:
return 'B'
if 80 <= self.score <= 100:
return 'A'
if self.score>100 or self.score<0:
raise ValueError
return 'C'
class TestStudent(unittest.TestCase):
def test_80_to_100(self):
s1 = Student('Bart', 80)
s2 = Student('Lisa', 100)
self.assertEqual(s1.get_grade(), 'A')
self.assertEqual(s2.get_grade(), 'A')
def test_60_to_80(self):
s1 = Student('Bart', 60)
s2 = Student('Lisa', 79)
self.assertEqual(s1.get_grade(), 'B')
self.assertEqual(s2.get_grade(), 'B')
def test_0_to_60(self):
s1 = Student('Bart', 0)
s2 = Student('Lisa', 59)
self.assertEqual(s1.get_grade(), 'C')
self.assertEqual(s2.get_grade(), 'C')
def test_invalid(self):
s1 = Student('Bart', -1)
s2 = Student('Lisa', 101)
with self.assertRaises(ValueError):
s1.get_grade()
with self.assertRaises(ValueError):
s2.get_grade()
if __name__ == '__main__':
unittest.main()
# your code goes here
aW1wb3J0IHVuaXR0ZXN0CgpjbGFzcyBTdHVkZW50KG9iamVjdCk6CiAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgc2NvcmUpOgogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQogICAgICAgICAgICBzZWxmLnNjb3JlID0gc2NvcmUKICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgogICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCgogICAgZGVmIGdldF9ncmFkZShzZWxmKToKICAgICAgICBpZiA2MCA8PSBzZWxmLnNjb3JlIDwgODA6CiAgICAgICAgICAgIHJldHVybiAnQicKICAgICAgICBpZiA4MCA8PSBzZWxmLnNjb3JlIDw9IDEwMDoKICAgICAgICAgICAgcmV0dXJuICdBJwogICAgICAgIGlmIHNlbGYuc2NvcmU+MTAwIG9yIHNlbGYuc2NvcmU8MDoKICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogICAgICAgIHJldHVybiAnQycKCmNsYXNzIFRlc3RTdHVkZW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKCiAgICBkZWYgdGVzdF84MF90b18xMDAoc2VsZik6CiAgICAgICAgczEgPSBTdHVkZW50KCdCYXJ0JywgODApCiAgICAgICAgczIgPSBTdHVkZW50KCdMaXNhJywgMTAwKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEuZ2V0X2dyYWRlKCksICdBJykKICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMyLmdldF9ncmFkZSgpLCAnQScpCgogICAgZGVmIHRlc3RfNjBfdG9fODAoc2VsZik6CiAgICAgICAgczEgPSBTdHVkZW50KCdCYXJ0JywgNjApCiAgICAgICAgczIgPSBTdHVkZW50KCdMaXNhJywgNzkpCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMS5nZXRfZ3JhZGUoKSwgJ0InKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczIuZ2V0X2dyYWRlKCksICdCJykKCiAgICBkZWYgdGVzdF8wX3RvXzYwKHNlbGYpOgogICAgICAgIHMxID0gU3R1ZGVudCgnQmFydCcsIDApCiAgICAgICAgczIgPSBTdHVkZW50KCdMaXNhJywgNTkpCiAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzMS5nZXRfZ3JhZGUoKSwgJ0MnKQogICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczIuZ2V0X2dyYWRlKCksICdDJykKCiAgICBkZWYgdGVzdF9pbnZhbGlkKHNlbGYpOgogICAgICAgIHMxID0gU3R1ZGVudCgnQmFydCcsIC0xKQogICAgICAgIHMyID0gU3R1ZGVudCgnTGlzYScsIDEwMSkKICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICBzMS5nZXRfZ3JhZGUoKQogICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgIHMyLmdldF9ncmFkZSgpCgppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgdW5pdHRlc3QubWFpbigpCiMgeW91ciBjb2RlIGdvZXMgaGVyZQ==