Simple addition, multiplication, divison, and subtraction program
Be careful with exceptions. int(answer) may raise a ValueError if an answer cannot be converted. Same goes for unchecked division.
In case of an illegal choice, choose doesn't return a value. Not a problem here, but rather a bad habit.
if/elif/elif/... cascade is usually better expressed via a dictionary, in this case of 2-tuples (a format string and a lambda:

problems = { "ADD": ("{} + {}", lambda x,y: x + y), 
             "MULT": (...),
              etc }


Then the body of choose could be reduced to

try:
    format, action = problems[types.upper()]
    print format.format(num1, num2)
    return action(num1, num2)
except KeyError:
    print "Choose only from %s" % ",".join([key for key in problem.keys()])


and you may freely add more operations to problems not ever touching the code.