Else statement executing when it shouldnt
eli m
techgeek201 at gmail.com
Mon Jan 21 10:37:59 EST 2013
On Sunday, January 20, 2013 9:56:59 PM UTC-8, alex23 wrote:
> On Jan 21, 2:40 pm, eli m <techgeek... at 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`.
Thank you, that solved my problem. Sorry for my posts, i am a noob and this is my first time posting on here.
More information about the Python-list
mailing list