str1 = raw_input("Enter a string -->")
print len(str1)
def removeSpace(str1):
str2=''
if str1[0] != ' ' and str1[-1] != ' ':
return str1
elif str1[0] == ' ':
if str1[-1] == ' ':
str2 = str1[1:-1]
return removeSpace(str2)
else:
str2 = str1[1:]
return removeSpace(str2)
elif str1[-1] == ' ':
str2 = str1[:-1]
return removeSpace(str2)
str3=removeSpace(str1)
print str3,len(str3)
首先说明,这是正确的代码,可以执行
其次说明遇到的问题
str1 = raw_input("Enter a string -->")
print len(str1)
def removeSpace(str1):
str2=''
if str1[0] != ' ' and str1[-1] != ' ':
return str1
elif str1[0] == ' ':
if str1[-1] == ' ':
str2 = str1[1:-1]
removeSpace(str2)
else:
str2 = str1[1:]
removeSpace(str2)
elif str1[-1] == ' ':
str2 = str1[:-1]
removeSpace(str2)
str3=removeSpace(str1)
print str3
这是最初错的代码,大家可以对比一下区别,在调用方法的时候缺少return
错误的代码最终返回的值为none
原因是:当递归函数有return时,在递归的地方也要return,不然永远返回的是None
return语句用于退出函数,向调用方返回一个表达式。return在不带参数的情况下(或者没有写return语句),默认返回None。None是一个特殊的值,它的数据类型是NoneType。NoneType是Python的特殊类型,它只有一个取值None。
它不支持任何运算也没有任何内建方法,和任何其他的数据类型比较是否相等时永远返回false,也可以将None赋值给任何变量。。。
当函数没有显式return,默认返回None值