py_Rooky
py_Rooky

Reputation: 11

How to return to beginning of program from inside of if statement?

I'm practicing some basic coding, I'm running a simple math program running in the terminal on Visual Studio Code.

How do I create an option to return to the beginning of the program, or exit the program after getting caught in an if statement?

Example:

#beginning of program

user_input=input('Please select "this" or "that": ')
findings=user_input

If findings == this:
        print(this)
        # How can I redirect back to first user input question, instead 
        # of just ending here? 
if findings == that:
        print (that)
        # Again, How do I redirect back to first user input, instead of 
        # the program ending here?  
# Can I setup a Play_again here with options to return to user_input, 
        # or exit program? And then have all other If statements 
        # redirect here after completion? How would I do that? with 
        # another If? or with a for loop? 
#end program

Upvotes: 1

Views: 4378

Answers (3)

py_Rooky
py_Rooky

Reputation: 11

Thanks to @Hack3r - I was finally able to choose to return back to the beginning of the program or exit out. But it resulted in a new issue. Now my print(results) are printing 4 or 5 times...

Here is the actual code I built and am working with:

def main():

    math_Options=['Addition +','Subtraction -','Multiplication *','Division /']
    math_func=['+','-','*','/']
    for options in math_Options:
        print(options)
    print('Lets do some Math! What math function would you like to use? ')
   
    while True:
        my_Math_Function = input('Please make your choice from list above using the function symbol: ') 
        my_Number1=input('Please select your first number: ')
        x=float(my_Number1)
        print('Your 1st # is: ', x)
        my_Number2=input('Please select your Second Number: ')
        y=float(my_Number2)
        print('Your 2nd # is: ', y)
        z=float()
        print('')
        for Math_function in math_func:
            if my_Math_Function == math_func[0]:
                z=x+y
            if my_Math_Function == math_func[1]:
                z=x-y
            if my_Math_Function == math_func[2]:
                z=x*y
            if my_Math_Function == math_func[3]:
                z=x/y

            if (z % 2) == 0 and z>0:    
                print(z, ' Is an EVEN POSITIVE Number')
            if (z % 2) == 1 and z>0:    
                print(z, ' IS a ODD POSTIVE Number')
            if (z % 2) == 0 and z<0:
                print(z, ' Is an EVEN NEGATIVE Number')
            if (z % 2) ==1 and z<0:
                print(z, ' IS a ODD NEGATIVE Number')
            if z==0:
                print(z, 'Is is Equal to Zero')
            print('')
        play_again=input('Would you like to play again? "y" or "n" ')
        if play_again == 'y':
            continue
        if play_again == 'n':
            break
        main()
main()

Upvotes: -1

The Amateur Coder
The Amateur Coder

Reputation: 839

Unfortunately, that 'another technique' I thought of using didn't work.

Here's the code (the first example modified):

import sys

def main():
    # Lots of setup code here.
    def start_over():
        return #Do nothing and continue from the next line
    condition = 1==1 #Just a sample condition, replace it with "check(condition)".
    float_condition = condition

    def play(*just_define:bool):
        if not just_define:
            play_again = input('play again? "y" or "n"')
    
            if play_again == 'y':
                start_over() #Jump to the beginning of the prohram.
            if play_again == 'n':
                sys.exit() #Exit the program
        
    while True:
        if float_condition == True:
            # print(float_condition)
            play() #skip to play_again from here?
    
        if float_condition == False:
            #print(float_condition)
            play() #skip to play_again from here?

    #I removed the extra "main()" which was here because it'd cause an infinite loop-like error.

main()

Output:

play again? "y" or "n"y
play again? "y" or "n"n

Process finished with exit code 0

The * in the play(*just_define:bool) function makes the just_define parameter optional. Use the parameter if you want to only tell Python to search for this function, so it doesn't throw a ReferenceError and not execute anything that's after the line if not just_define:. How to call like so: play(just_define=True).

I've used nested functions. I've defined play so that you can call it from other places in your code.

Upvotes: 0

Hack3r
Hack3r

Reputation: 79

You can try wrapping the whole program in a while loop like this:

while(True):
    user_input=input('Please select "this" or "that": ')
    this = 'foo'
    if user_input == this:
        print(this)
        continue 

    if user_input == this:
        print(this)
        continue    

Upvotes: 2

Related Questions