Python 为什么我的函数总是返回None而不是True或False?

Python 为什么我的函数总是返回None而不是True或False?,python,recursion,nonetype,Python,Recursion,Nonetype,我目前正在Python类中处理递归,遇到了这个问题。这两个函数通过检查字符串a是否是字符串b的子字符串来协同工作。如果字符串a是字符串b的子字符串,则程序应返回True。如果不是,则返回False。但是,当我尝试执行程序时,返回的唯一值是None。我不知道该怎么办。谢谢大家! def is_subsequence(string_a, string_b): pos_a = 0 pos_b = 0 contains_string(string_a, string_b, pos

我目前正在Python类中处理递归,遇到了这个问题。这两个函数通过检查字符串a是否是字符串b的子字符串来协同工作。如果字符串a是字符串b的子字符串,则程序应返回True。如果不是,则返回False。但是,当我尝试执行程序时,返回的唯一值是None。我不知道该怎么办。谢谢大家!

def is_subsequence(string_a, string_b):
    pos_a = 0
    pos_b = 0
    contains_string(string_a, string_b, pos_a, pos_b)

def contains_string(string_a, string_b, pos_a, pos_b):
    if(pos_a == len(string_a) - 1):
        return True
    if(pos_b == len(string_b) - 1):
        return False
    if(string_a[pos_a] != string_b[pos_b]):
        pos_b = pos_b + 1
        return contains_string(string_a, string_b, pos_a, pos_b)
    if(string_a[pos_a] == string_b[pos_b]):
        pos_a = pos_a + 1
        pos_b = pos_b + 1
        return contains_string(string_a, string_b, pos_a, pos_b)
    else:
        return False

您的
contains_string
正在返回True或False,但调用
contains_string
的主函数只调用该函数,但不返回任何内容。因此,你没有得到任何结果

Python函数有一个默认返回值,如果没有给出返回表达式,或者只单独给出了返回,则返回值为
None


只需将语句更改为
return contains_string(string_a,string_b,pos_a,pos_b)
,即可正常工作。您的最后一个主要功能应该是-

def is_subsequence(string_a, string_b):
    pos_a = 0
    pos_b = 0
    return contains_string(string_a, string_b, pos_a, pos_b)

如果没有显式,函数
是子序列
将返回
。这是所有函数的默认Python属性。将功能更改为:

def是子序列(字符串a、字符串b):
位置a=0
位置b=0
返回包含字符串(字符串a、字符串b、位置a、位置b)
您的主函数(is_subsequence)没有返回任何值,因此您在执行程序时没有得到任何值。它需要返回从contains_string方法获得的值。 您的is_子序列方法应如下所示:

def is_subsequence(string_a, string_b):
    pos_a = 0
    pos_b = 0
    return contains_string(string_a, string_b, pos_a, pos_b)

您希望在第一个函数中
返回包含字符串(字符串a、字符串b、位置a、位置b)
,否则默认情况下它将返回
无。