1

这可能是不可能的,但是(在计算机打印某些内容后不设置变量)知道计算机是否最后打印了某些内容,或者用户。例如

answer = raw_input("Say something.")
if "ok" in answer.lower():
    print "Yay!"
if "poo" in answer.lower():
    print "That's very childish"
if (computer hasn't printed anything already):
    print "I'm not very talkative."

我有很多 if 分支来处理用户输入,但是大量的 elifs 和 else 将不起作用。谢谢

4

2 回答 2

0

正如您已经提到的,您可以只设置一个变量,但这看起来不太好。

或者,您可以收集您的输出:

answer = raw_input("Say something.")
output = []
if "ok" in answer.lower():
    output.append("Yay!")
if "poo" in answer.lower():
    output.append("That's very childish")
if not output:
    output.append("I'm not very talkative.")
for o in output:
  print o

免责声明:我不做太多 Python 编码,所以我不知道这是否足够 Pythonic。

于 2013-05-27T16:05:02.313 回答
0

您还定义了一个内部函数来处理变量的打印和设置:

def handler(answer):
  handler.responded = False
  def respond(output):
    handler.responded = True
    print output
  if "ok" in answer:
    respond("Yay!")
  if not handler.responded:
    respond("I'm not very talkative")

这使用了此问题中讨论的“非本地”替换。

如果您可以使用 Python 3,则使用以下代码可能会更好一些nonlocal

def handler(answer):
  responded = False
  def respond(output):
    nonlocal responded
    responded = True
    print(output)
  if "ok" in answer:
    respond("Yay!")
  if not responded:
    respond("I'm not very talkative")
于 2013-05-27T16:34:01.727 回答