【问题标题】:How to make a while loop throughout entire code. (Python)如何在整个代码中创建一个 while 循环。 (Python)
【发布时间】:2019-10-13 06:35:45
【问题描述】:

我目前正在制作一个基于文本的游戏,内容是在废弃的房子里穿行,寻找用来抵御怪物的物品等等。我想要一个 while 循环系统,如果您的健康状况低于 0 (health=20),则代码以 "You died to (insert event here)" 结束。我是使用 python 编码的新手,所以我不完全确定如何编码。

我尝试使用 if 语句设置一个 while 循环,该语句检查运行状况是否低于 0。它位于变量下方和函数上方的代码顶部附近

health = 20 #variable

while ( health < 0):
    print("You died to [insert event here]\n")
    break

它不做任何事情,而是完全忽略它。我不确定如何将代码放入函数中,因为我仍然需要使用“全局”将变量导入其中。如果你知道这个问题的答案,或者你知道解决这个问题的替代代码,请告诉我。再说一次,我是 python 新手,所以请用我能理解的方式解释一下。

【问题讨论】:

  • 有关您如何更新health 值的任何详细信息?
  • 我对你在问题结束时的陈述感到困惑。也许您应该对其进行重组以更清楚地说明您的实际问题是什么。阅读您的问题时,我首先想到的是:创建一个循环询问玩家是否还活着(health &gt; 0)并退出循环并在他死时打印您的文本。

标签: python function while-loop break


【解决方案1】:

首先,global 关键字只是为了让函数write 访问一个变量。他们总是可以读取在任何其他类/函数范围之外声明的变量。

我认为你想要的是以下内容:

  • 检查健康状况
  • 运行其余代码
  • 检查健康状况
  • 运行其余代码

无限...

如前所述,您目前正在做的是:

  • 检查健康状况
  • 运行其余代码

你将如何做到这一点:

while(health > lower_limit):
    [the rest of the code]

print("you died") # game over

这样,“当健康度高于下限时,[其余代码]将运行”。

【讨论】:

    【解决方案2】:

    你可以这样写:

    health = 20
    while health > 0:
        print("You died to XYZ")
        health -= 1
    

    这将打印"You died to XYZ" 20 次,因为循环将从 health = 20 到 health = 0 运行 20 次。

    但是,虽然健康

    【讨论】:

      【解决方案3】:

      我不认为这是详细解释为什么该代码不起作用的好地方。相反,请以以下游戏为例:

      def adventure_around(pit_limit = 5, initial_position = 0):
          position = initial_position
          lived = False
          print("Try not to die, noob!")
          while position < pit_limit:
              direction = input("Which way would you like to go? [n,s,e,w, or q]:")
              if direction not in ['n', 's', 'e', 'w', 'q']:
                  print("Please choose a direction.")
                  continue
              if direction == "n":
                  position += 1
              if direction == 's':
                  position -= 1
              if direction == "q":
                  print("Coward! (You lived, though.)")
                  lived = True
                  break
          if not lived:
              print("You fell into a pit and died while bravely wandering about! RIP")
      
      adventure_around()
      

      将它提供给您的 python 解释器并使用它。 (几分钟的乐趣!)然后研究代码。 (谷歌搜索也不是作弊!)while 关键字有什么作用?外部代码的信息如何传递给函数?为什么有两种方法可以退出while 循环?这是个好主意吗?有没有更好的方法来更新位置? lived 需要初始化吗?为什么或者为什么不?如果可以的话,继续修改它以适合您的目的。虽然我不认为 global health 变量是最好的方法,但请尝试更改代码,以便它使用 global 关键字来引用全局 health 变量。你在让它工作时收到了哪些错误消息?在包含数十、数百或数千个文件的大型游戏中,您将如何管理它?

      狩猎愉快!

      【讨论】:

        猜你喜欢
        • 2019-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-12
        • 1970-01-01
        • 2023-03-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多