为什么我在python中得到None而不是True/False?

Eer*_*ame 2 python

我正在尝试编写一个函数来检查字符串中的字符是否使用递归进行排序.这就是我想出的:

def is_sorted(x,i):
    if i >= len(x):
        return True
    elif x[i] <= x[i-1]:
        return False
    else:
        is_sorted(x,i+1)
Run Code Online (Sandbox Code Playgroud)

我用这些来测试我的功能:

x = "abcadef"
y = "aabcdef"
z = "abcdef"
print is_sorted(x, 1)
print is_sorted(y, 1)
print is_sorted(z, 1)
Run Code Online (Sandbox Code Playgroud)

我希望得到False,False,True,但我得到None,False,None.为什么?:(

kar*_*ikr 7

你没有在最后一个else条款中返回任何内容.因此结果.

def is_sorted(x,i):
    if i >= len(x):
        return True
    elif x[i] <= x[i-1]:
        return False
    else:
        return is_sorted(x,i+1)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> def is_sorted(x,i):
...     if i >= len(x):
...         return True
...     elif x[i] <= x[i-1]:
...         return False
...     else:
...         return is_sorted(x,i+1)
... 
>>> x = "abcadef"
>>> y = "aabcdef"
>>> z = "abcdef"
>>> print is_sorted(x, 1)
False
>>> print is_sorted(y, 1)
False
>>> print is_sorted(z, 1)
True
>>> 
Run Code Online (Sandbox Code Playgroud)