有没有办法检测用户上次在Python中输入的文本或程序?

时间:2013-05-27 15:47:13

标签: python python-2.7 detect

这可能是不可能的,但是(在计算机打印之后不设置变量)知道计算机是否已经打印了最后的东西,或者用户。 e.g。

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和其他东西都不起作用。感谢

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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")

这使用了in this question所讨论的“非本地”替换。

如果您可以使用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")