This exercise combines try/except and raise in one function — the shape of most input validation: convert, check, and raise with a clear message when the input is unusable.
validate_age with one parameter, text.text to an int. If the conversion fails, raise ValueError with the message age must be a whole number.0 or above 120, raise ValueError with the message age out of range.validate_age("42") returns 42. validate_age("abc") and validate_age("130") both raise ValueError.
Run your code to see the output, then press Submit.
ValueError from int(text) and raise your own with the required message.try.import unittest
class TestValidateAge(unittest.TestCase):
def test_valid_age(self):
self.assertEqual(validate_age("42"), 42)
def test_zero_is_valid(self):
self.assertEqual(validate_age("0"), 0)
def test_letters_raise_with_message(self):
with self.assertRaises(ValueError) as context:
validate_age("abc")
self.assertEqual(str(context.exception), "age must be a whole number")
def test_negative_age_raises_with_message(self):
with self.assertRaises(ValueError) as context:
validate_age("-1")
self.assertEqual(str(context.exception), "age out of range")
def test_130_raises_with_message(self):
with self.assertRaises(ValueError) as context:
validate_age("130")
self.assertEqual(str(context.exception), "age out of range")
def validate_age(text):
try:
age = int(text)
except ValueError:
raise ValueError("age must be a whole number")
if age < 0 or age > 120:
raise ValueError("age out of range")
return age
print(validate_age("42"))
Sign in to join the discussion.
No comments yet. Be the first to ask a question.
Press Run to execute your code, or Submit to test and complete this problem.