Python Forum
Try/Except clauses not working?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Try/Except clauses not working?
#1
Would be great if someone could tell me why the Except clause doesn’t catch the exception below. Thanks.

def collatz(number):
    try:
        if number % 2 == 0:
            m = number // 2
            print(m)
            return(m)
        else:
            m = 3 * number + 1
            print(m)
            return(m)
    except ValueError:
        print('Error: Must enter an integer')


n = input('Enter number: \n')
# n = int(n)
while n != 1:
    n = collatz(n)
Error:
Enter number: 15 Traceback (most recent call last): File "/Users/admin/PycharmProjects/hello/collatz.py", line 18, in <module> n = collatz(n) File "/Users/admin/PycharmProjects/hello/collatz.py", line 3, in collatz if number % 2 == 0: TypeError: not all arguments converted during string formatting
Reply
#2
you catch ValueError in the except part, but what you get is TypeError, so it is not handled and is raised.
Note that you need to convert number to int or float before apply modulo %. Now it is str and % is treated as old-style string formatting.
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply


Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020