【问题标题】:How to use 3 predetermined words in user's input to print a predetermined response如何在用户输入中使用 3 个预先确定的单词来打印预先确定的响应
【发布时间】:2020-04-06 18:20:40
【问题描述】:

如果所有 3 个单词都是必需的,这将起作用,但它会打印:"X is a box" 当 'A','B','D' 是输入时。我希望 'A','B','D' 只打印:“X 是一个三角形”“X 是一个盒子” 只在 ' A''B''C' 是输入。

while True:
    begin = input('prompt  ')
    if 'A' and 'B' and 'C' in begin:
        answer = ('\n X is a box')
        print(answer)
        continue

    elif 'A' and 'C' and 'D' in begin:
        answer = ('\n X is a circle')
        print(answer)
        continue

    elif 'A' and 'B' and 'D' in begin:
        answer = ('\n X is a triangle')
        print(answer)
        continue

    elif '' in begin:
        print('not a shape')

这是我为初学者项目创建的游戏的简化版本。感谢观看。

【问题讨论】:

  • 还在摸索这个景象。为什么我的代码示例的前两行被转换为行文本?
  • 您要么需要正确缩进它,要么将它包含在适当的字符中。我已经建议修改它。
  • 感谢您让它看起来符合我的预期!你知道我怎样才能要求所有 3 个字母都返回答案而不是只返回 1 或 2 个吗?
  • 没有人知道这个问题的答案吗?
  • 再次感谢您修复我的代码示例。我敢肯定,这很有帮助..

标签: python loops input


【解决方案1】:

欢迎来到 S/O。请注意,in 只是检查变量begin 中是否有任何有问题的字符。要实现您的预​​期功能,请按如下方式进行更改

while True:
    begin = input('prompt  ')
    if "'A','B','C'" == begin:
        answer = ('\n X is a box')
        print(answer)
        continue

    elif "'A','C','D'" == begin:
        answer = ('\n X is a circle')
        print(answer)
        continue

    elif "'A','B','D'" == begin:
        answer = ('\n X is a triangle')
        print(answer)
        continue

    elif '' in begin:
        print('not a shape')

您的输入必须符合以下任何一项:

  1. 'A','B','C'

  2. 'A','C','D'

  3. 'A','B','D'

更新:

当前代码无法解决您的新问题。要过滤掉不必要的单词,请按照以下方法。

split 方法将有助于忽略不必要的单词,请参阅here

while True:
    begin = input('prompt  ')
    beginList = begin.split()
    if 'A' in beginList and 'B' in beginList and 'C' in beginList:
        answer = ('\n X is a box')
        print(answer)
        continue

如您所见,如果您传入输入"A who B when XXX C",if 将执行并打印X is a box。将相同的逻辑应用于条件语句的其他部分,应该可以解决您的问题。

【讨论】:

  • 感谢您的帮助。现在,我们可以更进一步,让输入包含 A、B 和 D 之间的各种单词,这不会干扰功能吗?照原样,当除了 A、B 和 D 之外的任何内容添加到 A、B、D 输入时,它会跳过 A、B、D。
  • 您能否详细说明您的意思,以免我误解。理想情况下,您可以通过示例将其更新为问题。
  • 好的。所以这是一个神秘的游戏,用户的输入问题包含他们要问的角色(A),一些“何时、何地等”。词(B),以及对神秘“受害者、嫌疑人等”感兴趣的词(C)。我需要从输入问题中过滤掉这三个词,以将特定答案(角色的预录响应)返回给用户(侦探)。除了 A,B,D(character, 'who', 'motive') 之外的一个额外单词会导致它跳到开头的 elif '':
  • 没有人知道这个问题的答案吗?
  • 我非常非常感谢您的帮助。我花了几天时间试图弄清楚这一点。在你出现之前,我的初学者的动力真的很痛苦。如果我能以某种方式报答你就好了……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-05
  • 1970-01-01
  • 2019-04-16
  • 2015-08-19
  • 2019-10-19
  • 1970-01-01
  • 2012-03-15
相关资源
最近更新 更多