簡體   English   中英

為什么我的 function 一直返回 None 而不是 True 或 False?

[英]How come my function keeps returning None instead of True or False?

我目前正在我的 Python class 中進行遞歸,我遇到了這個問題。 這兩個函數通過檢查字符串 a 是否是字符串 b 的 substring 來協同工作。 如果字符串 a 是字符串 b 的 substring,則程序應該返回 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

如果沒有明確的,您的 function is_subsequence將返回None 這是所有函數的默認 Python 屬性。 將 function 更改為:

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

您的contains_string返回 True 或 False,但調用contains_string的主要 function 僅調用 function 但不返回任何內容。 因此,您得到 None 作為結果。

Python 函數有一個默認的返回值,如果沒有給出返回表達式,則它是None ,或者只給出它自己的 return。


只需將語句更改為return contains_string(string_a, string_b, pos_a, pos_b)正常工作。 您最終的主要 function 應該是 -

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

您的主要 function (is_subsequence) 沒有返回任何值,因此您在執行程序時得到 None 。 它需要返回從 contains_string 方法獲得的值。 你的 is_subsequence 方法應該是這樣的:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM