# How to Make a Simple Math Quiz Game in Python

Learn how to make a simple math quiz game in Python utilizing the PyInputPlus module to verify the user input.
4 min read · Updated mar 2023 · General Python Tutorials

Ready to take Python coding to a new level? Explore our Python Code Generator. The perfect tool to get your code up and running in no time. Start now!

In this tutorial, we will make a simple maths game on the console with the PyInputPlus module. The main features of this simple game are adding points (like a score), multiple equation types (such as addition, subtraction, multiplication, and division), and the ability to stop the game.

To get started, since PyInputPlus is not a built-in module, we have to install it:

``\$ pip install PyInputPlus``

Importing PyInputPlus and random:

``````# Imports
import pyinputplus as pyip
from random import choice``````

Related: How to Make a Hangman Game in Python.

## Setting Up Variables

We continue by setting up some variables to use later.

The `questionTypes` list holds the operators which can be used in the equations; keep in mind that they have to be valid Python operators. You could add the modulo `(%)` or any other valid Python operator to the list to enable these operators in the game. These will be randomly chosen with the `random.choice()` function.

Next, we define a list called `numberRange` which holds all numbers that can appear in the equations. We can do this in one line.

Last but not least, we define a points variable, which starts with 0.

``````# Variables
questionTypes = ['+', '-', '*', '/', '**']
numbersRange = [num for num in range(1, 20)]
points = 0``````

## Hints

To ensure that the user knows what he has to do, we print some hints about the game.

Later we will round Solutions because equations like `7 / 4` are impossible to write out.

We will also enable the user to stop the game after every question. That's why we mention it here.

``````# Hints
print('Round down to one Number after the Comma.')
print('When asked to press enter to continue, type stop to stop.\n')``````

## Generate Equation

We now enter the game loop, where we start by deciding on a question type. This is done with the `random.choice()` method from the random module. This will return one of the items from the `questionTypes`.

Then we build the equation where we also use the `random.choice()` to choose random items from the `numbersRange` list and insert them in this string.

After that, we used Python's great `eval()` function. It takes a string and evaluates it, and returns the solution. We save this to the solution variable; we later test this against what the user has written.

``````# Game Loop
while  True:
# Deciding and generating question
currenType = choice(questionTypes)

promptEquation = str(choice(numbersRange)) + ' ' + currenType + ' ' + str(choice(numbersRange))
solution = round(eval(promptEquation), 1)``````

## Receiving Input

Next, we use the `inputNum()` method from the PyInputPlus Module. This function will test if the input was a number, and if not, it will ask again. We fill out its prompt parameter with our prompt string; keep in mind to add `' = '` so it makes sense for the user. We could not have done this before the `eval()` function because it would work that way.

``````    # Getting answer from User
answer = pyip.inputNum(prompt=promptEquation + ' = ')``````

## Giving Feedback

After we receive the user input, we test it against the solution returned by the `eval()` function. If they match, we raise the points by one and print out a nice comment and the new point number.

If it's wrong, we lower the points by one and print out the right solution.

``````    # Feedback and Points
points += 1
print('Correct!\nPoints: ',points)
else:
points -= 1
print('Wrong!\nSolution: '+str(solution)+'\nPoints: ',points)``````

## Stopping the Game

Last but not least, we halt the game after every question. If the user presses enter, it continues. For that to work, we have to set `blank` to `True` but if the user types `stop`, the game will stop.

``````    # Stopping the Game
if pyip.inputStr('Press "Enter" to continue', blank=True) == 'stop':
break

print('\n\n')``````

Let's run it:

``````\$ python simple_math_game.py

Round down to one Number after the Comma.
When asked to press enter to continue, type stop to stop.

5 ** 4 = 625
Correct!
Points:  1
Press "Enter" to continue

9 ** 18 = 190
Wrong!
Solution: 150094635296999121
Points:  0
Press "Enter" to continue

7 - 17 = -10
Correct!
Points:  1
Press "Enter" to continue
stop``````

Awesome! Now you know how to make a simple console math game with PyInputPlus. You can get the complete code here.

Learn also: How to Generate Random Data in Python

Happy coding ♥

Let our Code Converter simplify your multi-language projects. It's like having a coding translator at your fingertips. Don't miss out!

Sharing is caring!

### Comment panel

Got a coding query or need some guidance before you comment? Check out our Python Code Assistant for expert advice and handy tips. It's like having a coding tutor right in your fingertips!