如何让函数改变其他函数的真假语句
我遇到的基本问题是这样的:我想做一个简单的游戏,玩家在一个房间里,旁边有两个房间需要先“完成”才能继续。我希望第二个和第三个房间能把我最开始的那些True
(真的)状态变成False
(假的)状态,所有这些状态都需要在继续游戏之前被切换。
从系统导入退出
def room_1():
print "You're in room one, there are two doors to room 2 and 3."
print "Where do you want to go?"
done_2=True
done_3=True
while True:
move=raw_input("'room 2' or 'room 3'? >")
if move == 'room 2':
room_2()
elif move == 'room 3':
room_3()
else:
print "not a valid answer"
print "You Win!"
exit(0)
def room_2():
print "You finished room 2!"
done_1=False
raw_input('Press button')
room_1()
def room_3():
print "You finished room 3!"
raw_input('press button')
done_3=False
room_1()
room_1()
我该如何在第二和第三个房间里改变这些完成状态呢?
2 个回答
0
你需要把 done_1 和 done_2 声明为全局变量,也就是在函数 room_1() 之外定义它们。
4
在Python中,如果你想给全局变量赋值,必须先声明它们;否则,任何赋值操作都会覆盖这个全局变量。
def room_2():
global done_1 # <- right here
print "You finished room 2!"
done_1=False
raw_input('Press button')
room_1()
def room_3():
global done_3 # <- right here
print "You finished room 3!"
raw_input('press button')
done_3=False
room_1()
不过!
这样做通常是不太好的风格,尤其是像这种简单的情况。这样会让你更难理解你的函数是怎么工作的,它们改变了什么,以及改变的顺序。
其实,直接让你的函数返回 True
或 False
会更简单、更清晰,也更容易理解。
如果你把你的函数想象成“黑箱”,也就是说它们有输入,并且保证会输出特定的结果,这样通常能帮助你避免很多可能出现的混乱错误。