Wrote this for my college open evening just to give prospective students a taste of python. added a little "information" section just to bulk it out a bit (this section is slightly messy i know). Not sure if it works in command line, definitely works in IDLE but the command line is outdated on the college machines so bugs such as the trailing return (/r on the end of inputs) still apply so it is hard to validate.

Hope this is helpful for beginners etc (commented in places so prospective students can at least understand some of what's going on)

#import required library
import math

def solver(a,b,c):

    ###############################################################
    ### this function is used to solve the quadratic equation   ###
    ### and includes the mathematics required to do so properly ###
    ###############################################################

    #solve the discriminant and square root it
    discriminant = (b*b)-(4*a*c)
    rootedDiscriminant = math.sqrt(discriminant)

    #solve for both solutions of x
    solution1 = ((-b)+rootedDiscriminant)/(2*a)
    solution2 = ((-b)-rootedDiscriminant)/(2*a)

    #decides whether equation has 1 or 2 roots
    if solution1 == solution2:
        answer = [solution1]
    else:
        answer = [solution1,solution2]

    #returns the answer to the main program
    return answer


def menu():

    #################################################
    ### displays the main menu and asks for input ###
    #################################################

    #sets a loop so that the menu reappears after each use

    exitprogram = False
    while exitprogram == False:

        #Displays the main menu
        print(">>>>>-----------------------------------<<<<<")
        print(">>>>>     QUADRATIC EQUATION SOLVER     <<<<<")
        print(">>>>>-----------------------------------<<<<<")
        print("")
        print("Please select an option from the menu below")
        print("")
        print("1. Solve a quadratic equation of the form ax^2 + bx + c = 0")
        print("2. Learn about quadratic equations and their uses in industry, mathematics and science")
        print("3. Exit")
        print("")

        #Asks for an input and validates it to prevent crashing from unknown input types (i.e. string, decimal)
        accepted = False
        while accepted == False:
            try:
                choice = int(input("Please select an option using its corresponding number (e.g. 3) >>> "))
                accepted = True
            except:
                print("")
                print("INVALID INPUT. PLEASE ENTER ONE INTEGER ONLY")
                print("")
                accepted = False

        #Menu accepts input for choice 1 and validates it (solving an equation)
        if choice == 1:
            validinputs = False
            while validinputs == False:
                try:
                    print("")
                    print(""">>>>------------------------------------------------------------------------------<<<<""")
                    print(""">>>> IMPORTANT: Please make sure your equation is of the form "ax^2 + bx + c = 0" <<<<""")
                    print(""">>>>------------------------------------------------------------------------------<<<<""")
                    print("")
                    print("")
                    print("""Now please have ready your values for "a" "b" and "c" """)
                    print("")
                    number1 = eval(input("""Please enter your value for "a" >>> """))
                    number2 = eval(input("""Please enter your value for "b" >>> """))
                    number3 = eval(input("""Please enter your value for "c" >>> """))
                    validinputs = True
                    try:

                        #trys to call the function to solve the equation with given values.
                        #If the solver can find the answer to the problem then it will return
                        #either one or two values in a list (dependant on whether the equation
                        #has one or two distinct real roots. If the solver cannot find the answer
                        #it skips to the "except" section below

                        problemsolution = solver(number1,number2,number3)
                        if len(problemsolution) == 2:
                            for each in problemsolution:
                                print("")
                                print("One root of the equation is ",each)
                        else:
                            print("")
                            print("The equation has one real root: ",problemsolution[0])
                            print("")
                        exitloop = False
                        while exitloop == False:
                            print("")
                            selection = input("Would you like to return to the main menu (y/n)? >>> ")
                            if selection == "n":
                                exit()
                            elif selection == "y":
                                exitloop = True
                                print("")
                                print("----------------------------------------------------------")
                                print("")
                            else:
                                print("INVALID OPTION")
                    except:

                        #If the function crashes upon running then it must be trying
                        #to calculate a non-real number (in this case the program will be trying
                        #to compute the square root of a negative number. This gives an imaginary
                        #number and will crash the function. We can use this and realise the equation
                        #must have no real roots, and use this information to interpret the crash.

                        print("")
                        print("The Equation has no real roots.")
                        exitloop = False
                        while exitloop == False:
                            selection = input("Would you like to return to the main menu (y/n)? >>> ")
                            if selection == "n":
                                exit()
                            elif selection == "y":
                                exitloop = True
                                print("")
                                print("----------------------------------------------------------")
                                print("")
                            else:
                                print("INVALID OPTION")

                except:
                    print("INVALID INPUT. PLEASE ENTER ONE NUMBER VALUE ONLY")
                    validinputs = False
        elif choice == 2:
            print("")
            print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
            print(">>> USES OF QUADRATIC EQUATIONS IN A REALISTIC CONTEXT <<<")
            print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
            print("")
            print("Quadratic equations have many uses in the world. They can be")
            print("used to solve many challenging problems. Whether you realise")
            print("it or not, you will have used or experienced something that")
            print("has been designed and created to be as it is as a direct result")
            print("of solving quadratic equations.")
            print("For instance, arc of light the headlights on a car make can be")
            print("worked out using the quadratic formula, allowing automotive engineers")
            print("to work out how bright and how big to make the bulbs in headlights.")
            print("----------------------------------------------------------")
            print("below are some common uses of quadratic equations:")
            print("")
            print("- Working out the time of flight of a projectile (for example a bullet)")
            print("")
            print("- Calculating the perfect trajectory of a drop goal in a rugby match")
            print("")
            print("- Calculating stopping distances of cars (this is useful for car safety design")
            print("")
            print("- Used extensively in quantum theory")
            print("")
            print("- Structural problems for architects and civil engineers")
            print("")
            print("- Clock designs")
            print("")
            print("- Economics and financial problems (for example investment models")
            print("")
            print("----------------------------------------------------------")
            exitloop = False
            while exitloop == False:
                selection = input("Would you like to return to the main menu (y/n)? >>> ")
                if selection == "n":
                    exit()
                elif selection == "y":
                    exitloop = True
                    print("")
                    print("----------------------------------------------------------")
                    print("")
                else:
                    print("INVALID OPTION")
        elif choice == 3:
            exit()
        else:
            print("")
            print("INVALID INPUT. PLEASE TRY AGAIN")
            print("")



if __name__ == "__main__":

    #####################################################################
    ### calls the menu function automatically when the program starts ###
    #####################################################################

    menu()

Basically it looks OK, but the banners are excessive especially the last one and you could have used multi-line string for clearer long text message instead of loads of prints.

There are couple of code snippets already in the archive, mine is http://www.daniweb.com/software-development/python/code/356952 . Brings nostalgia as this program is one of first ones I wrote beginning of 1980's with BASIC.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.