Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据函数的运行次数执行不同的选项?_Python_Python 3.x - Fatal编程技术网

Python 如何根据函数的运行次数执行不同的选项?

Python 如何根据函数的运行次数执行不同的选项?,python,python-3.x,Python,Python 3.x,您好,我是python新手,这是我的第一篇堆栈溢出帖子,如果这个问题在别处得到了回答,我很抱歉(我不完全确定如何搜索这个主题,如果有,请随意删除链接) 我正在创建一个冒险游戏,我希望用户在房子里选择不同的路径 我希望用户能够在房间A和房间B之间来回移动,但我希望根据用户进入房间A或房间B的次数显示不同的对话。如果是第一次,我希望打印功能(选项1),但如果用户输入>1次,我希望打印功能(选项2) 我已经知道了如何在这两个房间之间来回走动,但是如果我用当前的增量代码输入任意一个房间>1次,我不会得到

您好,我是python新手,这是我的第一篇堆栈溢出帖子,如果这个问题在别处得到了回答,我很抱歉(我不完全确定如何搜索这个主题,如果有,请随意删除链接)

我正在创建一个冒险游戏,我希望用户在房子里选择不同的路径

我希望用户能够在房间A和房间B之间来回移动,但我希望根据用户进入房间A或房间B的次数显示不同的对话。如果是第一次,我希望打印功能(选项1),但如果用户输入>1次,我希望打印功能(选项2)

我已经知道了如何在这两个房间之间来回走动,但是如果我用当前的增量代码输入任意一个房间>1次,我不会得到不同的对话选项。这是否与我“前往房间B”时退出房间A功能有关

任何帮助都将不胜感激

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