How to exit only an 'if' block in Python and not the entire program

Question:

Here I want to exit the if block, but I don’t want to use sys.exit() as it will terminate the program. I have a few lines to be executed at the end, hence I want to exit the if block only.
I can’t use break as it flags an error "break outside loop".

In this I want the program to exit the block at "if (retry == 3)", line 55 and print the lines at the end. However, it’s not happening until it is using sys.exit(), where it’s completely exiting the program.

import random
import sys

loop = ''
retry = 0
loop = input('Do you want to play lottery? yes/no: ')
if loop != 'yes':
    print('Thank you!! Visit again.')
    sys.exit()
fireball = input('Do you want to play fireball? yes/no: ')

lotto_numbers = sorted(random.sample(range(0, 4), 3))
fireball_number = random.randint(0, 3)


while loop == 'yes':

    user_input1 = int(input('Please enter the first number: '))
    user_input2 = int(input('Please enter the second number: '))
    user_input3 = int(input('Please enter the third number: '))
    print('Your numbers are: ', user_input1, user_input2, user_input3)

    def check():
        if lotto_numbers != [user_input1, user_input2, user_input3]:
            return False

        else:
            return True

    def fbcheck():
        if lotto_numbers == [user_input1, user_input2, fireball_number]:
            return True
        elif lotto_numbers == [fireball_number, user_input2, user_input3]:
            return True
        elif lotto_numbers == [user_input1, fireball_number, user_input3]:
            return True
        else:
            return False

    retry += 1
    result = check()
    if (result == True):
        print("Congratulations!! You won!!")
    else:
        print("Oops!! You lost.")

    if (fireball == 'yes'):
        fb_result = fbcheck()
        if (fb_result == True):

            print("Congratulations, you won a fireball!!")
        else:
            print("Sorry, you lost the fireball.")
    print('No of retries remaining: ', (3 - retry))
    if (retry == 3):

        sys.exit()

    loop = input('Do you want to try again? yes/no: ')
    continue
else:

    pass

print("Winning combination: ", lotto_numbers)
if (fireball == 'yes'):
    print('fireball no: ', fireball_number)
print('Thank you!! Visit again.')
Asked By: Varun

||

Answers:

You don’t need anything at all. Code inside the if block will execute and the script will run code after the if block.

Answered By: pythad

if is not a loop, so it doesn’t repeat. To proceed to further code, just remember to stop the indent; that’s all.

I.e.:

if some_condition:
    # Do stuff
# Stop indent and do some more stuff
Answered By: Rayhane Mama

I think I gotcha your willing.

You want to execute something after the if condition is executed? So, create a subtask, and call it!

def finish_program():
  print("something")
  a = "foo"
  print("finish program")

loop = input('Do u want to play lottery ? yes/no : ')
if loop!='yes':
    print('Thank you!! visit again.')
    finish_program()
Answered By: Damian Lattenero
Categories: questions Tags: ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.