python需要if功能的帮助

时间:2013-04-15 01:29:15

标签: python

我希望此函数能够测试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

2 个答案:

答案 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