Since Python 3, input returns a string which you have to explicitly convert to int, like this x = int (input ("Enter a number: ")) y = int (input ("Enter a number: "))
For this kind of input manipulation, you can either num1, num2 = map (int, input ().split ()) if you know how much integers you will encounter or nums = list (map (int, input ().split ())) if you don't.
int (x) == x covers floats, too. If you really need to check then it's better to use abstract base classes rather than concrete classes. For an integer that would mean: This doesn't restrict the check to just int, or just int and long, but also allows other user-defined types that behave as integers to work.
Let u = xx. But it's certain that this isn't the correct way to evaluate that, and the answer must be wrong. If u = xx, then du is not equal to dx, and there lies your mistake. You forgot to compute du in terms of dx. Further, after solving an indefinite integral, it's ofter good idea to check it, deriving.