这可能是不可能的,但是(在计算机打印之后不设置变量)知道计算机是否已经打印了最后的东西,或者用户。 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和其他东西都不起作用。感谢
答案 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")