【问题标题】:Bool function in Python for text based adventure [closed]Python中用于基于文本的冒险的布尔函数[关闭]
【发布时间】:2013-06-14 05:18:55
【问题描述】:

好的,所以我正在尝试设置一个布尔值,以便如果一个项目被取走,它变成 True,下一次如果它是 True,那么它会采用不同的路径,这是我第一次用 Python 写东西,所以请原谅糟糕的代码公约。无论如何,在记笔记之前,我需要布尔为 False,当它是时,我希望它变为 True。我将来可能会遇到的一个问题是,有一部分玩家回到了这个房间,当他们回到这个房间时,我怎样才能让 bool 保持 True?

def first_room(Note):
    choice1_1 = raw_input('The house looks much larger than it did from the outside. You appear in a room, to your left is a closet, to your right is a pile of junk, in front of you is a door, and behind you is the exit.')
    choice1_1 = choice1_1.lower()
    if choice1_1 == 'left' or choice1_1 == 'l' or choice1_1 == 'closet':
        if note == False:
            choice1_c = raw_input('You open the closet and check inside, there is a note. Do you take the note? (Y/N)')
            choice1_c = choice1_c.lower()
            if choice1_c == 'y':
                print 'You took the note.'
                first_room(True)
            if choice1_c == 'n':
                print 'You leave the note alone.'
                first_room(False)
        else:
            print 'The closet is empty.'
            first_room(True)
first_room(False)

【问题讨论】:

  • Python 中的大小写很重要。 def first_room(Note)def first_room(note) 不是一回事。
  • 您似乎正在尝试将函数调用用作 GOTO 的。这是一个坏主意,因为它不会按照您想要/期望的方式工作。
  • 欢迎来到 Stack Overflow。请尽快阅读FAQ。我已经为你整理了代码的缩进(避免在 SO 上使用标签;它们会造成麻烦)。我不确定的唯一一行是最后一行,first_room(False)。它可能是函数的一部分,也可能是函数之后的单独语句(或者它可能打算在第一个 ifelse: 之后出现)。如果我选择了错误的缩进,请编辑函数。
  • @JonathanLeffler,很确定最后一行应该有凹痕
  • @gnibbler:鉴于 OP 的编辑,看来您是正确的。

标签: python text path boolean adventure


【解决方案1】:

这里有几个问题:

首先,假设全世界都熟悉您工作的环境,您就可以提出您的问题。好吧,我们不熟悉。 :-) 不知何故,您似乎希望函数记住 note 的值,但我不确定。

更多问题:

def first_room(Note):

在 Python 中,名以大写开头,变量名应以小写开头。

if note == False:

永远,永远这样做!您可以直接测试布尔值,例如:

if not note:

您还可以交换if 的两个臂,使其听起来不那么傻:

if note:
    # ... do something ...
else:
    # ... do something else ...

无论如何我都建议你参加基础编程课程...

【讨论】:

  • 在我的情况下,我不能参加编程课程。父母不允许。我昨天才开始使用 Python,以前我所知道的只是一些视觉基础知识,无论哪种方式都感谢您的帮助。它有效,我只是不小心写了笔记而不是笔记,不是故意的。另外,只是对“如果不注意:”的东西感到好奇,还没有看到使用过。 "if note:" 是否测试它是否为真?
  • 很高兴您开始学习 Python,它是一门非常好的语言,可以帮助您掌握一般的编程概念。除了官方文档之外,您可能还知道Dive into Python,这是对该语言的极好介绍。最后一条建议:暂时不要使用 Python 3,版本 2 很好。祝你好运!
【解决方案2】:

您需要某种数据结构来存储房间的状态。 dict 可能是个不错的选择

例如:

rooms = {}
rooms['first_room'] = {'note': False}

然后你可以像这样检查笔记的状态

if rooms['first_room']['note']:
    ...

并像这样更新它

rooms['first_room']['note'] = True

在您学习的这个阶段,不要害怕将rooms 设为全局变量

【讨论】:

  • 今天只是在看 dict 概念,仍然有点朦胧,在另一个站点上学习,我只有大约 5/12 的方式。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2016-08-25
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-28
  • 1970-01-01
相关资源
最近更新 更多