Skip to content Skip to sidebar Skip to footer

Trying To Get My Python Code To Ask A Set Number Of Questions And Then Stop

At the moment the code runs for an infinite amount of questions and never stops unless you select the exit option I included in but I want to get rid of it so it solely relies on t

Solution 1:

That's the solution:

import random

total_questions = 0 # make it global

def display_intro():
    title = "** A Simple Math Quiz **"
    print("*" * len(title))
    print(title)
    print("*" * len(title))


def display_menu():
    print("Choose your difficulty !")
    menu_list = ["1. Easy", "2. Hard", "3. Spicy", "4. Exit"]
    print(menu_list[0])
    print(menu_list[1])
    print(menu_list[2])
    print(menu_list[3])

def get_user_input():
    user_input = int(input("Enter your choice: "))
    while user_input > 4 or user_input <= 0:
        print("Invalid menu option.")
        user_input = int(input("Please try again: "))
    else:
        return user_input

def num_questions():
    global total_questions
    total_questions = int(input("How many questions would you like?: "))
    while total_questions >= 0 and total_questions < 100:
        print("Lets Go!")
        break
    else:
        print ("Please Try Again")

def get_user_solution(problem):
    print("Enter your answer")
    print(problem, end="")
    result = int(input(" = "))
    return result


def check_solution(user_solution, solution, count,):

    if user_solution == solution:
        count = count + 1
        print("Correct.")
        return count
    else:
        print("Incorrect.")
        return count

def menu_option(index, count):
    number_one = random.randrange(1, 9)
    number_two = random.randrange(1, 9)
    number_three = random.randrange(10, 99)
    number_four = random.randrange(10, 99)
    number_five = random.randrange(100, 999)
    number_six = random.randrange(100, 999)

    if index is 1:
        problem = str(number_one) + " * " + str(number_two)
        solution = number_one * number_two
        user_solution = get_user_solution(problem)
        count = check_solution(user_solution, solution, count)
        return count
    elif index is 2:
        problem = str(number_three) + " * " + str(number_four)
        solution = number_three * number_four
        user_solution = get_user_solution(problem)
        count = check_solution(user_solution, solution, count)
        return count
    elif index is 3:
        problem = str(number_five) + " * " + str(number_six)
        solution = number_five * number_six
        user_solution = get_user_solution(problem)
        count = check_solution(user_solution, solution, count)
        return count

def display_result(total, correct):
    if total > 0:
        result = correct / total
        percentage = round((result * 100), 2)
    if total == 0:
        percentage = 0
    print("You answered", total, "questions with", correct, "correct.")
    print("Your score is ", percentage, "%. Thank you.", sep = "")


def main():
    display_intro()
    num_questions()
    display_menu()

    option = 0
    total = 0
    correct = 0

    while option != 4 and total < total_questions:
        option = get_user_input()
        correct = menu_option(option, correct)
        total = total + 1

    print("Exit the quiz.")
    display_result(total, correct)

main()

Post a Comment for "Trying To Get My Python Code To Ask A Set Number Of Questions And Then Stop"