首页 > 解决方案 > 为什么我的函数总是返回 None 而不是 True 或 False?

问题描述

我目前正在我的 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

标签: pythonrecursionnonetype

解决方案


没有明确的,你的函数is_subsequence将返回None。这是所有函数的默认 Python 属性。将函数更改为:

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


推荐阅读