Discuss / Python / 为什么看大家的答案都感觉不对,是我理解的有问题吗,求指教

为什么看大家的答案都感觉不对,是我理解的有问题吗,求指教

Topic source

看大家基本都是有这句

def trim(s): if s[:1]==' ': return trim(s[1:]) 可是当字符串前后都有空格(如:' hello ')时,返回的不就是 hello '了吗,不就不满足题目要求的前后都去除空格吗

返回'hello ',后面还有空格,不是吗

这里是递归调用的, return 的不是 'hello ' 而是 trim('hello ') ,会进入trim函数的另外判断

  1. 当s = ' hello '时 也就是 trim(' hello ') 字符串前面有空格那么符合s[:1]==' ' 进入程序第一步if判定结果 renturn trim(s[1:]) 即s[1:] == 'hello '去掉了字符串前面的空格,就是return trim('hello ') 这里就调用了函数trim(s) s变成了's[1:] 把trim('hello ')代入函数 trim(s)中
  2. 当s = 'hello '时 也就是trim('hello ')由于字符串前面的空格已经没了那么 进入程序第二部elif s[-1:]==' '字符串后面有空格符合条件 判定结果 return trim(s[:-1]) s[:-1] == 'hello'去掉了后面的空格 就是renturn trim('hello') 到这再次调用函数trim(s) 这时s='hello'了代入函数trim(s)中结 符合else中的结果最后结果就是return s

  • 1

Reply