Question
#Python: The given program reads a list of single-word first names and ages (ending with -1), and outputs that list with the age incremented.
The program fails and throws an exception if the second input on a line is a string rather than an integer. At FIXME in the code, add try and except blocks to catch the ValueError exception and output 0 for the age.Ex: If the input is:
Lee 18
Lua 21
Mary Beth 19
Stu 33
-1
then the output is:
Lee 19
Lua 22
Mary 0
Stu 34
“# Split input into 2 parts: name and age
parts = input().split()
name = parts[0]
while name != ‘-1’:
# FIXME: The following line will throw ValueError exception.
# Insert try/except blocks to catch the exception.
age = int(parts[1]) + 1
print(‘{} {}’.format(name, age))
# Get next line
parts = input().split()
name = parts[0]”
Answer (Expert Verified)
The program illustrates the use of catching exceptions.
What are exceptions?
Exceptions are program statements that are used to control program errors, and prevent a program from crashing.
How to fix write the exception
The statements that catch the exception in the program are:
try:
age = int(parts[1]) + 1
print(‘{} {}’.format(name, age))
# Get next line
parts = input().split()
name = parts[0]
except ValueError:
print(‘Invalid value!’)
# Get next line
parts = input().split()
name = parts[0]
The complete program
The complete program is as follows:
# Split input into 2 parts: name and age
parts = input().split()
name = parts[0]
while name != ‘-1’:
# FIXME: The following line will throw ValueError exception.
# Insert try/except blocks to catch the exception.
try:
age = int(parts[1]) + 1
print(‘{} {}’.format(name, age))
# Get next line
parts = input().split()
name = parts[0]
except ValueError:
print(‘Invalid value!’)
# Get next line
parts = input().split()
name = parts[0]