Home > Learning, Lesson, math, Problem, Projects/Experiments, Python > Python: Grade_2 Math Questions V1

## Python: Grade_2 Math Questions V1

Learning : Python, Math
Subject: Math Questions for Grade-2 V.1

[NOTE: To keep the code as simple as we can, We WILL NOT ADD any user input Varevecations. Assuming that our user will Enter the right inputs.]

In the process of studing with/for my kids [specialy Math] i always need to give them some Questions in [+ -], I need to write the Questions on a paper then they solve it and i check the answers. So I thought if I create an app to solve this Problem.
Application to Do What?

• Select Two random numbers from a given range.
• Select a Math operator [+ -].
• Writing the Question on the Screen.
• Comparing the user input with the real answer.
• Writing a message on the screen acoording to the user answers.

• Start Play the Game. [All Math Lessons]
• Re-set the Numbers Range.
• Register New Kid to Play.
• Questions Like: x (+ -) y = ??
• Questions Like: x (+ -) ?? = y
• Questions Like:
x
y (+ -)
_______________
??

• Exit.
• In this Version (V.1) of the application, there will be some limitations on the Questions Difficulties, Number ranges and type of Questions.

Start Coding
Here is the code for the Main Menu.

``` # Code for Main Menu

os.system('clear')
print('\n\n\t This is a Math Revision Game.',version)
print('\t --------------------------------------------')

print('\n\n\t')
print('\t 1. Start Play the Game. [All Math Lessons]')
print('\t 2. Re-set the Numbers Range.')
print('\t 3. Register New Kid to Play.')
print('\t \n ')
print('\t 5. Questions Like:   x (+ -) y = ?? \n')
print('\t 6. Questions Like:   x (+ -) ?? = y \n')
print('\t 7. Questions Like:      x','\n\t\t\t\t y   (+ -)','\n\t\t\t     ___________')

print('\t ')
print('\t 9. Exit.')

user_select = input ('\n\n\t Select from the Menu. > ')

return user_select

```

Get the Numbers Range
In this Function the user will be asked to Enter the Number range as from and to, we will check if the user Enter a valid input, No space, No Alphabetics.

``` #  Get the Numbers Range

def get_numbers_range () :

"""
Function to get the Number range from the user, we will check if the user Enter
a valid input, No space, No Alphabetics.

return:
nfrom: is the lower number range.
nto  : is the upper number range.
"""

nfrom = check_user_input("\t Enter the Lower Range Number > ","\t ... You Need to Enter a Lower Range Number.") #(input('\n\t Enter the Lower Range > '))
nto = check_user_input("\t Enter the Upper Range Number > ","\t ... You Need to Enter an Upper Range Number.")

if (int(nfrom)) > (int(nto)) :
nfrom, nto =  nto, nfrom

return int(nfrom), int(nto)

```

Check user input
With each user input we will call this Function with two messages, statement message will be the one to gaid the user to What is need to Enter, error message will be display if the user input something wrong or not expected. Then the Function will return back the user input.

``` # check_user_input

def check_user_input(statment_m,error_m):
"""
Function to check on the user input if it is a valid or not.

Arguments:
statmen_m: will be the one to gaid the user to What is need to Enter
error_m: will be display if the user input something wrong or not expected.

Return:
uinput

"""
while True :
print(statment_m,end="")
uinput = input()
if ((uinput) in [" ",""] or (not uinput.isnumeric()) or ((uinput) in schar) or ((str(uinput).isalpha()))):
print(error_m)
else:
break
return uinput

```

Get the Kid Name
A small and short Function to return the user/Kid Name.

``` # Get the Kid Name

def get_kid_name () :

return input('\n\t Enter Your Name > ')

```

Setting and Variabls
This is the first upper part of the application, we just import the random and os also we set some variables.

``` # Variables

import random, os, operator

score1 = 0
good = ['Correct','You are Right', 'Well Done..','Nice..','Excellent..','Amazing..','Good job',' YES .. Keep it up .. ','So Proud of You','Yes .. Another Point for You',]
bad = ['Wrong ..','Sorry .. No!','Try Your Best','No!','No..Think Harder','ooops .. No','Not this Time']
oper_dict = { '+': operator.add, '-': operator.sub,} # '*': operator.mul, }
schar = "@_!#\$%^&*()?/\|}{~,.:'"

nfrom = 0
nto = 0
name = 0
version = 'V.10.2022.R1'
```

Math Question Type-1
This Function will ask the user 10 Questions of Math according to the Numbers Range were the question will looks like: X [+ -] Y = ??, then if the answer is right good message will display on the screen.

``` #  Math Question Type-1 (X [+ -] Y = ??)

def Math_G2_type_1():
os.system('clear')
score =0
for q in range(0,10):
n1 = random.randint(nfrom,nto)
n2 = random.randint(nfrom,nto)
op = random.choice(list(oper_dict.keys()))

if op == '-' :
if n1 ')
print('   ', n1, op ,n2,end='')

ans = check_user_input(" = ","  You Need to Enter an Answer .. ")

if  int(ans) == oper_dict[op](n1,n2):
print('   ',random.choice(good),'   .. ')
score = score +1
else:

return score

```

Math Question Type-2
This Function will ask the user 10 Questions of Math according to the Numbers Range were the question will looks like: X [+ -] ?? = Y, then if the answer is right good message will display on the screen.

``` # Math Question Type-1 (X [+ -] ?? = Y)

def Math_G2_type_2():
os.system('clear')
print('\n\n\t ', name ,' Now try to solve these once\n ')
score =0
for q in range(0,10):
n1 = random.randint(nfrom,nto)
n2 = random.randint(nfrom,nto)
op = random.choice(list(oper_dict.keys()))
if op == '-' :
if n1 < n2 :
n1,n2 = n2,n1

print('\t\t   ',n1)
print('\t\t   ',n2,' ',op)
print('\t\t __________')
ans = int(input('\t\t    '))

if ans in [" ",""]:
else:
if ans == oper_dict[op](n1,n2):
print('   ',random.choice(good),'   .. \n\n')
score = score +1
else:

return score

```

Math Question Type-3
This Function will ask the user 10 Questions of Math according to the Numbers Range were the question will looks like:

X
Y [+ -]
__________
???
then if the answer is right good message will display on the screen.

``` #

def Math_G2_type_3 ():
os.system('clear')
print('\n\n\t ', name ," let's try this.")
print('\t Complete with correct number.\n')
score = 0
for q in range(0,10):
n1 = random.randint(nfrom,nto)
n2 = random.randint(nfrom,nto)
op = random.choice(list(oper_dict.keys()))
if op == '-' :
if n1  n2 :
n1,n2 = n2, n1

print('\t ',n1,op, ' ______ = ', n2)

if ans in [" ",""]:
else:
if n2 == oper_dict[op](ans,n1):
print('   ',random.choice(good),'   .. \n\n')
score = score +1
else:
return score

```

Application Body
In the Application Body itself I use a while loop to call and detect the User input from the menu and using that input to call the corresponding Function. All the codes and functions also the application Body code is on the Source file and can be Downloaded.

I test the code and RUN the app several times, but errors can be found, so next version of this Application will solve any errors also will add more Math Questions Type.

..:: Have Fun with Coding ::.. 🙂