Search code examples
pythonexceptionraise

Raising an exception


This is a homework problem. I've been trying to solve it but couldn't get the right result.

This is the question:

Write a function string2int that attempts to convert a string to an integer. If the string does represent a positive integer then that integer should be returned. If the string does not represent a positive integer then you should raise a syntax exception (raise SyntaxError('not an integer')).

You may choose to use the (already defined) function all_digits that takes a string and returns True if all the characters of the string are digits and False otherwise.

What I've got so far is:

try all_digits is True:
    return int(num)
except all_digits is False:
    raise SyntaxError('not an integer')

Because I'm using an already defined function, I didn't define a function (or did I get it wrong?). Can anyone have a look at my code please? Much appreciated.


Solution

  • I can guess, but you might want to tell us what kind of error you get when you execute the code (just a heads up for the next time you ask a question).

    There's a couple of mistakes:

    1) The syntax of

    try all_digits is True:
    

    is wrong. The "try" statement should look like this:

    try:
        <your code>
    except <type of exception to catch>:
        <error handling code>
    

    2) You said "all_digits" is a function. Therefore, the code

    all_digits is True
    

    should be

    if all_digits(num):
    

    Putting it all together:

    def string2int(num):
        if all_digits(num):
            return int(num)
        raise SyntaxError('not an integer')