Discuss / Python / 递归简洁明了

递归简洁明了

Topic source

Zack_Chang

#1 Created at ... [Delete] [Delete and Lock User]

    if s == '':

        return s

    elif s[0] == ' ':

        return trim(s[1:])

    elif s[-1] == ' ':

        return trim(s[:-1])

    else:

        return s

辛巴飞天

#2 Created at ... [Delete] [Delete and Lock User]

好棒

666

哇咔咔9090

#4 Created at ... [Delete] [Delete and Lock User]

朋友这是我写的,但是有点问题,我没用递归,运行的时候其他没问题,就是遇到一连串空格那种会出现这个错误string index out of range,为什么用递归就不会这样呢?

def trim(s):

    if s == '':

        return s

    while s[0] == ' ':

        if s != ' ':

            s = s[1:] 

        elif s == ' ':

            s = ''

    while s[-1] == ' ':

        s = s[:-1]

    return s

cOnhthefroad

#5 Created at ... [Delete] [Delete and Lock User]

s变成''后你再调用s[0]就越界了 循环判断条件改为是否为空,然后在循环内检测到非空格字符直接bread就好了

def trim(s):

    if s == '':

        return s

    while s != '':

        if s[0] == ' ':

            s = s[1:] 

        elif s != ' ':

            break

    while s != '':

        if s[-1] == ' ':

            s = s[:-1] 

        elif s != ' ':

            break

    return s

Zick_zhao

#6 Created at ... [Delete] [Delete and Lock User]
i = 0for sub in s:    if sub != ' ':        s = s[i:]        j = 0        while s[len(s)-j-1:len(s)-j] == ' ':            j += 1        return s[:len(s) - j]    i += 1return ''

请问开头为啥要写 if s=‘’

不写的话,下面的  判断  s[0] 会越界


  • 1

Reply