Python 为什么我的函数总是返回None而不是True或False?
我目前正在Python类中处理递归,遇到了这个问题。这两个函数通过检查字符串a是否是字符串b的子字符串来协同工作。如果字符串a是字符串b的子字符串,则程序应返回True。如果不是,则返回False。但是,当我尝试执行程序时,返回的唯一值是None。我不知道该怎么办。谢谢大家!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
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)
,否则默认情况下它将返回无。