Calling function inside if statement

43,986

Solution 1

Would recommend that you pass savinginfile as a parameter:

def option1(savinginfile):
    test = open ("test.txt", "rw")
    test.write(savinginfile)
    print ("Option 1 used")
    test.close()

You need to define option1 before calling. Python interprets from top to bottom.

Solution 2

You need to define your function before you try to call it. Just put def option1(): #and all that code below it above your if statements.

It's also bad practice to throw around too many global variables. You shouldn't use savinginfile the way you are -- instead, pass it to the function as a parameter and let the function operate in its own scope. You'll need to pass the function the name of the file to use before it's able to use savinginfile. Try instead:

def option1(whattosaveinfile):
  test = open("test.txt","a+") #probably better to use a with statement -- I'll comment below.
  test.write(whattosaveinfile) #note that you use the parameter name, not the var you pass to it
  print("Option 1 used")
  test.close()

#that with statement works better for file-like objects because it automatically
#catches and handles any errors that occur, leaving you with a closed object.
#it's also a little prettier :) Use it like this:
#
# with open("test.txt","a+") as f:
#   f.write(whattosaveinfile)
# print("Option 1 used")
#
#note that you didn't have to call f.close(), because the with block does that for you
#if you'd like to know more, look up the docs for contextlib

if menu == "1": #no reason to turn this to a string -- you've already defined it by such by enclosing it in quotes
  savinginfile = raw_input("Please state your name: ")
  option1(savinginfile) #putting the var in the parens will pass it to the function as a parameter.

elif menu == "2": #etc
#etc
#etc
Share:
43,986
Joe Doe
Author by

Joe Doe

Updated on November 02, 2021

Comments

  • Joe Doe
    Joe Doe over 2 years

    im trying to call function inside if statement but it does not work. This is one of my first attempts in using Python. What am I doing wrong?

    #!/usr/bin/python
    
    
    menu = raw_input ("Hello, please choose form following options (1,2,3) and press enter:\n"
        "Option 1\n"
        "Option 2\n"
        "Option 3\n")
    
    if menu == str("1"):
        savinginfile = raw_input ("Please, state your name: ")
        option1()
    elif menu == str("2"):
        print ("Option 2")
    elif menu == str("3"):
        print ("Option 3")
    
    def option1():
        test = open ("test.txt", "rw")
        test.write(savinginfile)
        print ("Option 1 used")
        test.close()