来自廖雪峰课程,问题“利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法”
正确代码:
def trim(s):
if s[:1] == " ":
s = s[1:]
return trim(s)
if s[-1:] == " ":
s = s[:-1]
return trim(s)
return s
print(trim(' AB '))
错误代码(只是少了两个return)
def trim(s):
if s[:1] == " ":
s = s[1:]
trim(s)
if s[-1:] == " ":
s = s[:-1]
trim(s)
return s
print(trim(' AB '))
正确代码中可以去除两端的空格,但错误代码不能正确去除
def trim(s):
if s[:1] == " ":
s = s[1:]#执行到这去掉了一个空格
a=trim(s)#这里没有了return虽然会执行,但只是一个过程,不会在该次返回
print(a)#可见a最后的结果去掉了所有空格,如果这里返回a就会得到正确结果
if s[-1:] == " ":
s = s[:-1]#如果后面有空格这里还会去掉一个
trim(s)
return s#到这里函数已经返回了只去掉了一个空格
print(len(trim(" abc")))#前面两个空格