Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

Python Python Basics (2015) Logic in Python Try and Except

I'm not sure what to put in the "else" block of my "try and except" lines of code.

the code looks like this: def add(x,y): try: float(x) + float(y) except ValueError: return none else:

I'm being asked to add an else block that returns the two added floats, but there is no variable describing this sum, retyping the sum doesn't work, and I'm not sure what else to do. Any tips?

trial.py
def add(x,y):
try:
  float(x) + float(y)
except ValueError: 
  return none
else:
  return float(x) + float(y)

1 Answer

Michael Hulet
Michael Hulet
47,893 Points

The else block in a try-except-else block runs when no exceptions were thrown in the try block. All of the changes you made in the try block will apply in the else block. Take your (syntax-corrected) function, for example:

trial.py
def add(x,y):
  try:
    x = float(x)
    y = float(y)
  except ValueError: 
    return None
  else:
    return x + y

If we pass in something valid, like this:

newFloat = add(5, 8)

The try block will run and succeed in converting the numbers we passed in into floats. All the code in the except block will be skipped, and execution will go straight to the else block, which adds 5.0 and 8.0 together, and returns the result. Thus, a float value of 13.0 will be safely assigned to newFloat.


However, let's see what happens when we pass in invalid input, like this:

invalid = add(7, "not a number")

In the try block, Python will succeed in converting the number 7 into a float, but it will fail when trying to convert the string "not a number", and it will instead raise a ValueError. The except block will detect that a ValueError was encountered, and it will execute the code inside its block. Thus, the value None will be returned, and the code in the else block will never run

Thank you for your thorough answer.