我希望此函数能够测试3个语句并返回相应的响应。这三个陈述是及其预期的回应
'' - 让响应“空格,
'你好' - 让回答“单词”,
'世界' - 回应“另一个字”左
问题是'世界'也在回应“单个单词”而不是“单个单词”。有没有办法让python检测到前一个响应是“单个单词”,所以如果在第一个单词之后输入另一个单词,它会给出“单个单词”的声明吗?
def return_statement(statement):
if statement == (''):
response = "blank space"
return response
if ' ' not in statement
response = "single word"
return response
if ' ' not in statement and response == "single word":
response = 'single word again'
return response
答案 0 :(得分:2)
在函数return_statement
中,response
是一个局部变量。这意味着在执行函数结束并返回后,response
不再存在 - 我们说它的范围就是它所处的函数。当你离开变量的范围时,它就会消失。
以下是您可以采取的一些方法:
1)让return_statement
的来电者保持response
从其返回,并且当它调用时,除了response
之外还传递statement
。这使得return_statement
的来电者负责。
2)使response
成为一个全局变量,因此其范围是不确定的。
3)使response
成为类的实例变量。只要您继续使用相同的类实例,其response
的值将因呼叫而持续存在。
答案 1 :(得分:0)
要存储先前响应的状态,可以向函数添加属性。我只是在不修改过多逻辑的情况下添加到您的函数中。
def return_statement(statement):
// Check if has attribute, otherwise init
if not hasattr(return_statement, "prev"):
return_statement.prev = ''
if statement == (''):
response = "blank space"
// Store answer before returning
return_statement.prev = response
return response
// Fix logic
if ' ' not in statement:
if "single word" in return_statement.prev:
response = "single word again"
else:
response = "single word"
// Store answer
return_statement.prev = response
return response