Python 如何根据函数的运行次数执行不同的选项?
您好,我是python新手,这是我的第一篇堆栈溢出帖子,如果这个问题在别处得到了回答,我很抱歉(我不完全确定如何搜索这个主题,如果有,请随意删除链接) 我正在创建一个冒险游戏,我希望用户在房子里选择不同的路径 我希望用户能够在房间A和房间B之间来回移动,但我希望根据用户进入房间A或房间B的次数显示不同的对话。如果是第一次,我希望打印功能(选项1),但如果用户输入>1次,我希望打印功能(选项2) 我已经知道了如何在这两个房间之间来回走动,但是如果我用当前的增量代码输入任意一个房间>1次,我不会得到不同的对话选项。这是否与我“前往房间B”时退出房间A功能有关 任何帮助都将不胜感激Python 如何根据函数的运行次数执行不同的选项?,python,python-3.x,Python,Python 3.x,您好,我是python新手,这是我的第一篇堆栈溢出帖子,如果这个问题在别处得到了回答,我很抱歉(我不完全确定如何搜索这个主题,如果有,请随意删除链接) 我正在创建一个冒险游戏,我希望用户在房子里选择不同的路径 我希望用户能够在房间A和房间B之间来回移动,但我希望根据用户进入房间A或房间B的次数显示不同的对话。如果是第一次,我希望打印功能(选项1),但如果用户输入>1次,我希望打印功能(选项2) 我已经知道了如何在这两个房间之间来回走动,但是如果我用当前的增量代码输入任意一个房间>1次,我不会得到
def room_A():
room_A_count = 0
# - if this is the first time the user enters the room, this code runs...
if room_A_count == 0:
print ("You enter room A")
print ("What would you like to do?")
print ("1. Enter room B")
print ("2. nothing")
room_A_choice = input("Choice: ")
if room_A_choice = "1":
room_A_count += 1
# - travel to room B
room_B()
elif room_A_choice == "2":
print ("You do nothing")
# - if the user travels back from Room B to Room A, it prints this message...
else:
print ("You enter room A again")
我要说的一件事是,通常要遵循的一个好原则是,每次调用函数时,函数的行为都是相同的。话虽如此,一种解决方法是将
房间数
存储为全局变量。然后将其作为参数传递到函数中,并每次递增
这有点老套,而且似乎很容易破解,所以我提出了一个面向对象的解决方案-
class RoomA:
def __init__(self):
self.room_A_count = 0
def enter(self):
if self.room_A_count == 0:
print ("You enter room A")
print ("What would you like to do?")
print ("1. Enter room B")
print ("2. nothing")
room_A_choice = input("Choice: ")
if room_A_choice = "1":
self.room_A_count += 1
# - travel to room B
room_B()
elif room_A_choice == "2":
print ("You do nothing")
else:
print ("You enter room A again")
我无法发表评论,因此如果我正确理解您的问题,我很抱歉,您需要做的只是添加一个if语句,在其中检查房间选择
if room_A_choice = ="1":
room_A_count += 1
if room_A_count >= 2:
# do something
else : room_B()
你可以用
输出
You enter room A
What would you like to do?
1. Enter room B
2. nothing
Choice: 1
In room B
You enter room A again
感谢您的及时回复!我想这条路对我来说很有用。只是一个后续问题。如何激活“类roomA”以启动用户在房间之间来回移动的来回循环?因此需要实例化类
a=roomA()
的对象。然后可以通过a.enter()
运行该方法。如果你不熟悉OOP,也许可以让你开始。非常感谢你花时间来帮助我,并为我指明了继续教育的正确方向!感谢您的及时回复!我尝试了这种方法,并在第二次进入A房间时收到了另一条消息(我修改了代码,允许用户再次进入B房间),但无法再转换回B房间。这对于一次性替代响应非常有效though@jwross--不知道你说的是什么意思“(我修改了我的代码,允许用户再次进入B房间)但无法转换回B房间”。你是说如果你从A进入B房间,那么你希望将来可以从A再次进入B房间(即执行代码,其中Room_A.Room_A_count==0)?对不起,不清楚,我的意思是我添加了第二个函数(命名为room_B())与第一个几乎相同,因此我可以执行函数室_A(),然后选择选项1前往函数室_B(),然后再次选择选项1前往函数室_A(),来回。我尝试了您的代码,但它不允许我“旅行”在房间之间来回移动,并根据我之前访问房间A或房间B的次数打印不同的输出。请告诉我这是否消除了任何混淆,或者我是否需要进一步学习Python词汇:)谢谢你的回答!这是我目前使用的方法,它没有按预期工作。“房间计数”在房间A和房间B之间来回移动时不增加
You enter room A
What would you like to do?
1. Enter room B
2. nothing
Choice: 1
In room B
You enter room A again