Vaeinaemoeinen
Vaeinaemoeinen

Reputation: 19

Python Function requesting input doesn't execute if statement - no error shown

I thoroughly searched for an answer to my question but couldn't find anything that would explain my results. I truly hope that anyone of you can point me in the right direction.


At the moment I am trying to program a text-based adventure game using Python 3 in order to better understand the language.

While doing so I created a function that should ask the user for input and print a specific statement depending on the users input. In case the users input is invalid the function should then keep asking for input until it is valid.

Unfortunately the function only seems to keep asking for input, without ever executing the if/elif statements within the function. Due to no errors being shown I am currently at a loss as to why this is the case...


print("If You want to start the game, please enter 'start'." + "\n" +              
      "Otherwise please enter 'quit' in order to quit the game.")

startGame = True


def StartGame_int(answer):
    if answer.lower() == "start":
        startGame = False
        return "Welcome to Vahlderia!"
    elif answer.lower() == "quit":
        startGame = False
        return "Thank You for playing Vahlderia!" + "\n" + "You can now close
                the window."
    else:
        return "Please enter either 'r' to start or 'q' to quit the game."

def StartGame(): 
    answ = input("- ")
    StartGame_int(answ)


while startGame == True:
    StartGame()

Upvotes: 0

Views: 1100

Answers (1)

Patrick Artner
Patrick Artner

Reputation: 51683

You fell into the scoping trap: you are creating a new variable startGame inside the function that is discarded after you leave it. You would instead need to modify the global one:

def StartGame_int(answer):
    global startGame   # you need to specify that you want to modify the global var
                       # not create a same-named var in this scope
    # rest of your code

This other SO questions might be of interest:

and my all time favorite:

The last one will help you figure out why your texts that you return are not printed and why the if does not work on 'r' or 'q' and whatever other problems you stumble into. It will also show you that your if are indeed executed ;o)


Other great things to read for your text adventure to avoid other beginner traps:

Upvotes: 2

Related Questions