递归循环遍历文本

时间:2015-09-25 07:22:18

标签: python recursion

我需要创建一个函数,它接受随机字符的文本字符串,将小写字母放在一起,将大写字母放在一起,然后抛弃其余的字符。我已经对此做了一个迭代解决方案,这个可行,但显然它不是递归的 - 我必须使其递归

check_lower / check_upper是检查msg中字符串的一部分是否包含较低字符或较高字符的函数

def split_recursive(msg, low_msg='', up_msg=''):
    if not msg:
        return (low_msg, up_msg)
    if check_lower(msg[0]):
        low_msg += msg[0]
    if check_upper(msg[0]):
        up_msg += msg[0]
    return split_recursive(msg[1:], low_msg, up_msg)

要查看的示例字符串是

test = 'Jj9312L*xzc-,zt13_312GjASk3'

所以最后你会跑

>>> split_recursive(test)
('jxzcztjk', 'JLGAS')

1 个答案:

答案 0 :(得分:1)

对于递归,请考虑基本情况:

def split_recursive(msg, lower, upper):
    if msg == '':
        return lower, upper

然后向上构建:

def split_recursive(msg, lower, upper):
    if msg == '':
        return lower, upper
    else:
        if msg[0].isupper():
            return split_recursive(msg[1:], lower, upper + msg[0])
        elif msg[0].islower():
            return split_recursive(msg[1:], lower + msg[0], upper)
        else:
            return split_recursive(msg[1:], lower, upper)