Program for helping people practice their maths
Doing something n times

You have a loop asking 10 questions, which you implement like:

question_number = 1
...
while question_number &lt;= 10:
    ...
    question_number = question_number + 1
    ...


This works, but we can do better. The problem with this loop is that it's error-prone. It's three lines of code to express a simple concept, and they're far apart. What if you added a continue before the increment? You'd ask more questions than you meant to. 

A better way is just:

for question_number in range(10):
    ...


That loop will iterate 10 times, all in one line of code. 

Repetition, repetition, repetition

You have

correct = correct + 1


in three places. Whenever we repeat ourselves, we risk repeating ourselves incorrectly. In this case, we did! For addition questions, we check if the user actually gave us the right answer. For the other two questions, we forgot to check! There's no if statement! 

Much better to first determine what the right answer is:

if operation == '+':
    real_answer = num1 + num2
elif operation == '-':
    real_answer = num1 - num2
elif operation == 'x':
    real_answer = num1 * num2


And then just check it in one spot:

if user_answer == real_answer:
    correct += 1


[Advanced] But even this is super repetitive with setting up real_answer, so we can do better still. The value of operation basically defines a function that we need to apply to the two numbers. Let's make that more explicit by actually defining functions:

def add(a, b):
    return a + b

def sub(a, b):
    return a - b

def mul(a, b):
    return a * b

choice = {'+': add, '-': sub, '*': mul}


Now we can do:

real_answer = choice[operation](num1, num2)
if user_answer = real_answer:
    correct += 1


This can be shortened further with the standard library. Python gives us operator which defines all of these functions:

choice = {'+': operator.add, 
    '-': operator.sub,
    '*': operator.mul
    }


The advantage of avoiding the repetition is how easy it becomes to add new operators. Let's say we want to test division? We would just have to add one line of code:

choice = {'+': operator.add, 
    '-': operator.sub,
    '*': operator.mul,
    '/': operator.div  # &lt;== just this
    }


Spacing

The ultimate Python style guide is PEP-8. Please use 4-space tabs throughout, not 8. That is too much spacing. No spacing between a function and the parens:

num_1 = random.randint(1,10)   # this one is good
num_2 = random.randint (1,10)  # this is an extra space


Also see the guidelines regarding variable names (prefer real_answer to realanswer, etc.)