Neemaximo
Neemaximo

Reputation: 20831

How to random mathematical operations

So I am creating a game where basically it asks people a few questions about what type of questions they want to answer and how many they want to answer and what not. I am having a problem figuring out how to random mathematical operations such as addition, multiplication, and subtraction in particular. Here is my whole code but the only part I am looking for help on is where it says "mixed" because I need to figure out how to mix the three operations.

import random
correct = 0

while True:
    questions = int(input("Enter the amount of questions would you like to answer: "))
    difficulty = input("Enter the difficulty of questions you would like: Beginner,    Intermediate, or Advanced: ")
math = input("Would you like to do addition, subtraction, multiplication, or mixed: ")

if difficulty == "Beginner":
    for i in range(questions):
        if math == "multiplication":
            beg1 = random.randint(1, 10)
            beg2 = random.randint(1, 10)
            prod = beg1 * beg2

            begAns = input("What is " + str(beg1) + " times " + str(beg2) + "? ")

            if int(begAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "subtraction":
            beg1 = random.randint(1, 10)
            beg2 = random.randint(1, 10)
            prod = beg1 - beg2

            begAns = input("What is " + str(beg1) + " minus " + str(beg2) + "? ")

            if int(begAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "addition":
            beg1 = random.randint(1, 10)
            beg2 = random.randint(1, 10)
            prod = beg1 + beg2

            begAns = input("What is " + str(beg1) + " plus " + str(beg2) + "? ")

            if int(begAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "mixed":
            beg1 = random.randint(1, 10)
            beg2 = random.randint(1, 10)
            prod = beg1 * beg2

            begAns = input("What is " + str(beg1) + " times " + str(beg2) + "? ")

            if int(begAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

elif difficulty == "Intermediate":
    for i in range(questions):
        if math == "multiplication":
            intermediate1 = random.randint(1, 25)
            intermediate2 = random.randint(1, 25)
            prod = intermediate1 * intermediate2

            intAns = input("What is " + str(intermediate1) + " times " + str(intermediate2) + "? ")

            if int(intAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "subtraction":
            intermediate1 = random.randint(1, 25)
            intermediate2 = random.randint(1, 25)
            prod = intermediate1 - intermediate2

            intAns = input("What is " + str(intermediate1) + " minus " + str(intermediate2) + "? ")

            if int(intAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "addition":
            intermediate1 = random.randint(1, 25)
            intermediate2 = random.randint(1, 25)
            prod = intermediate1 + intermediate2

            intAns = input("What is " + str(intermediate1) + " plus " + str(intermediate2) + "? ")

            if int(intAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "mixed":
            intermediate1 = random.randint(1, 25)
            intermediate2 = random.randint(1, 25)
            prod = intermediate1 + intermediate2

            intAns = input("What is " + str(intermediate1) + " times " + str(intermediate2) + "? ")

            if int(intAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod) 

elif difficulty == "Advanced":
    for i in range(questions):

        if math == "multiplication":
            adv1 = random.randint(1, 100)
            adv2 = random.randint(1, 100)
            prod = adv1 * adv2

            advAns = input("What is " + str(adv1) + " times " + str(adv2) + "? ")

            if int(advAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "subtraction":
            adv1 = random.randint(1, 100)
            adv2 = random.randint(1, 100)
            prod = adv1 - adv2

            advAns = input("What is " + str(adv1) + " minus " + str(adv2) + "? ")

            if int(advAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "addition":
            adv1 = random.randint(1, 100)
            adv2 = random.randint(1, 100)
            prod = adv1 + adv2

            advAns = input("What is " + str(adv1) + " plus " + str(adv2) + "? ")

            if int(advAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

        elif math == "mixed":
            adv1 = random.randint(1, 100)
            adv2 = random.randint(1, 100)
            prod = adv1 + adv2

            advAns = input("What is " + str(adv1) + " times " + str(adv2) + "? ")

            if int(advAns) == prod:
                print("That's right -- well done.\n")
                correct += 1
            else:
                print("No, I'm afraid the answer is ",prod)

else:
    print("Please enter Beginner, Intermediate, or Advanced.\n")


print("\nI asked you", questions, "questions. You got ", correct, " of them right.")

if correct / questions > 2/3:
    print("Well done.\n")
elif correct / questions > 1/3:
    print("You need more practice.\n")
else:
    print("Please ask your math teacher for help!\n")

restart = input("Would you like to play again? Y/N: ")
if restart == "Y":
    continue
elif restart == "N":
    break
else:
    print("Please Enter Y or N")

Upvotes: 2

Views: 13841

Answers (1)

Free Monica Cellio
Free Monica Cellio

Reputation: 2290

To randomly choose one of +, -, or * and apply it to two numbers:

import random
from operator import add, sub, mul

ops = (add, sub, mul)
op = random.choice(ops)

beg1, beg2 = random.randint(1,10), random.randint(1,10)

ans = op(beg1, beg2)

Upvotes: 8

Related Questions