Python conversion and input validation
Convert text safely and handle invalid input.
Python
def parse_age(text):
try:
age = int(text)
except ValueError:
return "Invalid integer"
if age < 0:
return "Age cannot be negative"
return str(age)
print(parse_age("21"))
print(parse_age("abc"))
print(parse_age("-1"))
assert parse_age("0") == "0"Output
21 Invalid integer Age cannot be negative
Explanation
Text from a form or terminal is not automatically an integer. int converts valid integer text and raises ValueError for invalid numeric syntax.
Catch the specific expected error, then separately check the accepted numeric range. Fixed strings make this sample reproducible without interactive input.
Explore the dry run
Guided walkthroughReady
1
def parse_age(text):2
try:3
age = int(text)4
except ValueError:5
return "Invalid integer"6
if age < 0:7
return "Age cannot be negative"8
return str(age)9
10
print(parse_age("21"))11
print(parse_age("abc"))12
print(parse_age("-1"))13
assert parse_age("0") == "0"Follow the example
Start to inspect the source, values, and output. These prepared steps explain the published sample; grouped loop steps describe multiple iterations.
View the complete dry-run table
| Step / line | What happens | State after step | Output so far |
|---|---|---|---|
| For the first call, convert the text 21. | age = 21 | — | |
| Convert the valid result back to display text. | return = 21 | — | |
| Print the successful result. | return = 21 | 21 | |
| The abc call raises ValueError at int and enters this handler. | return = 21 | 21 | |
| Print the conversion error message. | return = 21 | 21 Invalid integer | |
| The -1 call converts successfully but fails range validation. | age = -1 | 21 Invalid integer | |
| Print the range error. | age = -1 | 21 Invalid integer Age cannot be negative | |
| Check that zero is accepted. | age = -1 | 21 Invalid integer Age cannot be negative |
Cost and common mistakes
O(n) parsing work for bounded integer text of length n; the converted value also occupies memory.
- Catching every exception can hide unrelated bugs.
- The function expects a string; it is not a general validator for arbitrary objects.
Try it yourself
Add an upper bound of 130.
Reveal answer and reasoning
Reject age > 130 with a separate message. Test 130 as accepted and 131 as rejected.