On Jan 21, 2:40 pm, eli m <techgeek...@gmail.com> wrote: > an else statement is running when it shouldnt be. It is > on the last line. Whenever i am in the math or game > function, when i type in main, it goes back to the start > of the program, but it also says not a valid function. > I am stumped!
Here is your code with the irrelevancy stripped away: function = raw_input("Type in a function:") #start math loop if function == "math": #math code if function == "random number": #random code if function == "games": #games code if function == "help": #help code else: print ("Not a valid function") Say you enter 'math'. It passes the first condition, so runs the math code. It then fails on the next 3 conditions, the last of which has an else, so if you type _anything_ other than 'help', you'll see "Not a valid function". Easy answer, use `elif` ("else if") instead of else for the subsequent tests: if function == "math": #math code elif function == "random number": #random code elif function == "games": #games code elif function == "help": #help code else: print ("Not a valid function") Better answer: read up on real functions, and look into dictionary dispatch: def f_math(): #math code def f_random_number(): #random code <etc> function_dispatcher = { 'math': f_math, 'random number': f_random_number, <etc> } while cmd == 0: function_name = raw_input("Type in a function:") if function_name in function_dispatcher: function_dispatcher[function_name]() else: print("Not a valid function") To have your functions break out of the loop, use a `global` variable or pass a context object into each function to allow them to set `cmd`. -- http://mail.python.org/mailman/listinfo/python-list