I am trying to make a text-based game but I am having troubles passing some variables from one function to another. I figured out how to modify the variable inside a function and return new values to overwrite the original.
What I need help with is how to get room1()
and room2()
variables back to something1(x)
and something2(y)
and into main()
to unlock the if
statement.
Should I have two different or one function for something1(x)
and something2(y)
?
This is a general sample code with the problem I'm having:
def something1(x):
x += 0
return x
def something2(y):
y += 0
return y
def main():
print("1. Try to open door")
print("2. Go to room1")
print("3. Go to room2")
choice = int(input("Enter selection: ")
if choice == "1":
# Trying to get this if statement to work with the variables
# Don't know which function or parameters to pass in order to get it to work
if x == 3 and y == 2:
print("You're free")
else:
print("You're not free")
elif choice == "2":
room1()
elif choice == "3":
room2()
else:
print("ERROR")
main()
def room1():
print("1. Push thing1")
print("2. Push thing2")
print("3. Push thing3")
print("4. Return to previous room")
pushChoice = input("Enter selection: ")
if pushChoice == "1":
print("Thing1 pushed")
room1()
elif pushChoice == "2":
print("Thing2 pushed")
room1()
elif pushChoice == "3":
print("Thing3 pushed")
# The modified variable x for something1(x)
x = 3
x = something1(x)
room1()
elif pushChoice == "4":
main1()
else:
print("ERROR")
room1()
def room2():
print("1. Pull thingA")
print("2. Pull thingB")
print("3. Pull thingC")
print("4. Return to previous room")
pullChoice = input("Enter selection: ")
if pullChoice == "1":
print("ThingA pushed")
room1()
elif pullChoice == "2":
print("ThingB pushed")
# The modified variable y for something2(y)
y = 2
y = something1(y)
room1()
elif pullChoice == "3":
print("ThingC pushed")
room1()
elif pullChoice == "4":
main1()
else:
print("ERROR")
room1()
You could pass
a variable from one function to another by returning the variable. However, in order to do that, the function has to call another function within the function body, for example:
def addandsquare(x, y):
y = squarefunction(x+y) # sum x+y is passed to squarefunction, it returns the square and stores it in y.
return y
def squarefunction(a):
return (a*a) # returns the square of a given number
print(addandsquare(2, 3)) # prints 25
However, if you cannot call a function within it's body, but you would like to use a local variable of that function, you can then declare that variable global to both the functions.
Here is an example of that:
globvar = 0
def set_globvar_to_one():
global globvar # Needed to modify global copy of globvar
globvar = 1
def print_globvar():
print globvar # No need for global declaration to read value of globvar
set_globvar_to_one()
print_globvar() # Prints 1
Hope this helps!
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.