[英]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.