return 值不正确,未得到 'True' return、Python
Incorrect return value, not getting a 'True' return, Python
我期望 return 为 True,但得到的 return 为 None。
我在代码中放了一些打印语句来帮助调试。它显示 'print("Got True")' 语句 运行,所以我知道代码在 'return True' 之前的代码的右侧 b运行ch 中结束,但由于某种原因我得到了'None'。但是 'return False' 当我输入一个不是回文的词时效果很好。
感谢您的帮助。
def first(word):
return word[0]
def last(word):
return word[-1]
def middle(word):
return word[1:-1]
def is_palindrome(word):
print(word)
if len(word) <= 1:
print("Got True")
return True
else:
print(len(word))
if first(word) == last(word):
is_palindrome(middle(word))
else:
print("Got False")
return False
print(is_palindrome('allen'))
print("\n")
print(is_palindrome('redivider'))
输出:
allen
5
Got False
False
redivider
9
edivide
7
divid
5
ivi
3
v
Got True
None
即使在递归函数中,您也必须使用 return 语句来 return 一个值:
if first(word) == last(word):
return is_palindrome(middle(word))
您需要在函数的每个分支中 return,例如:
def is_palindrome(word):
print(word)
if len(word) <= 1:
print("Got True")
return True
else:
print(len(word))
if first(word) == last(word):
return is_palindrome(middle(word)) # **Added return**
else:
print("Got False")
return False
但是你可以简化结构,因为如果你return
那么你不需要else:
子句因为它无法到达,所以可以这样写:
def is_palindrome(word):
print(word)
if len(word) <= 1:
print("Got True")
return True
print(len(word))
if first(word) == last(word):
return is_palindrome(middle(word))
print("Got False")
return False
您应该 return 每个可能的条件分支中的结果。您可以直接使用 return 语句或在某些变量中捕获 is_palindrome 函数的结果,并且 return 如果它令人困惑。
我期望 return 为 True,但得到的 return 为 None。
我在代码中放了一些打印语句来帮助调试。它显示 'print("Got True")' 语句 运行,所以我知道代码在 'return True' 之前的代码的右侧 b运行ch 中结束,但由于某种原因我得到了'None'。但是 'return False' 当我输入一个不是回文的词时效果很好。
感谢您的帮助。
def first(word):
return word[0]
def last(word):
return word[-1]
def middle(word):
return word[1:-1]
def is_palindrome(word):
print(word)
if len(word) <= 1:
print("Got True")
return True
else:
print(len(word))
if first(word) == last(word):
is_palindrome(middle(word))
else:
print("Got False")
return False
print(is_palindrome('allen'))
print("\n")
print(is_palindrome('redivider'))
输出:
allen
5
Got False
False
redivider
9
edivide
7
divid
5
ivi
3
v
Got True
None
即使在递归函数中,您也必须使用 return 语句来 return 一个值:
if first(word) == last(word):
return is_palindrome(middle(word))
您需要在函数的每个分支中 return,例如:
def is_palindrome(word):
print(word)
if len(word) <= 1:
print("Got True")
return True
else:
print(len(word))
if first(word) == last(word):
return is_palindrome(middle(word)) # **Added return**
else:
print("Got False")
return False
但是你可以简化结构,因为如果你return
那么你不需要else:
子句因为它无法到达,所以可以这样写:
def is_palindrome(word):
print(word)
if len(word) <= 1:
print("Got True")
return True
print(len(word))
if first(word) == last(word):
return is_palindrome(middle(word))
print("Got False")
return False
您应该 return 每个可能的条件分支中的结果。您可以直接使用 return 语句或在某些变量中捕获 is_palindrome 函数的结果,并且 return 如果它令人困惑。